Priority/Unique/Unique0の動作確認 SystemVerilog

はじめに

Priority, Unique, Unique0というものがあると聞いて、動作確認してみました。

使い方

if/caseの前に付けることが可能です。

priority if (<条件1>)
  <式1>
else if (<条件2>)
  <式2>
else if (<条件3>)
  <式3>

各キーワードは以下の意味を持ちます。

Priority

どの条件にもヒットしないときエラーを出す。

logic [2:0] sel;    
always_ff @(posedge clk) begin
    priority if (sel[0]) // NG:000,100
        -> e;
    else if(sel[1])
        -> e;
end
Unique

どの条件にもヒットしないときと、複数の条件にヒットしたときにエラーを出す。

logic [2:0] sel;   
always_ff @(posedge clk) begin
    unique if (sel[0]) // NG:000,011,100,111
        -> e;
    else if(sel[1])
        -> e;
end
Unique0

複数の条件にヒットしたときにエラーを出す。

logic [2:0] sel;
always_ff @(posedge clk) begin
    unique0 if (sel[0]) // NG:011,111
        -> e;
    else if(sel[1])
        -> e;
end

まとめ

Priority, Unique, Unique0の動作を確認しました。

コメント

タイトルとURLをコピーしました