From a strict LRM perspective as both ‘ap2’ and ‘ap3’ would never match, shouldn’t they be considered as degenerate sequences ?
i.e ideally both ‘ap2’ and ‘ap3’ should give a compilation error
As you have stated in the paper :
Vendors’ approach to handling degeneracy depends on the specific tools and versions. Certain tools will flatly reject the compilation when faced with degeneracy, whereas others might issue a warning or choose to entirely overlook the issue.
I observe that tools have different behavior for ‘ap2’ and ‘ap3’, hence wanted to confirm with you
From a human perspective it’s clear that ‘ap2’ would never match( due to unequal length of the sequences ) but it seems that tools instead of throwing a compilation error, throw an assertion failure once LHS sequence (sig[*4]) ends ( for scenario where ‘sig’ is high throughout simulation )
In reply to Have_A_Doubt:
e on what you say.
Per my last version with added sequence rule
There are legitimate cases where specifying a property using a macro or a generate parameter can render a property degenerate (and thus useless) for some configurations while remaining meaningful for others. In practical applications, the generation of degenerate and illegal sequences can be subtle for the user, influenced by factors like configuration options or generate loop statements.
It would be inconvenient to force tool customers to change the code.
I am not a tool vendor, but my guess is that each vendor took the approach that they felt was best for their customers.
Ben
IMHO that’s an incorrect argument - tools do flatten the generate/expand macros, etc. and hence statically can spot degenerate sequences. Do you have specific examples of such?