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