If unbounded delay range is used in an assertion property, it will be checking till the end of simulation and it will not give a fail status at the end of test.
For example,
property p1;
@(posedge clk)
|-> ##[1:$] ;
endproperty
In the above example, if consequent doesn’t occur throughout the simulation, this assertion won’t give a FAIL.
Is there any way to get a fail status from this assertion before the simulation ends?
Note: Number of cycles the test runs may be varying.
Additional information: My TB has an ‘event’ that triggers just before some cycles the test ends.
I had a solution of asserting a flag at the start and deasserting after the consequent occurs; and at the ‘event’ checking for the flag through one more assertion, but this will increase the code as i have to write similar checks for all the flags in many assertions.
Qualify as strong sequences that have range delays or consecutive repetition operators (e.g., [*, [->, [= , and are consequents in an assertion. This is important when it is necessary to qualify an assertion as a failure if the consequent never terminates at the end of simulation. Example:
In Questa, vsim has a switch named “-onfinish”. Specifying “-onfinish stop” on the vsim command line customizes the kernel shutdown behavior at the end of simulation when $finish() is exersized in the model (e.g., initial #4000 $finish();). Valid modes for " onfinish" include ask, stop, exit, final (Default: ask).
I believe that it is supported, as the concept of “strong” was in the original 1800’2005.
I know that the major 3 vendors (Mentor, Cadence, Synopsys) do support it.
Ben