LRM 16.12.11 Always property mentions
A verification statement that is not placed inside an initial procedure
specifies that an evaluation attempt of its top-level property shall
begin at each occurrence of its leading clocking event.
This tells us that there is only 1 attempt ( i.e the 1st attempt ) for concurrent assertion embedded in an initial block.
An exception to this rule is always( sequence ) as the same LRM section further states
In the following two examples, there is a one-to-one correspondence between the
evaluation attempts of p specified by the implicit always from the verification
statement implicit_always and the evaluation attempts of p specified by the
explicit always operator in explicit_always:
Implicit form: implicit_always: assert property(p);
Explicit form: initial explicit_always: assert property(always p);
This explicitly states that the number of evaluation attempts are same in both cases ( due to always )
I modified the embedded concurrent assertion to
initial
assert property(@(posedge clk) always((1,$display("Attempt starts at time:%0t",$time)) ##0 a ##1 b[->1]) ) $display("T:%0t Pass",$time);
else $display("T:%0t Fails",$time);
With Dave’ stimulus I observe output as ( across 2 EDA tools ) ::
Attempt starts at time:5
Attempt starts at time:15
Attempt starts at time:25
Attempt starts at time:35
Attempt starts at time:45
T:45 Fails
We observe an attempt on each clocking event, till the 1st error occurs.
There are no further attempts
With my stimulus I observe output as
Attempt starts at time:5
T:5 Fails
As the very 1st attempt fails there are no further attempts
@Dave, as my understanding there is a dedicated Mantis group to report issues in the LRM.
Similar to this forum, can anyone register and raise a ticket over there ?