[Verilog] $dist_uniform

先日「[SystemVerilog][DPI-C] 一様乱数生成を試す。」を書いたら、
Twitterで $dist_uniform があることを教えて頂きました。


っということで、試してみました。

  • LRM(SystemVerilogより参照)
  • $dist_uniform ( seed , start , end )

  • コード

  • module test();
    
      integer seed   = 10 ;
      integer temp_a = 0 ;
      integer temp_b = 0 ;
    
      initial begin
        repeat(10) begin
          temp_a = $random % 5;
          temp_b = $dist_uniform(seed, -4, 4);
          $display("--- temp_a = %2d, temp_b = %2d ---", temp_a, temp_b);
        end
        $finish(2);
      end
    
    endmodule
  • 実行結果

  • # --- temp_a =  3, temp_b = -4 ---
    # --- temp_a = -4, temp_b = -4 ---
    # --- temp_a = -4, temp_b =  1 ---
    # --- temp_a = -4, temp_b =  4 ---
    # --- temp_a =  2, temp_b = -1 ---
    # --- temp_a =  2, temp_b =  2 ---
    # --- temp_a = -1, temp_b =  3 ---
    # --- temp_a = -4, temp_b = -2 ---
    # --- temp_a =  1, temp_b =  0 ---
    # --- temp_a =  4, temp_b =  4 ---
    


ちなみに、seed引数は inout型らしいので直接値を記述することは禁止っぽいです。
更に、ModelSim-ASEでシミュレーション出来て椅子から転げ落ちています。

関連記事

コメントの投稿

非公開コメント

プロフィール

Kocha

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

カレンダー
05 | 2017/06 | 07
- - - - 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 -
カテゴリ
OVP (4)
最新記事
最新コメント
アーカイブ
リンク
Twitter
アクセス人数