何回かに分けて、UVM 1.0の例題(examplesディレクトリにあるもの)を解説していきます。
今回から5回にわたって、examples/simple/hello_worldの以下のファイルをみていきます。
・トップテストベンチのモジュール(hello_world.sv) ・プロデューサとコンシューマ間のパケットクラス(packet.sv) ・プロデューサクラス(producer.sv) ・コンシューマクラス(consumer.sv) ・トップのクラス(top.sv)
トップテストベンチは、以下に示すような hello_world.sv の hello_world モジュールになります。
本当に必要な部分だけを下記に示しました。
本当に必要な部分だけを下記に示しました。
`include "uvm_macros.svh" # おまじないとして、UVMのマクロをインクルードする module hello_world; import uvm_pkg::*; # UVMのパッケージを読み込む `include "packet.sv" # クラス定義は、読み込む `include "producer.sv" `include "consumer.sv" `include "top.sv" top mytop; # topクラスのインスタンス(top.svで定義する) initial begin mytop = new("top"); # mytopインスタンスを生成する run_test(); # このrun_testタスクを実行すると、テストが開始される end endmodule
トップテストベンチのポイント ・`include "uvm_macros.svh" は、マクロ定義(`uvm_xxx)を使うときに必要 (この例では、hello_world.svではマクロを使っていないが、`includeしているクラス内で使っている) ・import uvm_pkg::*; は、UVMのパッケージは import で取り込む ・module あるいは、program 内にインスタンスを置く(top mytop) ・initial の中の最後に run_test() を呼ぶ
検証、Verification、SystemVerilog、UVM、Unified Verification Methodology