From: Shalom.Bresticker@motorola.com
Date: Thu May 01 2003 - 03:20:01 PDT
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.