Language Change Specification for VHDL-2008 Entity Classes and Attribute Specifications

LCS Number: LCS-2016-I04
Version: 1 {8-Mar-2017}
Date: 8-Mar-2017
Status: Voting
Author: Jim Lewis
Email: Main.JimLewis
Source Doc: Enhanced Generics In Attribute Specs
Summary: VHDL-2008 Entity Classes and Attribute Specifications

Voting Results: Cast your votes here

Yes:

  1. Jim Lewis - 2017-03-08 ver 1
  2. Patrick Lehmann - 2017-03-14 ver 1
  3. Steve Grout - 2017-03-14 ver 1
  4. Thomas Preusser - 2017-03-15 ver 1
  5. Rob Gaddi - 2017-03-16 ver 1

No:

Abstain:

  1. Farrell Ostler - 2017-03-21

Revision Notes

Style Notes

Changes are shown in red font. Deletions are crossed out. Editing notes in green font.

Analysis / Reviewing Notes

The proposal identifies potential issuees in clause 6.7 attribute declarations and 7.2 attribute specifications.

Edits to 6.7 are below to address any issues of confusion.

The issues identified for 7.2 request clairification that:

  • If a name in an entity name list denotes a procedure instance, its entity class is procedure. A signature within the entity designator should match the parameter profile of the associated uninstantiated procedure.
  • If a name in an entity name list denotes an interface procedure, its entity class is procedure. A signature within the entity designator should match the parameter profile of the designator associated with the interface procedure's declaration.
  • If a name in an entity name list denotes a function instance, its entity class is function. A signature within the entity designator should match the parameter and return profile of the associated uninstantiated function.
  • If a name in an entity name list denotes an interface function, its entity class is function. A signature within the entity designator should match the parameter and return profile of the designator associated with the interface function's declaration.
  • If a name in an entity name list denotes a package instance or interface package, its entity class is package.

I think the LRM already supports all of the items above that are part of 7.2.

1) First lets consider the entity class. In VHDL-2008 a procedure can be a simple procedure, uninstantiated procedure, generic-mapped procedure, instantiated procedure, and interface procedure declaration. Since the word procedure does not specifically refer to any of these it can only refer to all of them, and hence, the entity class procedure already includes all of them.

Going further, generic constants, ports and parameters are all interface objects. Each of these are a member of their designated and/or default entity class without additional text to clarify this.

Hence, all interface declarations belong to their corresponding class.

2) Next lets consider signatures. Subprogram instantiations already allow signatures for uninstantiated subprograms. WRT subprogram interface objects, all the types specified in the subprogram are visible either as a regular or a generic type and it is reasonable to expect that a signature as described in 4.5.3 on

Details of Language Change

6.7 Attribute declarations

[Edit 2nd to last paragraph before notes on page 92 ]

[Edit note. List of items is out of date and is clearly identified in attribute specifications where it belongs. My first edit thought replace the long list with "a named entity", however, that is already in the first sentence of this section. Hence, the sentence is redundant and difficult to maintain, so delete it.]

The identifier is said to be the designator of the attribute. An attribute may be associated with an entity declaration, an architecture, a configuration, a procedure, a function, a package, a type, a subtype, a constant, a signal, a variable, a component, a label, a literal, a unit, a group, or a file.

[Edit Move Note 1 to 3 on page 92 to Notes 1 to 3 of 7.2 page 97]

[Edit note. These notes are for attribute specifications.]

NOTE 1-A given named entity E will be decorated with the user-defined attribute A if and only if an attribute specification for the value of attribute A exists in the same declarative part as the declaration of E. In the absence of such a specification, an attribute name of the form E'A is illegal.

NOTE 2-A user-defined attribute is associated with the named entity denoted by the name specified in an attribute specification a declaration, not with the name itself. Hence, an attribute of an object can be referenced by using an alias for that object rather than the declared name of the object as the prefix of the attribute name, and the attribute referenced in such a way is the same attribute (and therefore has the same value) as the attribute referenced by using the declared name of the object as the prefix.

NOTE 3-A user-defined attribute of a port, signal, variable, or constant of some composite type is an attribute of the entire port, signal, variable, or constant, not of its elements. If it is necessary to associate an attribute with each element of some composite object, then the attribute itself can be declared to be of a composite type such that for each element of the object, there is a corresponding element of the attribute.

[Note: Note 4 was deleted by LCS_2016_014]

[Edit Notes of 7.2 page 97]

[Edit note. Adjust note numbering for the above notes being moved.]

NOTE 4 1



Comments

Topic revision: r9 - 2017-04-02 - 16:18:39 - 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