[SystemVerilog] $urandom

第28回 SystemVerilog読書会


であった $urandom 書いてみました。

  • $urandom 構文

function int unsigned $urandom [ (int seed ) ] ;

  • サンプルコード

  • module testbench;
    
      int seed;
      int unsigned _tmp, _urandom = 0 ;
    
      initial begin
        if ($value$plusargs("SEED=%d", seed)) begin
          _tmp = $urandom(seed); // srandom(seed)
        end;
        repeat(10) begin
          _urandom = $urandom;
          $display("--- urandom = %d", _urandom );
        end
        $finish(2);
      end
    
    endmodule
  • 実行結果(SEED=1)

  •  $> vsim +SEED=1 ...
    :
    # --- urandom =  632781593
    # --- urandom = 3841481153
    # --- urandom =  671009059
    # --- urandom = 3327871911
    # --- urandom = 1537251251
    # --- urandom =  161391220
    # --- urandom =  500256519
    # --- urandom = 2929076827
    # --- urandom = 4057854907
    # --- urandom = 2754393424
    
  • 実行結果(SEED=10)
  •  $> vsim +SEED=10 ...
    :
    # --- urandom = 3042147966
    # --- urandom = 2684996139
    # --- urandom = 1056631277
    # --- urandom = 3871097900
    # --- urandom =  478905383
    # --- urandom =  323464572
    # --- urandom = 2997469464
    # --- urandom = 3706100274
    # --- urandom =  684557269
    # --- urandom =  626009764
    


感想

そもそも $random すらあんまり使ったことなかったので、

      _urandom = $urandom(seed);

ってやると、同じ値しか生成されないことを知った。。。
srandom が使えればもっと、楽に書けたかも。

関連記事

コメントの投稿

非公開コメント

プロフィール

Kocha

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

カレンダー
10 | 2017/11 | 12
- - - 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
アクセス人数