0

現在のサイクルの信号 'a' が "0110" (バイナリ) に等しい場合、次のサイクルの信号 'b' は 31 より大きくない (0 と 31 の間である必要があります。その幅は 32) 誰も私がアサーションを書くのを手伝ってくれる?! 下手な英語ですみません。

4

1 に答える 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 に答える