Verification Engineerの戯言
(OVM 1.0/1.01版)
ovm_print_topology関数は、ovm_env.svhファイルの最後で定義されています。
(ovm_envクラスの関数ではなく、ただの関数としてつぎのように実装されています。
各オブジェクトの内容を表示します。
(ovm_envクラスの関数ではなく、ただの関数としてつぎのように実装されています。
function void ovm_print_topology (ovm_printer printer=null); ovm_report_info("OVMTOP", "OVM testbench topology:", 500); ovm_component::print_units(printer); endfunctionovm_print_topology関数は、OVMのオブジェクト階層(実際には、ovm_envクラスをトップとした階層)の
各オブジェクトの内容を表示します。
最初の行のovm_report_info関数を実行すると、つぎのようなメッセージが表示されます。
第2引数がその後に表示されます。
OVM_INFO @ 0: reporter [OVMTOP] OVM testbench topology:ovm_report_info関数の第1引数のOVMTOPが'['と']'の間に表示され、
第2引数がその後に表示されます。
次の行のovm_component::print_units(printer)でOVMのオブジェクト階層の
各オブジェクトの内容を表示します。
print_units関数は、ovm_componentクラスのクラス関数なのでこのような呼び方ができます。
(クラス関数とは、static functionになっている関数です)
各オブジェクトの内容を表示します。
print_units関数は、ovm_componentクラスのクラス関数なのでこのような呼び方ができます。
(クラス関数とは、static functionになっている関数です)
ovm_print_topology関数の使用例は、examples/configuration/automatedのtop.svです。
シミュレーションを実行すると、つぎのように各オブジェクトの内容を表示します。
シミュレーションを実行すると、つぎのように各オブジェクトの内容を表示します。
# OVM_INFO @ 0: reporter [OVMTOP] OVM testbench topology: # ---------------------------------------------------------------------- # Name Type Size Value # ---------------------------------------------------------------------- # urm_command_line_proces+ ovm_object - @{urm_command_line+ # ---------------------------------------------------------------------- # ---------------------------------------------------------------------- # Name Type Size Value # ---------------------------------------------------------------------- # topenv my_env - @{topenv} {ref to + # inst1 A - @{topenv.inst1} {r+ # u1 C - @{topenv.inst1.u1}+ # v integral 32 'h1e # s integral 32 'h10 # myaa aa(string,string) 3 - # [bar] string 3 bye # [foo] string 3 boo # [foobar] string 6 boobah # u2 C - @{topenv.inst1.u2}+ # v integral 32 'h5 # s integral 32 'h10 # myaa aa(string,string) 3 - # [bar] string 3 bye # [foo] string 2 hi # [foobar] string 5 howdy # debug integral 1 'h1 # inst2 B - @{topenv.inst2} {r+ # u1 C - @{topenv.inst2.u1}+ # v integral 32 'ha # s integral 32 'h0 # myaa aa(string,string) 3 - # [bar] string 3 bye # [foo] string 2 hi # [foobar] string 5 howdy # debug integral 1 'h1 # debug integral 1 'h0 # ----------------------------------------------------------------------
検証、Verification、SystemVerilog、OVM、Open Verification Methodology