The above appears as if rst should remain high throughout dout is stable.
Can someone please explain me with an easy example ?
(PS: I understand LHS of throughout has to be a boolean)
Throughout: The syntax for this sequence is:
expression_or_dist throughout sequence_expr
The throughout operator specifies that a signal (expression) must hold throughout a sequence.
( b throughout R ) // b is an expression, R is a sequence
// is equivalent to
( b [*0:$] intersect R )
So, according to this definition is the code given for the condition correct because for throughout the rhs can go low when lhs is high, so this would violate that dout=0 when rst is still high, right ?
rst throughout ((dout == 0)[*1:$]))
// same as
( rst[*0:$] intersect (dout == 0)[*1:$]))
// thus
rst 1 1 1 1 0 0 1
dout 0 1 1 x x x
// the sequence rst[*1] intersects dout==0[*1]
// the consequent is a match.
the consequent is same as
rst[*1] intersect dout==0[*1] or
rst[*2] intersect dout==0[*2] or
..
rst[*n] intersect dout==0[*n]
// If any thread is a match, as a consequent, the assertion is a pass (and the property is true)