Vengineerの妄想

人生を妄想しています。

VMM 1.1:vmm_optsクラスの例題

Verification Engineerの戯言

vmm_optsクラスの例題は、examples/std_lib/record_replayディレクトリです。
Makefile./simvコマンドの引数として、次のように+オプションを指定しています。
    normal:
	    ./simv +vmm_opts+NUM_TRANS=3+NUM_CHANS=1 +vmm_MODE=NORMAL \
		    -l simv_tr=3_ch=1.log

    record:
	    ./simv +vmm_opts+NUM_TRANS=10+NUM_CHANS=2 +vmm_MODE=RECORD \
		    -l simv_tr=10_ch=2_rec.log

    playback:
	    ./simv +vmm_opts+NUM_TRANS=10+NUM_CHANS=2 +vmm_MODE=PLAYBACK \
		    -l simv_tr=10_ch=2_pbk.log
+vmm_opts+NUM_TRANS=xx+NUM_CHANS=yy+vmm_MODEがオプションになっています。
これを使っているコード部は、tb_cfg.svファイルtb_cfgクラスnew関数です。
    function new();
        string md;
        md = vmm_opts::get_string("MODE", "NORMAL", "Specifies the mode");
        case (md)
            "NORMAL"   : mode = NORMAL;
            "RECORD"   : mode = RECORD;
            "PLAYBACK" : mode = PLAYBACK;
        endcase
        num_trans = vmm_opts::get_int("NUM_TRANS", num_trans, "Num Of transactions");
        num_chans = vmm_opts::get_int("NUM_CHANS", num_chans, "Num Of Driver channels");
    endfunction
+vmm_MODE部分は、
        md = vmm_opts::get_string("MODE", "NORMAL", "Specifies the mode");
になります。また、+vmm_opts+NUM_TRANS=10+NUM_CHANS=2部分は、
        num_trans = vmm_opts::get_int("NUM_TRANS", num_trans, "Num Of transactions");
        num_chans = vmm_opts::get_int("NUM_CHANS", num_chans, "Num Of Driver channels");
になります。

例題のように、+vmm_オプション=値だけでなく、+vmm_opt+オプション名=値でも指定できます。

検証、Verification、SystemVerilog、VMM、Verification Methodology Manual