01. function newの書き方

このツールを使うと、もう少し細かく説明が出てきます。

以下のパターンがあります。

  1. function new (string name, uvm_component parent);
    1. super.new(name,parent);
    2. endfunction
    3. → 対象:uvm_env, uvm_driver, uvm_monitor, uvm_sequencerなどの、uvm_componentベースで記述されたクラス
  2. function new (string name="xxx", uvm_component parent=null);
    1. super.new(name,parent);
    2. endfunction
    3. → 対象:uvm_test
  3. function new (string name="xxx");
    1. super.new(name);
    2. endfunction
    3. → 対象:uvm_sequence, uvm_object

理解の仕方:

  • 1番のケースは、どこかのクラスで、
    • aaa_inst = aaa::type_id::create("aaa_inst", this);
    • と書いているものです。createのarg0がname, arg1がparentです。
  • 2番のケースがuvm_testなのは、上記の type_id::createすることがないので、nameは決めておく必要があり、parentはいないからです。
  • 3番のケースは、uvm_componentベースで「ない」クラスが対象となります。

UVMクラスライブラリのHTMLヘルプより抜粋。