現在のサイクルの信号 'a' が "0110" (バイナリ) に等しい場合、次のサイクルの信号 'b' は 31 より大きくない (0 と 31 の間である必要があります。その幅は 32) 誰も私がアサーションを書くのを手伝ってくれる?! 下手な英語ですみません。
1 に答える
1
assert property ( @ (posedge clk ) (a == 32'b0110) |=> ( b > 32'd0 && b < 32'd32 ) );
assert - プロパティ ( assertion ) をアクションに設定します。プロパティはクロックに基づいている必要があります。デザインでレジスタをトリガーする適切なクロックを選択しa
ますb
。含意演算子|=>
は、プロパティが次のクロック サイクルで真でなければならないことを示します。この場合、ifa
が 6 の場合、次のサイクルb
は 0 から 32 の間でなければなりません)。
失敗した場合、同様のメッセージ (シミュレーターに基づく) が表示されます。
top.unnamed$$_0: started at ns failed at ns
Offending '((b > 0) && (b < 32))'
アサーションに関する基本的なチュートリアルを読むことができます
https://www.doulos.com/knowhow/sysverilog/tutorial/assertions/
于 2016-06-29T22:14:00.010 に答える