Tutorials

TEMPORAL OPERATORS 1

Not

The not temporal expression succeeds if the evaluation of the subexpression does not succeed during the sampling period. Thus not TE succeeds on every occurrence of the sampling event if TE does not succeed.

Fail

A fail succeeds whenever the temporal expression fails. If the temporal expression has multiple interpretations (for example, fail (TE1 or TE2)), the expression succeeds if and only if all the interpretations fail. The expression fail TE succeeds at the point where all possibilities to satisfy TE have been exhausted. Any TE can fail at most once per sampling event.

And

The temporal and succeeds when both temporal expressions start evaluating in the same sampling period, and succeed in the same sampling period.

Or

The or temporal expression succeeds when either temporal expression succeeds. An or operator creates a parallel evaluation for each of its subexpressions. It can create multiple successes for a single temporal expression evaluation.

{ Exp ; Exp }

The semicolon (;) sequence operator evaluates a series of temporal expressions over successive occurrences of a specified sampling event. Each temporal expression following a â~@~\;â~@~] starts evaluating in the sampling period following that in which the preceding temporal expression succeeded. The sequence succeeds whenever its final expression succeeds.

Eventually

Used to indicate that the temporal expression should succeed at some unspecified time. Typically, eventually is used in an expect struct member to specify that a temporal expression is expected to succeed sometime before the quit event occurs for the struct.

[ Exp ]

Repetition of a temporal expression is frequently used to describe cyclic or periodic temporal behavior. The [exp] fixed repeat operator specifies a fixed number of occurrences of the same temporal expression. If the numeric expression evaluates to zero, the temporal expression succeeds immediately.

[ Exp..Exp ]

The first match repeat operator is only valid in a temporal sequence {TE; TE; TE}. The first match repeat expression succeeds on the first success of the match-expression between the lower and upper bounds specified for the repeat-expression. First match repeat also enables specification of behavior over infinite sequences by allowing an infinite number of repetitions of the repeat-expression to occur before the match-expression succeeds.
Where @ev_a is an event occurrence, {[..]*TE1;@ev_a} is equivalent to:
{@ev_a} or {[1]*TE1; @ev_a} or {[2]*TE1; @ev_a} or {[3]*TE1; @ev_a}â~@¦

~[ Exp..Exp ]

You can use the true match repeat operator to specify a variable number of consecutive successes of a temporal expression.True match variable repeat succeeds every time the subexpression succeeds. This expression creates a number of parallel repeat evaluations within the range. True match repeat also enables specification of behavior over infinite sequences by repeating an infinite number of occurrences of a temporal expression. The expression ~[..]*TE is equivalent to:
[0] or [1]*TE or [2]*TE

Temporal Yield Operator

=>
The yield operator is used to assert that success of one temporal expression depends on the success of another temporal expression. The yield expression TE1 => TE2 is equivalent to (fail TE1) or {TE1 ; TE2}.The yield expression succeeds without evaluating the second expression if the first expression fails. If
the first expression succeeds, then the second expression must succeed in sequence. Yield is typically used in conjunction with the expect struct member to express temporal rules. The sampling event from the context applies to both sides of the yield operator expression. The entire expression is essentially a single temporal expression, so that (TE1 => TE2)@sampling_event is effectively (TE)@sampling_event where TE is the temporal expression made up of TE1 => TE2.

 << PREVIOUS PAGE TOP NEXT PAGE >>