メンバシップ演算子:inside

SystemVerilogから追加されたメンバシップ演算子「inside」。
こちらを参考に書いてみた。「メンバシップ演算子 inside(MoriLab)
 1|module testbench;
 2|  // class c_rand;
 3|  //   rand integer value;
 4|  // endclass
 5|  // c_rand test;
 6|
 7|  typedef enum
 8|  {
 9|    IDLE = 1, EXE = 2, STOP = 4, SLEEP = 8
10|  } def_t;
11|  def_t state;
12|
13|  initial begin
14|    //--- inside {value}
15|    for(int i=0; i<16; i++) begin
16|      if( i inside {0,3,8} ) begin
17|        $display("--- i = %d ---", i);
18|      end
19|    end
20|    //--- randmize
21|    // test = new();
22|    // if(test.randomize()) $display("--- rand value=%d", test.value);
23|    // else                 $display("--- Error Randmize ---");
24|    //--- enum
25|    state = EXE;
26|    if(!(state inside {IDLE, SLEEP})) 
27|      $display("--- Error:Not State= IDLE or SLEEP ---");
28|    state = IDLE;
29|    if(!(state inside {IDLE, SLEEP})) 
30|      $display("--- Error:Not State= IDLE or SLEEP ---");
31|
32|    $finish(1);
33|  end
34|
35|endmodule:testbench
シミュレーション結果はこちら。
sv_inside.png

ランダム生成はModelSim-ASE版では実行できないので、コメントにしてます。
で、UVMのライブラリを見ていると「inside」を使っている場面って
ランダム生成か、enumでの部分しかなかったという。。。

「?」使ったドントケア比較はマイナーなのかな?
関連記事

コメントの投稿

非公開コメント

プロフィール

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
アクセス人数