Vengineerの妄想(準備期間)

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

UVM 1.0 : examples/simple/tlm2/temporal_decoupling (その1)


今回から5回にわたって、examples/simple/temporal_decouplingの以下のファイルをみていきます。
この例題は、UVM 1.0に導入されたTLM 2.0の機能であるテンポラル・デカップリングの例題です。
   ・トップテストベンチのモジュール(tb_run.sv)
      ・トップのクラス(tb_env.sv)
      ・イニシエータクラス(initiator.sv)
   ・ターゲットクラス(target.sv)
   ・イニシエータとターゲット間のパケットクラス(apb_rw.sv)

トップテストベンチは、tb_run.svファイル内のtb_runで、次のようになっています。
  `include "apb_rw.sv"                 // パケットクラスをインクルード
  // apb_rw.svの中で、uvm_macros
  `include "initiator.sv"              // イニシエータクラスをインクルード
  `include "target.sv"                 // ターゲットクラスをインクルード

  `timescale 1ns / 1ns

  program tb_run;                      // program/endprogramを使っている

    import uvm_pkg::*;                 // UVMのパッケージを読み込む

    import init_pkg::*;                // イニシエータパッケージを読み込む
    import trgt_pkg::*;                // ターゲットパッケージを読み込む

  `include "tb_env.sv"                 // トップ階層クラスをインクルース

    initial begin

      static tb_env env = new("env");  // envインスタンスを生成する

     run_test();                       // テストを開始する
  
    end

  endprogram

examples/simple/block_simpleと同様に、ModelSim 6.6c Altera Editionでは、
    1)、program/endmoduleは使えないので、module/endmoduleに変更して確認しました。
    2)、staticは無くても動作する。
ということで、
  module tb_run;      
  
    initial begin
  
      tb_env env = new("env");  // envインスタンスを生成する  

      run_test();               // テストを開始する
    end

  endmodule
でも動きます。

検証、Verification、SystemVerilog、UVM、Unified Verification Methodology