examples/simple/trival/component.svは、次のようになっています。
package pkg; // package宣言 import uvm_pkg::*; // UVMパッケージを読み込む `include "uvm_macros.svh" // UVMマクロ定義をインクルード class my_component extends uvm_component; function new(string name, uvm_component parent); super.new(name, parent); endfunction // run_testタスクを実行すると呼ばれる task run_phase(uvm_phase phase); phase.raise_objection(this); // おまじないで囲う // INFOとして、メッセージを表示 `uvm_info("component", "hello out there!", UVM_MEDIUM) phase.drop_objection(this); // おまじないで囲う endtask endclass endpackage module test; // module/endmoduleではなく、program/endprogramにしてもOK // ただし、ModelSim Altera Editionではライセンス的にprogramは使えない import uvm_pkg::*; // UVMパッケージを読み込む import pkg::*; // pkgパッケージを読み込む // UVMマクロを使っていないので、'include "uvm_macros.svh" はない。 my_component t; initial begin t = new("Top", null); // トップ階層をインスタンス生成 run_test(); end endmodule
initial begin my_component t = new("Top", null); run_test(); endの方がパターンとしていいと思います。
検証、Verification、SystemVerilog、UVM、Unified Verification Methodology