Language Change Specification for Interface Construct and Port Mode Configurations Proposal
Primary LCS:
This LCS details the minimum support required for a mode view interface construct at the RTL.
Format Key
- LRM text is shown between single quotes '... P1076 LRM quoted text ...'
- Existing LRM text is shown in BLACK coloured font
- Additional LRM text is shown in RED coloured font
- Deleted LRM text is shown in
RED with strike-through
- In order to try and emphasize text in italic font:
- Italic font in existing LRM text is shown in GRAY italic font
- Italic font in new LRM text is shown in ORANGE italic font
- Italic font in deleted LRM text is shown in
ORANGE with strike-through
- Editing instructions (and informative annotations) are shown in GREEN coloured font
LCS Intent
Add mode view construct which will enable the individual mode control
of the elements of interface objects of a composite type.
Details of Language Change:
3.2.3 Entity declarative part
Edit 45a.1
entity_declarative_item ::=
[beginning items unchanged]
| type_declaration
| subtype_declaration
| mode_view_declaration
| constant_declaration
[remaining items unchanged]
3.3.2 Architecture declarative part
Edit 45a.2
block_declarative_item ::=
[beginning items unchanged]
| type_declaration
| subtype_declaration
| mode_view_declaration
| constant_declaration
[remaining items unchanged]
4.7 Package declarations
Edit 45a.3
package_declarative_item ::=
[beginning items unchanged]
| type_declaration
| subtype_declaration
| mode_view_declaration
| constant_declaration
[remaining items unchanged]
6.3 Subtype declarations
Edit 45a.4
[...]
A subtype indication defines a subtype of the base type of the type mark.
A subtype that has a resolution indication is called a resolved subtype.
A type or subtype that does not have a resolution indication is called an
unresolved type or unresolved subtype respectively.
A resolution indication is said to correspond to a subtype, and associates one or more resolution functions
with the subtype to which it corresponds or with subelement subtypes of the subtype to which it
corresponds.[...]
6.5.2 Interface object declarations
Edit 45a.5
[...]
interface_object_declaration ::=
interface_constant_declaration
| interface_signal_declaration
| interface_variable_declaration
| interface_file_declaration
interface_constant_declaration ::=
[ constant ] identifier_list : [ in ] subtype_indication [ := static_expression ]
interface_signal_declaration ::=
[ signal ] identifier_list : [ mode ] subtype_indication [ bus ] [ := static_expression ] signal_mode_indication
interface_variable_declaration ::=
[ variable ] identifier_list : [ mode ] subtype_indication [ := static_expression ]
interface_file_declaration ::=
file identifier_list : subtype_indication
mode_indication ::=
simple_mode_indication
| mode_view_indication
simple_mode_indication ::=
[ mode ] subtype_indication [ bus ] [ := static_expression ]
mode ::= in | out | inout | buffer | linkage
mode_view_indication ::=
record_mode_view_indication
| array_mode_view_indication
record_mode_view_indication ::=
view mode_view_name [ of unresolved_record_subtype_indication ]
array_mode_view_indication ::=
view ( mode_view_name ) of unresolved_array_subtype_indication
mode_view_declaration ::=
view identifier of unresolved_record_subtype_indication is
{ mode_view_element_definition }
end view [ mode_view_simple_name ] ;
mode_view_element_definition ::=
record_element_list : element_mode_indication ;
record_element_list ::=
record_element_simple_name { , record_element_simple_name }
element_mode_indication ::=
mode
| element_mode_view_indication
element_mode_view_indication ::=
element_record_mode_view_indication
| element_array_mode_view_indication
element_record_mode_view_indication ::=
view mode_view_name
element_array_mode_view_indication ::=
view ( mode_view_name )
Edit 45a.6
If no mode is explicitly given in an interface declaration other than an interface file declaration, mode in is assumed.
Edit 45a.7
[replacement]
For an interface constant declaration, if mode in is not explicitly given, mode in is assumed.
For an interface variable declaration, if no mode is explicitly given, mode in is assumed.
For an interface signal declaration, if an mode indication is a simple mode indication and no mode is explicitly given, mode in is assumed.
Edit 45a.8
[page 74; 1st paragraph; no edits]
For an interface constant declaration (other than a formal parameter of the predefined = or /= operator for an
access type) or an interface signal declaration, the subtype indication shall define a subtype that is neither a
file type, an access type, nor a protected type. Moreover, the subtype indication shall not denote a composite
type with a subelement that is of an access type.
Edit 45a.9
[2nd paragraph; no edits]
For an interface file declaration, it is an error if the subtype indication does not denote a subtype of a file
type.
Edit 45a.10
[3rd paragraph]
If the simple mode indication of an interface signal declaration
includes the reserved word bus, then the signal declared by that
interface declaration is a guarded signal of signal kind bus.
Edit 45a.11
[4rd paragraph with edits]
If an interface constant or variable declaration
or the simple mode indication of an interface signal declaration
contains a ":=" symbol followed by an expression, the expression is said
to be the default expression of the interface object.
The type of a default expression shall be that of the corresponding interface object.
It is an error if a default expression appears in an interface declaration
or a simple mode indication of an interface signal declaration and any of the following conditions hold:
- The mode is linkage.
- The interface object is a formal signal parameter.
- The interface object is a formal variable parameter of mode other than in.
- The subtype indication of the interface declaration denotes a protected type.
Edit 45a.12
[5th paragraph; no edits]
In an interface signal declaration appearing in a port list, the default expression defines the default value(s)
associated with the interface signal or its subelements. In the absence of a default expression, an implicit
default value is assumed for the signal or for each scalar subelement, as defined for signal declarations (see
6.4.2.3). The value, whether implicitly or explicitly provided, is used to determine the initial contents of
drivers, if any, of the interface signal as specified for signal declarations.
Edit 45a.13
[new paragraphs]
In an interface signal declaration, a mode view indication allows each
subelement of the composite to have a different interface mode.
For an interface signal declaration with a mode view indication there
is an equivalent interface signal declaration for each subelement
of the composite whose mode corresponds to the mode specified
in the mode view indication and whose type or subtype corresponds
to the type or subtype defined in the composite.
Edit 45a.14
For an array mode view indication or an element array mode view indication, the mode view applies to each element
of the type or subtype specified in the subtype indication.
Edit 45a.15
For a record mode view indication:
- If the optional subtype indication is not present, an implicit subtype indication is determined from the corresponding mode view declaration.
- If the optional subtype indication is present, it specifies the subtype of the interface signal declaration and it shall be compatible with the type or subtype in the corresponding mode view declaration.
Edit 45a.16
For an array mode view indication the type or subtype of the mode view shall be compatible with the
element type or subtype of the subtype indication.
Edit 45a.17
For an element mode view indication, the type or subtype is determined from the corresponding
record element.
For an element array mode view indication, the element type or subtype of each corresponding record element
shall be compatible with the type or subtype of the mode view.
For an element record mode view indication, the type or subtype of each corresponding record element
shall be compatible with the type or subtype of the mode view.
Edit 45a.18
A mode view declaration declares a mode view for a composite type or subtype.
A mode view specifies a mode for each subelement of a composite type or subtype.
Mode views may be used in an interface signal declaration or within another mode view declaration.
Edit 45a.19
In a mode view declaration, it is an error if either a resolution function
appears in the subtype indication or the subtype is a resolved subtype.
However, the elements of a composite may be resolved subtypes.
Edit 45a.20
The subtype indication of a mode view declaration shall denote an unresolved record type or subtype.
For each record element simple name of the type or subtype,
there shall be a record element simple name in the mode view
declaration with the same simple name.
Edit 45a.21
It is an error if the mode of an element mode indication is linkage.
[no edits]
In an interface signal declaration appearing in a port list, the default expression defines the default value(s)
associated with the interface signal or its subelements. In the absence of a default expression, an implicit
default value is assumed for the signal or for each scalar subelement, as defined for signal declarations (see
6.4.2.3). The value, whether implicitly or explicitly provided, is used to determine the initial contents of
drivers, if any, of the interface signal as specified for signal declarations.
Edit 45a.22
[Edit: 3rd paragraph on page 75]
An interface object has one of the following modes:
The mode or mode view of an interface signal has one of the following modes:
7.2 Attribute specification
Edit 45a.23
[Add view to the end of the production for entity_class on page 95 middle]
entity_class ::=
[all unspecified items are unchanged]
| sequence
| view
LRM 15.10 Reserved words
Edit 45a.24
[Add view to reserved word list on page 236 in alphabetical order]
view
Annex C Syntax summary
[Update the following production rules in alphabetical order.]
Edit 45a.25
array_mode_view_indication ::=
view ( mode_view_name ) [ of unresolved_array_subtype_indication ]
block_declarative_item ::=
[beginning items unchanged]
| type_declaration
| subtype_declaration
| mode_view_declaration
| constant_declaration
[remaining items unchanged]
element_mode_indication ::=
mode
| element_mode_view_indication
entity_declarative_item ::=
[beginning items unchanged]
| type_declaration
| subtype_declaration
| mode_view_declaration
| constant_declaration
[remaining items unchanged]
element_array_mode_view_indication ::=
view ( mode_view_name )
element_mode_indication ::=
mode
| element_mode_view_indication
element_mode_view_indication ::=
element_record_mode_view_indication
| element_array_mode_view_indication
element_record_mode_view_indication ::=
view mode_view_name
interface_signal_declaration ::=
[ signal ] identifier_list : [ mode ] subtype_indication [ bus ] [ := static_expression ] signal_mode_indication
mode_indication ::=
simple_mode_indication
| mode_view_indication
mode_view_declaration ::=
view identifier of unresolved_record_subtype_indication is
{ mode_view_element_definition }
end view [ mode_view_simple_name ] ;
mode_view_element_definition ::=
record_element_list : element_mode_indication ;
mode_view_indication ::=
record_mode_view_indication
| array_mode_view_indication
package_declarative_item ::=
[beginning items unchanged]
| type_declaration
| subtype_declaration
| mode_view_declaration
| constant_declaration
[remaining items unchanged]
record_element_list ::=
record_element_simple_name { , record_element_simple_name }
record_mode_view_indication ::=
view mode_view_name [ of unresolved_record_subtype_indication ]
simple_mode_indication ::=
[ mode ] subtype_indication [ bus ] [ := static_expression ]
Annex I Glossary
Edit 45a.26
[Add definition of mode view declaration in alphabetic order on page 572]
mode view declaration:
A declaration of the modes, of the individual elements, of a composite interface object.
A mode view is associated with a composite type or subtype.
There may be more than one mode view associated with a given composite type or subtype. (6.5.2, 6.5.6.3)'
Comments
This topic: P1076
> WebHome >
VHDL2017 > LCS2016_045a
Topic revision: r58 - 2017-07-23 - 18:48:08 -
JimLewis