I have the following assertion:
REQ_ACK_DELAY_0_TO_6: assert property (@(posedge _clk) (_req && (!disable_assert_check)) |-> ##[0:6] _ack);
_reqis a one-cycle pulse, asserted at time t1 (i.e., at the posedge of_clk)._ackcomes after 7 cycles (i.e., at t1 + 7) in simulation (VCS).- However, the assertion is not failing, even though it should —
_ackis clearly outside the expected[0:6]window.
Interestingly, the following assertion does fail in this case:
REQ_ACK_DELAY_0_TO_6: assert property (@(posedge _clk) (_req && (!disable_assert_check)) |-> ##[0:5] _ack);
Also, the version using $rose(_req) like this:
assert property (@(posedge _clk)
disable_assert_check == 0
&& $rose(_req)
|-> ##[1:6] _ack
);
correctly catches the violation and behaves as expected.