スポンサーサイト

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

SystemVerilog 2012 : unique constraint

Bringing in uniqueness constraint to SystemVerilog ? welcome P1800-2012 より、SystemVerilog 2012では constraintにも uniqueが設定出来るようになるみたいです。


これは便利かも!


unique とは?

case文を記述例としてあげています。
unique/priorityについては後日書きます。

  • サンプルコード
  •  1|module testbench;
     2|
     3|  logic [2:0] data;
     4|
     5|  initial begin
     6|    for(int i=0; i<8; i++) begin
     7|      #10 data = i;
     8|    end
     9|    #10;
    10|    $finish(1);
    11|  end
    12|
    13|  always_comb begin
    14|    unique case(data)
    15|      0   : $display("data = 0");
    16|      1   : $display("data = 1");
    17|      2   : $display("data = 2");
    18|      3   : $display("data = 3");
    19|      3,4 : $display("data = 3 or 4"); // ①値 3が重複
    20|      5   : $display("data = 5");
    21|      6   : $display("data = 6");
    22|      7   : $display("data = 7");
    23|      // default: $display("none"); // ②全条件が記載されていない。
    24|    endcase
    25|  end
    26|
    27|endmodule: testbench
  • 実行結果
  • # vsim -L work -do {run -all; quit} -c testbench 
    # Loading sv_std.std
    # Loading work.testbench
    # run -all 
    # ** Warning: (vsim-8315) sample.sv(14): No condition is true in the unique/priority if/case statement.
    # data = 0
    # data = 1
    # data = 2
    # ** Warning: (vsim-8360) sample.sv(14): The if/case statement is not unique.
    # data = 3
    # data = 3 or 4
    # data = 5
    # data = 6
    # data = 7
    # ** Note: $finish    : sample.sv(10)
    

このように、

① 条件が重複していないこと
② すべての条件が記述されている

をチェックしてくれます。

関連記事

コメントの投稿

非公開コメント

プロフィール

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