Vengineerの妄想(準備期間)

人生は短いけど、長いです。人生を楽しみましょう!

VMM 1.1:vmm_testクラスの例題(その1)

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