変数の現在の値が「1」であるかどうかを確認したい場合、変数の前の値は「0」である必要があります。System Verilog アサーションで $past を使用しています。ここでは、cal_frame_mode=1 かどうかを確認しています。これは、前の値の cal_frame_mode=0 です。私のコードは以下です。ただし、アサーションの失敗が見られます。波形をチェックインすると、正しく動作しています。アサーションは、最初のチェックの 2 クロック後にフラグを立てます。1 クロック サイクルだけチェックした後、このアサーションを停止するにはどうすればよいですか?
property p_NOP_2_RX_CAL;
@(posedge clk)
(cal_frame_mode==3'b001) |-> ##2 $past(cal_frame_mode)==3'b000;
endproperty
assert_nop2cal : assert property(p_NOP_2_RX_CAL);