module

このサンプルでは、以下の例を示したいのだと思います。

  • objectionの使い方
  • set_config_xxx, get_config_xxx系の使い方
  • printerの使い方

それはさておき、このコードなのですが、謎なんです。

module top;
  import uvm_pkg::*;
  import user_pkg::*;
  myunit mu = new("mu", null);
  mydata bar = new;
  initial begin
    uvm_top.finish_on_completion = 0;
    set_config_int("mu.*", "data", 101);
    set_config_string("mu.*", "str", "hi");
    set_config_int("mu.l1", "data", 55);
    set_config_object("mu.*", "obj", bar);  // ここ
    mu.print();
    run_test();
    mu.print();
  end
endmodule

「ここ」の記述、set_config_object("mu.*", "obj", bar);は、

arg0が、サーチするインスタンス名

arg1が、その中にある"obj"

arg2が、そこにbarの値を書き込む

という意味だと思うのですが、arg0はいいとして、そのサーチ対象の中に "obj" はないんです。そして、試しにこの行をコメントアウトして実行しても、ログ上は変化がない。いったい何を示したかったのか… はたまたただの「残骸」なのか。

意味のない行だとしたら、そういうのをexamplesに載せてほしくないものです。

→ 「pkg」を動作させていたらわかりました。継承元のコードに obj があるもよう。でも、コメントアウトしてもログ上は変化がないので、単に「こうやってセットできますよ」と言いたかっただけなのかも。