ぱっちもんの→randomize_ptm()を作る。

そういえば”Verification Engineerの戯言氏”のblogにmodelsim ver6.4では動かない...
などと書かれていたような。確認すると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