スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

SystemVerilog:pre/post_randomize()

SystemVerilogのランダム生成には、以下の functionが存在します。

  • IEEE1800-2012引用:

18.6.2 Pre_randomize() and post_randomize()
Every class contains pre_andomize() and post_randomize() methods, which are automatically called by randomize() before and after computing new random values.

ということで、実験してみました。

  • サンプルコード
  •  1|class hoge;
     2|
     3|  rand int a,b;
     4|
     5|  function void pre_randomize();
     6|    $display("[PRE]  Randomize Data a=%0d, b=%0d", a, b);
     7|  endfunction
     8|
     9|  function void post_randomize();
    10|    $display("[POST] Randomize Data a=%0d, b=%0d", a, b);
    11|    a -= 'hFFFFFFF;
    12|  endfunction
    13|
    14|endclass
    15|
    16|module testbench ();
    17|
    18|  initial begin
    19|    hoge data = new;
    20|    repeat(4) begin
    21|      assert(data.randomize());
    22|      $display("[RAND] Randomize Data a=%0d, b=%0d", data.a, data.b);
    23|      $display("");
    24|    end
    25|  end
    26|
    27|endmodule: testbench
  • 実行結果
  •  #
     # [PRE]  Randomize Data a=0, b=0
     # [POST] Randomize Data a=-374178239, b=93512683
     # [RAND] Randomize Data a=-642613694, b=93512683
     #
     # [PRE]  Randomize Data a=-642613694, b=93512683
     # [POST] Randomize Data a=-1608943979, b=-991314362
     # [RAND] Randomize Data a=-1877379434, b=-991314362
     #
     # [PRE]  Randomize Data a=-1877379434, b=-991314362
     # [POST] Randomize Data a=1698915539, b=-2118036294
     # [RAND] Randomize Data a=1430480084, b=-2118036294
     #
     # [PRE]  Randomize Data a=1430480084, b=-2118036294
     # [POST] Randomize Data a=1011260526, b=1609748398
     # [RAND] Randomize Data a=742825071, b=1609748398
    

実行結果を見て頂ければわかると思いますが、
変数 aだけランダマイズ後に値引いてます。
これは色々応用出来ると思います。

関連記事

コメントの投稿

非公開コメント

プロフィール

Kocha

Author:Kocha
なんでもチャレンジ!(^o^)/
E-mail
github:Kocha
イベントカレンダー

カレンダー
07 | 2017/08 | 09
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -
カテゴリ
OVP (4)
最新記事
最新コメント
アーカイブ
リンク
Twitter
アクセス人数
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。