In reply to ben@SystemVerilog.us:
The followed-by operators #-# and #=# concatenate a sequence and a property.
I was trying to understand the meaning/interpretation of your above quote.
One application I could think of is that property is illegal in RHS of ‘##’ ( clock delay ) expression
property p1;
d ##1 e ;
endproperty
property prop;
@(posedge clk) a |=> (b ##1 c) ##0 p1 ; // .. ##0 p1 / .. ##1 p1 are both Illegal
endproperty
assert property( prop );
whereas if I were to write ::
property p1;
d ##1 e ;
endproperty
property prop;
@(posedge clk) a |=> (b ##1 c) #-# p1 ; // .. #-# p1 / .. #=# p1 are both legal
endproperty
assert property( prop );
So the clock delay ‘##’ property restriction can be bypassed using ‘followed_by’ property.
However for ##2/##3/## N property, I would need to split it to ##( N-1) 1 #=# property / ##N 1 #-# property
[Q1] Is there anything else might be missing out on (from your above quote) ?
LRM 16.12.9 :: A followed-by operator is especially convenient for specifying a cover property directive over a sequence followed by a property.
[Q2] Could you elaborate on this please ?