などと書かれていたような。確認するとQuestaの6.3xでOK、 6.4だめとの事。。Questaのことか~~。
とりあえず modelsim PE 6.4 → 6.3gに戻してみる。
早速
make[RET]
vlog はOKでした。~~らっき~~~ Warn が3出たが通った。
vsim 予定通り fatal ....
本日のタイトル ”ぱっちもんの→randomize_ptm()を作る。”
1.randomize() をvmm & cvc のソースより検索する。数カ所出てくる。
2.rand型の設定をcvcソースより検索する。counter_atomic_gen.sv, counter_xactn.sv の2ファイルにある。
3. ソースファイルのrandomize()をrandomize_ptm()に書き換える。
注)randomize_ptm()→名前は任意だ。_ptmは”ぱっちもん”を縮めた。
4. counter_atomic_gen.sv, counter_xactn.sv内にあるrand型設定の入っているclassへfunctionを追加
function int randomize_ptm() ;
....
return 1 ;
endfunction
注)呼び出し側で戻り値を期待しているのでfunctionにして return 1 を入れておく。
例を1個示しておく。要はrandomizeにして欲しい事をプログラムする。
counter_atomic_gen.svならこれ。
function int randomize_ptm() ;
logic [31:0] rand_val ;
begin : rand_loop
while (1) begin
rand_val = $random() ;
if*1
disable rand_loop ;
end
end : rand_loop
no_of_xactions = {28'h0000000, rand_val[7:4]} ;
return 1 ;
endfunction
class Test_cfg; を見ると制約で1~9間での乱数を生成している。
似たような物を作ればOK → if文で0, 10以上を捨てている。。。。
乱数列が歪むけど”お気楽に使おうよ”。。
5. modelsim PEはprogram文が使用できないのでmoduleに書き換える。
→counter_pgm.svの
program counter....
....
endprogram
→
module counter...
....
endmodule
ルールでprogram文を使用せよとあったけど。。お気楽に行こうよ
以上で波形が出るようになる。
”ぱっちもん”をnet検索すると、偽物、安物、粗悪物、盗品。。。
randomize_ptm()に全て当てはまる。汗。。
patchも掛けているから、これってカバレッジ100%?。。縁起いいね!
次からstep実行しながらvmmとは何かを見ようかな。
*1:rand_val[7:4] < 10) && (rand_val[7:4] > 0