Vengineerの妄想(準備期間)

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

VMM 1.1:vmm_testクラス

Verification Engineerの戯言

vmm_testクラスは、VMM 1.1で追加されました。
実は、このvmm_testクラスは、OVMのovm_testクラスと同様な機能を実現したものです。
ソースコードは、sv/std_lib/vmm_test.svsv/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