スポンサーサイト

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

SystemVerilog:unique, priority

SystemVerilog 2012:unique constraint でも紹介しましたが、
SystemVerilogでは if/caseに対して以下の制約が追加されています。

  • unique
  • unique0
  • priority


これらの予約語を使いことにおいて、シミュレータに検知されることができます。

  • 共通条件
    すべての条件が記述されている。

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|    priority casez(data)
    15|      3'b00? : $display("data 0 or 1");
    16|      3'b0?? : $display("data 2 or 3");
    17|      3'b1?? : $display("data 4 to 7");
    18|      default: $display("none");
    19|    endcase
    20|  end
    21|
    22|endmodule: testbench
  • 実行結果
  • # vsim -L work -do {run -all; quit} -c testbench 
    # Loading sv_std.std
    # Loading work.testbench
    # run -all 
    # none
    # data 0 or 1
    # data 0 or 1
    # data 2 or 3
    # data 2 or 3
    # data 4 to 7
    # data 4 to 7
    # data 4 to 7
    # data 4 to 7
    # ** Note: $finish    : sample.sv(10)
    

unique0

unique0 に関しては、ModelSim-ASEでは未サポートのため、
動作を確認が出来なかった。(一部の市販ツールも。。。)


規格では、こんな感じです。

bit [2:0] a;
unique case(a) // values 3,5,6,7 cause a violation report
  0,1: $display("0 or 1");
  2: $display("2");
  4: $display("4");
endcase

priority casez(a) // values 4,5,6,7 cause a violation report
  3’b00?: $display("0 or 1");
  3’b0??: $display("2 or 3");
endcase

unique0 case(a) // values 3,5,6,7 do not cause a violation report
  0,1: $display("0 or 1");
  2: $display("2");
  4: $display("4");
endcase
関連記事

コメントの投稿

非公開コメント

プロフィール

Kocha

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

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