UVM print_topology()でuvm_componentの階層を表示する

使い方

uvm_top.print_topology();

でuvm_componentの階層をログに出力します。

サンプルコード

top.sv
module top;
    `include "uvm_macros.svh"
    import uvm_pkg::*;

    class env extends uvm_env;
        `uvm_component_utils(env)
        function new(string name = "env", uvm_component parent = null);
            super.new(name, parent);
        endfunction
    endclass

    class test extends uvm_test;
        `uvm_component_utils(test)
        env e1;
        env e2;
        function new(string name = "test", uvm_component parent = null);
            super.new(name, parent);
        endfunction
        function void build_phase(uvm_phase phase);
            super.build_phase(phase);
            e1 = env::type_id::create("e1", this);
            e2 = env::type_id::create("e2", this);
        endfunction
        task run_phase(uvm_phase phase);
            super.run_phase(phase);
            uvm_top.print_topology();  // ここ。
        endtask
    endclass

    initial begin
        run_test("test");
    end
endmodule
出力結果
--------------------------------
Name          Type   Size  Value
--------------------------------
uvm_test_top  test   -     @334
  e1          env    -     @347
    a         agent  -     @365
  e2          env    -     @356
    a         agent  -     @375
--------------------------------

まとめ

uvm_componentの階層をログに表示させました。

コメント

タイトルとURLをコピーしました