Number | 63
|
Category | errata
|
Synopsis | Grammar ambiguity in delay_or_event_control
|
State | closed
|
Class | duplicate
|
Arrival-Date | Dec 03 2001
|
Originator | Daryl Stewart
|
Release | 2001b
|
Environment |
|
Description |
A grammatical ambiguity can arise in assignments which include the production delay_or_event_control expression since 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. |
Fix |
Fixed by issue 174. |
Audit-Trail |
|
Unformatted |
|
Hosted by Boyd Technology