0

SystemVerilog アサーションを勉強しています。Valid-ack仕様を確認するためにSVAを適用しました。スペックは以下の通りです。

valid が駆動される (0 から 1) 場合、ack が駆動される (1) まで、valid は 1 に等しい必要があります。ack がディアサートされると (1 から 0)、valid もディアサートされます (1 から 0)。

この仕様を確認するために、2 つのプロパティ (pr1 と pr2) を書きました。以下のリンクから SVA コードを確認できます。 https://www.edaplayground.com/x/5gHd

2 つのプロパティがまったく同じように機能することを期待していました。ただし、pr2 は期待どおりに機能しません (valid は 1 に等しいが ack は 50ns で 0 に等しいため、50ns でアサーションが失敗する可能性があると予想していました)。

波形: https ://www.edaplayground.com/w/x/u5

pr2 (50ns) で何が間違っていますか?

よろしくお願いします、

4

1 に答える 1

0

SystemVerilog LRM によると:

反復の最小最小数と最大最大数の範囲の反復は、連続反復演算子 [* min:max] で表すことができます。

$ pr2では、有限であるが無限の反復回数を表すmax に等しい反復演算子を使用しているため、シーケンスはアサートvalid[*1:$]されている限り持続し、ダウンした後にのみチェックされます。validackvalid

于 2016-09-10T12:08:24.300 に答える