ここでは、以下の例が言いたいのだと思います。
initial begin 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_config_settings("", null, 1); mu.print_config(1,0); uvm_default_printer = uvm_default_tree_printer; mu.print(); factory.print(1); run_test(); mu.print(); endmu.print_config_settings("", null, 1); の実行結果が長く見づらく、そしてDUPRECATEDって書いてあったので、代わりに mu.print_config(1,0); の実行結果に置き換えました。
# UVM_INFO @ 0: mu [CFGPRT] visible resources:# <none># UVM_INFO @ 0: mu.l1 [CFGPRT] visible resources:# str [mu.*] : (string) hi# -# str [mu.l1] : (string) hi# -# obj [mu.*] : (class uvm_pkg::uvm_config_object_wrapper) @mydata@2 1# -# obj [mu.*] : (class uvm_pkg::uvm_object) {} 482 1 492 @uvm_status_container@1# -# data [mu.l1] : (reg signed[4095:0]) 55# -# data [mu.*] : (reg signed[4095:0]) 101# -# da* [mu.*] : (reg signed[4095:0]) 256# -# UVM_INFO @ 0: mu.l2 [CFGPRT] visible resources:# str [mu.*] : (string) hi# -# obj [mu.*] : (class uvm_pkg::uvm_config_object_wrapper) @mydata@2 1# -# obj [mu.*] : (class uvm_pkg::uvm_object) {} 482 1 493 @uvm_status_container@1# -# data [mu.*] : (reg signed[4095:0]) 101# -# da* [mu.*] : (reg signed[4095:0]) 256# -mu.print();を実行すると、以下のログが出るのですが
# -------------------------------# Name Type Size Value# -------------------------------# mu myunit - @338# l1 lower - @348# data integral 32 'h30# str string 0 ""# l2 lower - @356# data integral 32 'h40# str string 0 ""# a array 5 -# [0] integral 32 'h0# [1] integral 32 'h1# [2] integral 32 'h4# [3] integral 32 'h9# [4] integral 32 'h10# -------------------------------その前に、uvm_default_printer = uvm_default_tree_printer; を実行しておくとこうなります。
# mu: (myunit@338) {# l1: (lower@348) {# data: 'h30# str: ""# }# l2: (lower@356) {# data: 'h40# str: ""# }# a: {# [0]: 'h0# [1]: 'h1# [2]: 'h4# [3]: 'h9# [4]: 'h10# }# }uvm_printerに興味がわいたので、調べてみました。セットできるものは
があり、初期値は uvm_default_table_printer だそうです。なお、line_printerの適用結果も載せようと思いましたが、このprinterは1行にメンバ値を出すものでした。見づらいので掲載は省きます。
なお、それぞれのprinterは細かい調整が可能で、それは以下のように記述すればいいようです。
変更可能なパラメータの種類は、uvmクラスライブラリに付属するHTML版のマニュアルをご覧ください。
factory.print(1);の実行結果は
#### Factory Configuration (*)## No instance or type overrides are registered with this factory## All types registered with the factory: 39 total# (types without type names will not be printed)## Type Name# ---------# lower# myobject# myunit# (*) Types with no associated type name will be printed as <unknown>でした。inst_overrideやtype_overrideの結果も出るよ、と書かれてますね。