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