I have the following assertion example I came across in a course that I am trying to understand:
int x; //local variable declared
`true, x=0 ##0 (!a[*0:$] ##1 a, x=x+data)[*4] ##1 b ##1 c && (data_out==x);
Below are my questions:
- Does `true mean true for the current cycle? If so what is true for the current cycle?
- Another question is how should the subexpression !a[*0:$] be understood? Does this mean whenever a becomes zero at any time till the end of the simulation? If so, how will the ! work?
- Is a[*0:$] acceptable because I have read that in the repetition operator with range [*m:n], n cannot be $. How should a[*0:$] be understood?
Any help is appreciated.
Thanks in advance.