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