Verification Engineerの戯言
vmm_testクラスは、VMM 1.1で追加されました。
実は、このvmm_testクラスは、OVMのovm_testクラスと同様な機能を実現したものです。
ソースコードは、sv/std_lib/vmm_test.svとsv/std_lib/vmm.svに実装されています。
sv/std_lib/vmm.svでは、vmm_testクラスを定義しています。
また、vmm_test_beginマクロとvmm_test_endマクロも定義しています。
実は、このvmm_testクラスは、OVMのovm_testクラスと同様な機能を実現したものです。
ソースコードは、sv/std_lib/vmm_test.svとsv/std_lib/vmm.svに実装されています。
sv/std_lib/vmm.svでは、vmm_testクラスを定義しています。
class vmm_test; local string name; local string doc; vmm_log log; extern function new(string name, string doc = ""); extern virtual task run(vmm_env env); extern virtual function string get_name(); extern virtual function string get_doc(); extern /*local*/ function void Xset_log_instanceX(string inst); endclass実際に使うのは、runタスクです。
また、vmm_test_beginマクロとvmm_test_endマクロも定義しています。
`define vmm_test_begin(testclassname, envclassname, doc) \ class testclassname extends vmm_test; \ envclassname env; \ function new(); \ super.new(`"testclassname`", doc); \ endfunction \ static testclassname testclassname``_inst = new(); \ task run(vmm_env env1); \ $cast(env, env1); \ begin `define vmm_test_end(testclassname) \ end \ endtask \ endclass
検証、Verification、SystemVerilog、VMM、Verification Methodology Manual