Re: [sv-ac] sequence vs. sequence expression


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