I’m quite confused about how the “range” is evaluated in assertion.
For example,
a ##[1:10] b ##1 c
Let’s say a becomes true, then b becomes true 3 clock cycles later. The range says that b must be true between 1 to 10 clock cycles. Since it became true 3 clock cycles later, does that mean that c must be true 7+1=8 clock cycles later? Or is it that after b becomes true, then the sequence will proceed immediately to ##1 c, without waiting for the remaining 7 clock cycles?
A sequence can match or mis-match. Whenever you’ve a range delay in a sequence, you have the possibility of multiple matches. Now it depends on your requirement - do you care about all matches or just the first one? If first one only (and ignore the rest), use first_match ().
In reply to Reuben:
Sequences either match or do not match - they do not pass or fail until they are asserted as a property. But you are correct in that one or more sub-sequences needs to match for the whole match.
In reply to Reuben:
Sequences either match or do not match - they do not pass or fail until they are asserted as a property. But you are correct in that one or more sub-sequences needs to match for the whole match.
Yeah, I should have used match/mismatch instead of pass/fail there. Anyway, I tried the assertion by writing a simple code, and it’s working just the way you mentioned it. As long as there is at least one sub-sequence that matches, the whole sequence will match as a whole.
Thanks for your help. I will now mark this as Solved!