Hi Forum,
Consider the following concurrent assertions
`define FAIL(x) `"T:%0t x Fails`"
a1:assert property( @(posedge clk) seq_expr1 |=> seq_expr2 )
else $display(`FAIL(a1),$time);
// Assume seq_expr3 is boolean_expr[->1]
a2:assert property( @(posedge clk) seq_expr1 |=> strong( seq_expr3 ) )
else $display(`FAIL(a2),$time);
Note that both concurrent assertions have the same antecedent.
Assume posedge of clock occurs at T0,T1,T2,…Tn and antecedent matches at T4
For a1 if the seq_expr2 doesn’t match ( assuming that there are sufficient clock ticks )
then we observe $display(“a1 Fails“)
i.e the user-defined message in fail action block associated with a1
If the consequent boolean_expr[->1] doesn’t match till end of simulation then ap2 fails
Does the user-defined message in fail action block $display(“a2 Fails“) execute in this case
or is a default $error ( possibly tool dependent ) thrown ?
I referred LRM section 16.12.2 Sequence property for this but I don’t see an explicit explanation for this case
Thanks