From: Daryl.Stewart@cl.cam.ac.uk
Date: Mon Dec 03 2001 - 07:25:49 PST
Precedence: bulk
<p>>Number: 63
>Category: errata
>Originator: Daryl Stewart
>Description:
A grammatical ambiguity can arise in assignments which include the production
delay_or_event_control expression
ince
delay_or_event_control ::=
delay_control
| event_control
| repeat ( expression ) event_control
delay_control ::=
# delay_value
| # ( mintypmax_expression )
delay_value ::=
unsigned_number
| parameter_identifier
| specparam_identifier
| mintypmax_expression
mintypmax_expression ::=
expression
| expression : expression : expression
Which allows, for example,
nonblocking_assignment ::= variable_lvalue <= [ delay_or_event_control ] expression
to produce
variable_lvalue <= # expression expression
EG
l <= # a | b | c;
may be parsed as equivalent to:
l <= #(a) ((| b) | c));
or:
l <= #(a | b) (| c);
A solution is to define
delay_control ::=
# unsigned_number
| # parameter_identifier
| # specparam_identifier
| # ( mintypmax_expression )
Which forces delays given as expressions to be parenthesised, as is common practice.
This archive was generated by hypermail 2.1.4
: Mon Jul 08 2002 - 12:54:48 PDT
and
sponsored by Boyd Technology, Inc.