Verification Engineerの戯言
vmm_optsクラスの例題は、examples/std_lib/record_replayディレクトリです。
Makefileの./simvコマンドの引数として、次のように+オプションを指定しています。
これを使っているコード部は、tb_cfg.svファイルのtb_cfgクラスのnew関数です。
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