Even though ‘c’ is never true, the assertion passes the first time it sees not(b) to be true. It does not check for (c) to be true after ##1 clock delay. ???
Thanks for any clarification you offer. I tried this both on VCS and Questa.
$rose(a) |=> not(b) ##1 (c);
// the not is a property operator
// the ## is a sequence operator
// it is illegal to have a property ##1 sequence
// the following is legal
$rose(a) |=> !b ##1 (c);
property_expr ::=
not property_expr
// with
not(b) ##1 (c)
// it is not really clear that because of the ()
// around the b, the "not" applies to only "b" or the sequence b ##q c
// one could argue that because the syntax of the "not" does not require ()
// It becomes
not ( b ##1 c )
As a good style, always surround the not full expression with ()
and avoid superfluous ()