Subject: Re: [sv-ac] sequence vs. sequence expression
From: Adam Krolnik (krolnik@lsil.com)
Date: Tue Jan 27 2004 - 07:26:51 PST
HI Bassam, John, Surrendra;
A few thoughts:
o Our use of the simple term 'boolean expression' with restrictions for assertion
use seems out of place. While 1364-2001 has not used boolean expression and
SystemVerilog 3.1a has sporadic use within the procedural statement sections it
seems that the term should be the general unrestricted version and a more complex
term should be sought for use in the assertion section. Maybe we just use the word
'operand' and not create a new term. Following 1364-2001, Section 4, they introduce
the operators (4.1) and then the operands (4.2).
o We use the term 'sequence' as both a component (module, property, function, etc.)
and to describe the "list of boolean expressions". We have been trying to avoid
overloading terms with two meanings so that we do not confuse the user.
I have often used the phrase "temporal expression" in referring to the expression
being evaluated by the assertion or cover constructs in my speech. Maybe this
could help disambiguate some cases.
o The sentence,
"In its simplest form, a sequence is a list of SystemVerilog boolean expressions
in a linear order of increasing time."
seems to leave out the possibility nonadvancing time (##0).
Using the idea of "temporal expression" above, the sentence could be written as:
"In its simplest form, a temporal expression is a series of expressions in a
range of time."
o The sentence,
"To determine a match of a sequence, the boolean expressions are evaluated at
each successive clock tick in an attempt to satisfy the sequence."
also does not incorporate the idea of " a ##0 b" embedded in a sequence.
To determine a match of a temporal expression, the expressions are evaluated
in combination with the operators. Any expression that does not match at the
time points allowed by the operators causes the expression to fail. When the
end of the temporal expression is reached, the expression is considered matched.
o Consider 1364-2001 expressions and their set of operators. There is a distinction
between a primary and an expression, but only in the BNF. All the discussions
use operator and operands. It may be simpler to follow this way of discussion
the operations. For example.
Old 17.7.4 "The binary operator "and" is used when both operand expressions are
expected to succeed match, but the end times of the operand
expressions can be different."
The two operands of "and" are sequence expressions. The requirement for
the success match of the "and" operation...
New 17.7.4 "The binary operator "and" is used when both operands are
expected to match, but the end times of the operands can be different."
The two operands of "and" are sequences. The requirement for the match
of the "and" operation ...
Does this help any?
Adam Krolnik
Verification Mgr.
LSI Logic Corp.
Plano TX. 75074
Co-author "Assertion Based Design"
This archive was generated by hypermail 2b28 : Tue Jan 27 2004 - 07:34:48 PST