Verification Engineerの戯言
vmm_testクラスの例題は、examples/std_lib/vmm_test/testsディレクトリの次のファイルです。
それは、次回に!
test_add.sv
test_sub.sv
test_mul.sv
test_ls.sv
test_rs.sv
たとえば、test_add.svでは、次のようになっています。 class add_test_data extends alu_data;
constraint cst_test {
kind == ADD;
}
endclass
`vmm_test_begin(test_add, alu_env, "Addition")
env.build();
begin
add_test_data tdata = new;
env.gen.randomized_obj = tdata;
end
env.run();
`vmm_test_end(test_add)
上記のコードは、マクロ展開されると次のようになります。 class test_add extends vmm_test;
alu_env env;
function new();
super.new("test_add", "Addition");
endfunction
static test_add test_add_inst = new();
task run(vmm_env env1);
$cast(env, env1);
begin
env.build();
begin
add_test_data tdata = new;
env.gen.randomized_obj = tdata;
end
env.run();
end
endtask
endclass
上記のようにrunタスクが再定義されます。では、このrunタスクはどこで呼ばれているのでしょうか?それは、次回に!
検証、Verification、SystemVerilog、VMM、Verification Methodology Manual