Vengineerの妄想(準備期間)

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

UVM 1.0 : examples/simple/trival


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