Vengineerの妄想(準備期間)

人生は短いけど、長いです。人生を楽しみましょう!

UVM 1.0 : examples/simple/hello_world (その1)


何回かに分けて、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