スポンサーサイト

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

[Tools][SystemVerilog] ModelSim-ASEで $randomなど使えた!!!

[Verilog] $dist_uniform


でも書いたのですが、ModelSim-ASE で $randomとかのシステムタスクが使えました。
(使えない:制限 と思い込んでいたので、衝撃でした)


で、SystemVerilogも合わせて使えるものを調べてみた。
一つ一つの内容について、今後のネタとして。


タスク名 ○ or ×
$random
$urandom
$urandom_range
$dist_uniform
$dist_normal
$dist_exponential
$dist_poisson
$dist_chi_square
$dist_t
$dist_erlang


  • サンプルコード

  • module test();
    
      integer seed = 1 ;
      integer mean = 100 ;
    
      int          _random           = 0 ;
      int unsigned _urandom          = 0 ;
      int unsigned _urandom_range    = 0 ;
      int          _dist_uniform     = 0 ;
      int          _dist_normal      = 0 ;
      int          _dist_exponential = 0 ;
      int          _dist_poisson     = 0 ;
      int          _dist_chi_square  = 0 ;
      int          _dist_t           = 0 ;
      int          _dist_erlang      = 0 ;
    
      initial begin
        repeat(2) begin
          _random           = $random;
          _urandom          = $urandom;
          _urandom_range    = $urandom_range(100, 10);
          _dist_uniform     = $dist_uniform(seed, 0, 10);
          _dist_normal      = $dist_normal(seed, 100, 5);
          _dist_exponential = $dist_exponential(seed, 100);
          _dist_poisson     = $dist_poisson(seed, 100);
          _dist_chi_square  = $dist_chi_square(seed, 200);
          _dist_t           = $dist_t(seed, 1000);
          _dist_erlang      = $dist_erlang(seed, 2, 200);
          show();
        end
        $finish(2);
      end
    
      function void show();
        $display("--------------------------------------------");
        $display("--- random           = %d", _random          );
        $display("--- urandom          = %d", _urandom         );
        $display("--- urandom_range    = %d", _urandom_range   );
        $display("--- dist_uniform     = %d", _dist_uniform    );
        $display("--- dist_normal      = %d", _dist_normal     );
        $display("--- dist_exponential = %d", _dist_exponential);
        $display("--- dist_poisson     = %d", _dist_poisson    );
        $display("--- dist_chi_square  = %d", _dist_chi_square );
        $display("--- dist_t           = %d", _dist_t          );
        $display("--- dist_erlang      = %d", _dist_erlang     );
      endfunction
    
    endmodule
  • 実行結果

  • # --------------------------------------------
    # --- random           =   303379748
    # --- urandom          = 3468265955
    # --- urandom_range    =         67
    # --- dist_uniform     =           0
    # --- dist_normal      =          98
    # --- dist_exponential =         171
    # --- dist_poisson     =          90
    # --- dist_chi_square  =         201
    # --- dist_t           =           0
    # --- dist_erlang      =         103
    # --------------------------------------------
    # --- random           = -1064739199
    # --- urandom          = 3836988758
    # --- urandom_range    =         50
    # --- dist_uniform     =           2
    # --- dist_normal      =         106
    # --- dist_exponential =           1
    # --- dist_poisson     =         105
    # --- dist_chi_square  =         182
    # --- dist_t           =           0
    # --- dist_erlang      =         163
    

これは、色々と出来るかも!!!

関連記事

コメントの投稿

非公開コメント

プロフィール

Kocha

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

カレンダー
06 | 2017/07 | 08
- - - - - - 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ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。