2016-09-07 10 views
0

私はSystemVerilogアサーションを研究しています。私はSVAを適用してvalid-ack仕様を確認しました。仕様は以下の通りである:有効な(リクエスト)確認のためのSystemVerilogアサーション?

有効が(0〜1)drivedされると、ACK(1)drivedされるまで、有効な1 に等しくなければなりません。 ackがアサート解除されると(1から0)、 の有効値もアサート解除されます(1から0)。

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

2つのプロパティが全く同じ働きをすると予想しました。しかし、pr2は期待どおりに動作しません(50nsでアサーションが失敗することが予想されますが、有効は1に等しいが、ackは50nsで0に等しいため)。

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

(50nsの時)PR2で間違っては何ですか? SystemVerilogのLRMによれば

よろしく、

+1

「pr1」は一目で正しいと思われます。 'pr2'の最初のポスト条件は、' ack'が何をしているかにかかわらず、 'valid'がアサートされている限り一致します。それはおそらくあなたが望むものではありません。 – Teajay

答えて

0

分最小と 連続反復演算子[*分で表すことができる反復の最大最大数の範囲の繰り返し: max]となる。

はPR2では、有限の略$に等しい最大で繰り返し演算子を使用していたが、validがアサートされるとackvalidがダウンした後にのみチェックされますよう、反復の無制限数はそれほどシーケンスvalid[*1:$]は限り続きます。

関連する問題