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 があるもよう。でも、コメントアウトしてもログ上は変化がないので、単に「こうやってセットできますよ」と言いたかっただけなのかも。