Language Change Specification for Conditional Expressions and/or Operators Proposal
Voting Results: Cast your votes here
Yes:
- Thomas Preusser - 2016-12-20
- Ryan Hinton - 2016-12-22
- Daniel Kho - 2017-1-19
- Lieven Lemiengre - 2017-01-27
- Yann Guidon - 2017-02-19
No:
- Farrell Ostler - 2017-1-31
- Peter Flake - 2017-02-17
- Jim Lewis - 2017-02-27 -- 36b rev 1
Abstain:
- Brent Hayhoe - 2017-02-16 - Abstain due to lack of personal time for review.
- Kevin Jennings - 2017-02-28 - Lack of time to review
- Rob Gaddi - 2017-03-02 - I won't block this, but I think it makes for some very difficult to follow code in the exact aspects that simulation won't catch.
Reviewing Notes
This is an
extension of
LCS036a that allows for conditional attribute specifications such as:
attribute ram_style of Regfile : signal is "distributed" when TOOL_NAME = "XYZ"; -- This attribute value is only effective for this particular tool
The explicit use of unaffected simplifies hierarchical decisions that do not naturally have the unaffected case at the end of the condition chain:
attribute ram_style of RegFile : signal is
unaffected when TOOL_TYPE /= "SYNTHESIS" else
"distributed" when TOOL_VENDOR = "XYZ" else
unaffected when DEVICE_FAMILY /= "ABX" else
"regs" when DEVICE = "DGH";
Details of Language Change
Modifications are shown in
red font.
Deletions are
striked out.
Changes by LCS036a in the cited contexts are shown in
blue.
LRM Section 7.2 Attribute Specification
An attribute specification associates a user-defined attribute with one or more named entities and defines the value of that attribute for those entities. The attribute specification is said to
decorate the named entity.
(Allow a conditional or unaffected expression.)
attribute_specification ::=
attribute attribute_designator of entity_specification is conditional_or_unaffected_expression ;
(Define semantics of expressions evaluating to unaffected in sixth paragraph from here.)
The expression specifies the value of this attribute for each of the named entities inheriting the attribute as a result of this attribute specification. The type of the expression in the attribute specification shall be the same as (or implicitly convertible to) the type mark in the corresponding attribute declaration.
If the expression evaluates to unaffected, the whole attribute specification shall have no effect whatsoever. If the entity name list denotes an entity declaration, architecture body, ...
Annex C - Syntax Summary
(Update productions and their references.)
attribute_specification ::=
attribute attribute_designator of entity_specification is conditional_or_unaffected_expression ; [§7.2]
Comments
Please remove the votes, because these don't correspond to version 1.
--
Patrick Lehmann - 2017-02-27
I have not introduced anything new. In fact, the changes proposed here have been around literally for many versions of the originating LCS 036a. I did remove all the votes that indicated doubts about this specific feature. All other voters have already approved the contents of this
true-subset proposal. So, why should they be removed?
Of course, everybody is welcome to reconsider. I have tried to be as transparent as possible by announcing the procedure on the reflector so as to give everybody a trigger to react.
--
Thomas Preusser - 2017-02-27