Language Change Specification for Conditional Expressions and/or Operators Proposal

LCS Number: LCS-2016-036b
Version: 1
Date: 27-Feb-2017
Status: Voting
Author: Thomas Preusser
Ryan Hinton
Email: Thomas Preusser
Ryan Hinton
Source Doc: ConditionalExpressions
Summary: Introduce first-class conditional expressions (extension)
Dependencies: LCS036a

Voting Results: Cast your votes here

Yes:

  1. Thomas Preusser - 2016-12-20
  2. Ryan Hinton - 2016-12-22
  3. Daniel Kho - 2017-1-19
  4. Lieven Lemiengre - 2017-01-27
  5. Yann Guidon - 2017-02-19

No:

  1. Farrell Ostler - 2017-1-31
  2. Peter Flake - 2017-02-17
  3. Jim Lewis - 2017-02-27 -- 36b rev 1

Abstain:

  1. Brent Hayhoe - 2017-02-16 - Abstain due to lack of personal time for review.
  2. Kevin Jennings - 2017-02-28 - Lack of time to review
  3. 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

Topic revision: r9 - 2017-04-02 - 16:09:37 - PatrickLehmann
 
Copyright © 2008-2024 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback