In reply to ben@SystemVerilog.us:
Ben ,
A final question.
For an intersect operator to pass,LHS sequence must be of the same length as the RHS sequence
Using equivalent ‘or’ sequences for LHS, I am trying to understand what causes LHS sequence to be termed as ‘it ends’ at t:125 ?
In the stimulus :
- !$rose(gnt) is true from t:35 to t:75, i.e
!$rose(gnt)[*5]
is a match - Next clock at time:85 $rose(gnt) is true i.e
!$rose(gnt)[*5] ##1 $rose(gnt)
is a match - !$rose(gnt) is true from t:95 to t:115, i.e
!$rose(gnt)[*5] ##1 $rose(gnt) ##1 !$rose(gnt)[*3]
is a match - At time:125, $rose(gnt) is true for 2nd time
// In the equivalent 'or' expressions for LHS sequence :
( !$rose(gnt)[*5] ##1 $rose(gnt) ##1 !$rose(gnt)[*0] ) or // 1st seq match but NO INTERSECT yet
( !$rose(gnt)[*5] ##1 $rose(gnt) ##1 !$rose(gnt)[*1] ) or // 2nd seq match but NO INTERSECT at time:95
( !$rose(gnt)[*5] ##1 $rose(gnt) ##1 !$rose(gnt)[*2] ) or // 3rd seq match but NO INTERSECT at time:105
( !$rose(gnt)[*5] ##1 $rose(gnt) ##1 !$rose(gnt)[*3] ) or // 4th seq match but NO INTERSECT at time:115
At time:125 when 2nd $rose(gnt) is true :
( !$rose(gnt)[*5] ##1 $rose(gnt) ##1 !$rose(gnt)[*4] ) or // 5th seq doesn't match at time:125
// Correspondingly all remaining sequences (6th to Nth) don't match due to 2nd $rose(gnt)
Due to 2nd $rose(gnt) at time:125, 5th to Nth sequences don’t match : !$rose(gnt)[*5] ##1 $rose(gnt) ##1 !$rose(gnt)[*4:$])
Essentially 1st to 4th sequences matched but there was No intersect, remaining 5th to Nth sequences don’t match due to 2nd $rose(gnt).
So how is it interpreted as LHS sequence ends at time:125 ?