TWiki
>
P1076 Web
>
VHDL2017
>
LCS2016_045a
(2017-07-23,
JimLewis
)
(raw view)
E
dit
A
ttach
<sticky><!-- * Local SB = <sticky><b> * Local BS = </b></sticky> --></sticky> ---+!! 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. | %SB%LCS Number:%BS% | LCS-2016-045a | | %SB%Version:%BS% | 6 | | %SB%Date:%BS% | 2017-Mar-30 | | %SB%Status:%BS% | Voting | | %SB%Author:%BS% | [[Main.JimLewis][Jim Lewis]], [[Main.PatrickLehmann][Patrick Lehmann]], [[Main.LievenLemiengre][Lieven Lemiengre]] | | %SB%Source Doc:%BS% | [[InterfaceConstructandPortModeConfigurations#Analysis][Interface Construct and Port Mode Configurations]] %BR% \ [[UCComplexRTLSignalCPUInterface][Use Case - Complex RTL Signal CPU Interface]] | | %SB%History Doc:%BS% | [[LCS2016_045a_History][History]] | | %SB%Summary:%BS% | Provide the independent interface mode control for the elements of composite type objects | | %SB%Related LCS:%BS% | [[TopLCS2016_045b][LCS-2016-045b]] %BR% \ [[LCS2016_045c][LCS-2016-045c]] | <noautolink> <sticky> ---++ Format Key * LRM text is shown between single quotes %BLACK%'... P1076 LRM quoted text ...'%ENDCOLOR% * Existing LRM text is shown in %BLACK%<b>BLACK</b> coloured font%ENDCOLOR% * Additional LRM text is shown in %RED%<b>RED</b> coloured font%ENDCOLOR% * Deleted LRM text is shown in %RED%<strike><b>RED</b> with strike-through</strike>%ENDCOLOR% * In order to try and emphasize text in italic font: * Italic font in existing LRM text is shown in %GRAY%<i><b>GRAY</b> italic font</i>%BLACK% * Italic font in new LRM text is shown in %ORANGE%<i><b>ORANGE</b> italic font</i>%ENDCOLOR% * Italic font in deleted LRM text is shown in %ORANGE%<strike><i><b>ORANGE</b> with strike-through</i></strike>%ENDCOLOR% * Editing instructions (and informative annotations) are shown in %GREEN%<b>GREEN</b> coloured font%ENDCOLOR% ---++ 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 <pre>%BLACK% entity_declarative_item ::= %GREEN%[beginning items unchanged]%ENDCOLOR% | type_declaration | subtype_declaration %RED% | mode_view_declaration%ENDCOLOR% | constant_declaration %GREEN%[remaining items unchanged]%ENDCOLOR% </pre> ---+++ 3.3.2 Architecture declarative part ---++++ Edit 45a.2 <pre>%BLACK% block_declarative_item ::= %GREEN%[beginning items unchanged]%ENDCOLOR% | type_declaration | subtype_declaration %RED% | mode_view_declaration%ENDCOLOR% | constant_declaration %GREEN%[remaining items unchanged]%ENDCOLOR% </pre> ---+++ 4.7 Package declarations ---++++ Edit 45a.3 <pre>%BLACK% package_declarative_item ::= %GREEN%[beginning items unchanged]%ENDCOLOR% | type_declaration | subtype_declaration %RED% | mode_view_declaration%ENDCOLOR% | constant_declaration %GREEN%[remaining items unchanged]%ENDCOLOR% </pre> ---+++ 6.3 Subtype declarations ---++++ Edit 45a.4 %GREEN%[...]%ENDCOLOR% A subtype indication defines a subtype of the base type of the type mark. %RED%A subtype that has a resolution indication is called a <i>resolved subtype</i>. A type or subtype that does not have a resolution indication is called an <i>unresolved type</i> or <i>unresolved subtype</i> respectively.%ENDCOLOR% 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.%GREEN%[...]%ENDCOLOR% ---+++ 6.5.2 Interface object declarations ---++++ Edit 45a.5 %GREEN%[...]%ENDCOLOR% <pre>%BLACK% interface_object_declaration ::= interface_constant_declaration | interface_signal_declaration | interface_variable_declaration | interface_file_declaration interface_constant_declaration ::= [ <b>constant</b> ] identifier_list : [ <b>in</b> ] subtype_indication [ := %GRAY%<i>static_</i>%ENDCOLOR%expression ] interface_signal_declaration ::= [ <b>signal</b> ] identifier_list : %RED%<strike>[ mode ] subtype_indication [ <b>bus</b> ] [ := %ORANGE%<i>static_</i>%ENDCOLOR%expression ]</strike> %ORANGE%<i>signal_</i>%ENDCOLOR%mode_indication%ENDCOLOR% interface_variable_declaration ::= [ <b>variable</b> ] identifier_list : [ mode ] subtype_indication [ := %GRAY%<i>static_</i>%ENDCOLOR%expression ] interface_file_declaration ::= <b>file</b> identifier_list : subtype_indication %RED%mode_indication ::= simple_mode_indication | mode_view_indication%ENDCOLOR% %RED%simple_mode_indication ::= [ mode ] subtype_indication [ <b>bus</b> ] [ := %ORANGE%<i>static_</i>%ENDCOLOR%expression ] mode ::= <b>in</b> | <b>out</b> | <b>inout</b> | <b>buffer</b> | <b>linkage</b> mode_view_indication ::= record_mode_view_indication | array_mode_view_indication record_mode_view_indication ::= <b>view</b> %ORANGE%<i>mode_view_</i>%ENDCOLOR%name [ <b>of</b> %ORANGE%<i>unresolved_record_</i>%ENDCOLOR%subtype_indication ] array_mode_view_indication ::= <b>view (</b> %ORANGE%<i>mode_view_</i>%ENDCOLOR%name <b>) of</b> %ORANGE%<i>unresolved_array_</i>%ENDCOLOR%subtype_indication mode_view_declaration ::= <b>view</b> identifier <b>of</b> %ORANGE%<i>unresolved_record_</i>%ENDCOLOR%subtype_indication <b>is</b> { mode_view_element_definition } <b>end</b> <b>view</b> [ %ORANGE%<i>mode_view_</i>%ENDCOLOR%simple_name ] ; mode_view_element_definition ::= record_element_list : element_mode_indication ; record_element_list ::= %ORANGE%<i>record_element_</i>%ENDCOLOR%simple_name { , %ORANGE%<i>record_element_</i>%ENDCOLOR%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 ::= <b>view</b> %ORANGE%<i>mode_view_</i>%ENDCOLOR%name element_array_mode_view_indication ::= <b>view (</b> %ORANGE%<i>mode_view_</i>%ENDCOLOR%name <b>)</b>%ENDCOLOR% </pre> ---++++ Edit 45a.6 %RED%<del>If no mode is explicitly given in an interface declaration other than an interface file declaration, mode in is assumed.</del>%ENDCOLOR% ---++++ Edit 45a.7 %GREEN%[replacement]%ENDCOLOR% %BR% %RED%For an interface constant declaration, if mode <b>in</b> is not explicitly given, mode <b>in</b> is assumed. For an interface variable declaration, if no mode is explicitly given, mode <b>in</b> is assumed. For an interface signal declaration, if an mode indication is a simple mode indication and no mode is explicitly given, mode <b>in</b> is assumed.%ENDCOLOR% ---++++ Edit 45a.8 %GREEN%[page 74; 1st paragraph; no edits]%ENDCOLOR% %BR% 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 %GREEN%[2nd paragraph; no edits]%ENDCOLOR% %BR% 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 %GREEN%[3rd paragraph]%ENDCOLOR% %BR% If %RED%the simple mode indication of%ENDCOLOR% 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 %GREEN%[4rd paragraph with edits]%ENDCOLOR% %BR% If an interface %RED%constant or variable%ENDCOLOR% declaration %RED%or the simple mode indication of an interface signal declaration%ENDCOLOR% 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 %RED%or a simple mode indication of an interface signal declaration%ENDCOLOR% and any of the following conditions hold:%BR% * icon:line_lr The mode is linkage.%BR% * icon:line_lr The interface object is a formal signal parameter.%BR% * icon:line_lr The interface object is a formal variable parameter of mode other than in.%BR% * icon:line_lr The subtype indication of the interface declaration denotes a protected type.%BR% ---++++ Edit 45a.12 %GREEN%[5th paragraph; no edits]%ENDCOLOR% %BR% 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 %GREEN%[new paragraphs]%ENDCOLOR% %BR% %RED%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.%ENDCOLOR% ---++++ Edit 45a.14 %RED%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.%ENDCOLOR% ---++++ Edit 45a.15 %RED%For a record mode view indication:%ENDCOLOR% * icon:line_lr %RED%If the optional subtype indication is not present, an implicit subtype indication is determined from the corresponding mode view declaration.%ENDCOLOR% * icon:line_lr %RED%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.%ENDCOLOR% ---++++ Edit 45a.16 %RED%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.%ENDCOLOR% ---++++ Edit 45a.17 %RED%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.%ENDCOLOR% ---++++ Edit 45a.18 %RED%A mode view declaration declares a <i>mode view</i> 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.%ENDCOLOR% ---++++ Edit 45a.19 %RED%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.%ENDCOLOR% ---++++ Edit 45a.20 %RED%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.%ENDCOLOR% ---++++ Edit 45a.21 %RED%It is an error if the mode of an element mode indication is linkage.%ENDCOLOR% %GREEN%[no edits]%ENDCOLOR% %BR% 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 %GREEN%[Edit: 3rd paragraph on page 75]%ENDCOLOR% %BR% %RED%<strike>An interface object has one of the following modes:</strike>%ENDCOLOR% %RED% The mode or mode view of an interface signal has one of the following modes:%ENDCOLOR% ---+++ 7.2 Attribute specification ---++++ Edit 45a.23 %GREEN%[Add view to the end of the production for entity_class on page 95 middle]%ENDCOLOR% <pre>%BLACK% entity_class ::= %GREEN%[all unspecified items are unchanged]%ENDCOLOR% | <b>sequence</b> %RED%| <b>view</b>%BLACK% </pre> ---+++ LRM 15.10 Reserved words ---++++ Edit 45a.24 %GREEN%[Add view to reserved word list on page 236 in alphabetical order]%ENDCOLOR% %RED%<b>view</b>%ENDCOLOR% ---+++ Annex C Syntax summary %GREEN%[Update the following production rules in alphabetical order.]%ENDCOLOR% ---++++ Edit 45a.25 <pre>%BLACK% %RED%array_mode_view_indication ::= <b>view (</b> %ORANGE%<i>mode_view_</i>%ENDCOLOR%name <b>)</b> [ <b>of</b> %ORANGE%<i>unresolved_array_</i>%ENDCOLOR%subtype_indication ]%ENDCOLOR% block_declarative_item ::= %GREEN%[beginning items unchanged]%ENDCOLOR% | type_declaration | subtype_declaration %RED% | mode_view_declaration%ENDCOLOR% | constant_declaration %GREEN%[remaining items unchanged]%ENDCOLOR% %RED%element_mode_indication ::= mode | <i>element</i>_mode_view_indication%ENDCOLOR% entity_declarative_item ::= %GREEN%[beginning items unchanged]%ENDCOLOR% | type_declaration | subtype_declaration %RED% | mode_view_declaration%ENDCOLOR% | constant_declaration %GREEN%[remaining items unchanged]%ENDCOLOR% %RED%element_array_mode_view_indication ::= <b>view (</b> %ORANGE%<i>mode_view_</i>%ENDCOLOR%name <b>)</b>%ENDCOLOR% %RED%element_mode_indication ::= mode | element_mode_view_indication%ENDCOLOR% %RED%element_mode_view_indication ::= element_record_mode_view_indication | element_array_mode_view_indication%ENDCOLOR% %RED%element_record_mode_view_indication ::= <b>view</b> %ORANGE%<i>mode_view_</i>%ENDCOLOR%name%ENDCOLOR% interface_signal_declaration ::= [ <b>signal</b> ] identifier_list : %RED%<strike>[ mode ] subtype_indication [ <b>bus</b> ] [ := %ORANGE%<i>static_</i>%ENDCOLOR%expression ]</strike> %ORANGE%<i>signal_</i>%ENDCOLOR%mode_indication%ENDCOLOR% %RED%mode_indication ::= simple_mode_indication | mode_view_indication%ENDCOLOR% %RED%mode_view_declaration ::= <b>view</b> identifier <b>of</b> %ORANGE%<i>unresolved_record_</i>%ENDCOLOR%subtype_indication <b>is</b> { mode_view_element_definition } <b>end</b> <b>view</b> [ %ORANGE%<i>mode_view_</i>%ENDCOLOR%simple_name ] ;%ENDCOLOR% %RED%mode_view_element_definition ::= record_element_list : element_mode_indication ;%ENDCOLOR% %RED%mode_view_indication ::= record_mode_view_indication | array_mode_view_indication%ENDCOLOR% package_declarative_item ::= %GREEN%[beginning items unchanged]%ENDCOLOR% | type_declaration | subtype_declaration %RED% | mode_view_declaration%ENDCOLOR% | constant_declaration %GREEN%[remaining items unchanged]%ENDCOLOR% %RED%record_element_list ::= %ORANGE%<i>record_element_</i>%ENDCOLOR%simple_name { , %ORANGE%<i>record_element_</i>%ENDCOLOR%simple_name }%ENDCOLOR% %RED%record_mode_view_indication ::= <b>view</b> %ORANGE%<i>mode_view_</i>%ENDCOLOR%name [ <b>of</b> %ORANGE%<i>unresolved_record_</i>%ENDCOLOR%subtype_indication ]%ENDCOLOR% %RED%simple_mode_indication ::= [ mode ] subtype_indication [ <b>bus</b> ] [ := %ORANGE%<i>static_</i>%ENDCOLOR%expression ]%ENDCOLOR% </pre> ---+++ Annex I Glossary ---++++ Edit 45a.26 %GREEN%[Add definition of mode view declaration in alphabetic order on page 572]%ENDCOLOR% %BR% %RED%<b></b>mode view declaration:</b> 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)%BLACK%' </sticky> <br /><br /> ---++ Comments %COMMENT% </noautolink>
E
dit
|
A
ttach
|
P
rint version
|
H
istory
: r58
<
r57
<
r56
<
r55
<
r54
|
B
acklinks
|
V
iew topic
|
Ra
w
edit
|
M
ore topic actions
Topic revision: r58 - 2017-07-23 - 18:48:08 -
JimLewis
P1076
Log In
or
Register
P1076 Web
Create New Topic
Index
Search
Changes
Notifications
RSS Feed
Statistics
Preferences
Webs
Main
P1076
Ballots
LCS2016_080
P10761
P1647
P16661
P1685
P1734
P1735
P1778
P1800
P1801
Sandbox
TWiki
VIP
VerilogAMS
Copyright © 2008-2025 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki?
Send feedback