はじめに
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の動作を確認しました。
コメント