既に宣言されているプロパティがすべてのクロック サイクルで false かどうかをアサートする方法はありますか?
例えば、
status[idx]
req[idx]
との両方が高い場合にのみ、高くする必要がありますenable[idx]
。
私が欲しいのは、上記のネガティブシナリオチェッカーです。つまり、または のいずれかがローstatus
の場合、 がハイになることはありません。req
enable
私は以下を試しましたが、vcsは以下のコンパイルエラーを出します
sequence seq_a (int idx);
!(req[idx] & enable[idx])
endsequence
sequence seq_b (int idx)
status[idx] == 1
endsequence
property ppty_ab (int idx)
disable iff (f_req[idx] & f_enable[idx])
seq_a(idx) |=> seq_b(idx)
endproperty
generate
for (idx=0; idx<5; idx++) begin
a_ab : assert property (@(posedge clk) (not ppty_ab(idx)))
else $display("ppty_ab [%0d] failed at %t",idx,$time)
end
endgenerate
エラー - [PIWDOAACS] 'disable iff' が誤って使用されました
「disable iff」を含むプロパティ インスタンスは、「assert」、「assume」、および「cover」ステートメントでのみ使用できます。プロパティ p_RiseIntDischeck は、このコンテキストではインスタンス化されない場合があります。
seq_a
すでに宣言されておりseq_b
、他のアサーションに使用されています。これらのシーケンスを再利用し、上記のケースのネガティブ シナリオ チェッカーを作成するための最良/推奨の方法は何ですか?