Re: errata/88: 9.7.2 should say that event_controls can be expressions

From: Shalom.Bresticker@motorola.com
Date: Thu May 01 2003 - 03:20:01 PDT

  • Next message: Shalom Bresticker: "Re: errata/338: syntax of edge sensitive module path descriptions"

    Precedence: bulk

    The following reply was made to PR errata/88; it has been noted by GNATS.

    From: Shalom.Bresticker@motorola.com
    To: etf-bugs@boyd.com
    Cc:
    Subject: Re: errata/88: 9.7.2 should say that event_controls can be expressions
    Date: Thu, 1 May 2003 13:09:58 +0300 (IDT)

    > 9.7.2 says an event control is a "value change on a net or
    > variable".
    >
    > It should add that an event control can also be an
    > expression. In that case, the execution is triggered by a
    > change in the value of the expression. However, if an
    > operand of the expression changes, but not the value of the
    > entire expression, then execution is not triggered.
     
     Does the LRM say EXPLICITLY anywhere that in any of the cases where it waits for
     a change in the value of an expression, then the expression is re-evaluated only
     when the value of one of the operands changes, but not if only the result value
     of a function changes?
     
     That is, in @(f(A)), the @ is triggered only if A changes.
     But if f(A) changes without a change in A, then nothing happens.
     
     For example, 6.1 "Continuous Assignments", says both,
     "This assignment shall occur whenever the value of the right-hand side changes."
     
     and in 6.1.2,
     "whenever an operand in the right-hand side expression changes value, the whole
     right-hand side shall be evaluated and if the new value is different from the
     previous value, then the new value shall be assigned to the left-hand side."
     
     That is liable to be misunderstood.
     I did not succeed in finding a clear statement that function values are not
     continuously re-evaluated, but only when an input argument changes value.
     
     What happens when an operand which is a net changes strength, but not value?
     
     The cases I thought of where all this is relevant are:
     
     - continuous assignment (regular, procedural, and force)
     - @()
     - wait statement
     - $monitor
     - port connections
     
     Are there others?
     



    This archive was generated by hypermail 2.1.4 : Thu May 01 2003 - 03:20:42 PDT and
    sponsored by Boyd Technology, Inc.