In reply to ben@SystemVerilog.us:
The difficulty you are having is that you are not expressing your requirements correctly.
Let me take a shot at it; you’ll then see that the assertions will easily be derived from that.
Upon a rose of go, data and valid must change at least once when go==1; it may change more than once.
Data is independent of valid; thus the activity of either are unrelated.
When go==0 … you have not yet defined this. For now, well ignore it.
The use of the within is a good choice, but you have to understand its equivalency:
2.4.5 Sequence containment (within) The sequence containment within specifies a sequence occurring within another sequence.
If we donot get anything that means data and valid is not toggling for not even once when go is high ,it should fail.
when go is 0 we should not check at all
The above one is working fines when there is one toggle or data or valid .
If there is not toggle it doesn’t stop.