TWiki
>
P1076 Web
>
Vhdl2019CollectedRequirements
>
TopLCS2016_070a
(2020-02-17,
JimLewis
)
(raw view)
E
dit
A
ttach
---+ Language Change Specification for Bidirectional Connections ---++ | <sticky><b>LCS Number:</b></sticky> | LCS-2016-070a | | <sticky><b>Version:</b> </sticky> | 1 | | <sticky><b>Date:</b> </sticky> | 26-Mar-2017 | | <sticky><b>Status:</b> </sticky> | Voting | | <sticky><b>Author:</b> </sticky> | Patrick Lehmann %BR% Martin Zabel | | <sticky><b>Email:</b> </sticky> | [[Main.PatrickLehmann]] %BR% [[Main.MartinZabel]] | | <sticky><b>Source Doc:</b></sticky> | [[BidirectionalConnections][Bidirectional Connections]] | | <sticky><b>Summary:</b> </sticky> | Adds signal map aspects to concurrent signal associations. | ---+++ Voting Results: Cast your votes here Yes: 1 %USERSIG{PatrickLehmann - 2017-03-26}% - ver 1 No: Abstain: 1 ---++ Style Notes <noautolink> <sticky> Changes are shown in %RED%red font%ENDCOLOR%.%BR% Deletions are %RED%<del>crossed out</del>%ENDCOLOR%.%BR% Restructuring is shown in crossed out %GRAY%<del>gray font%ENDCOLOR% somewhere else in %GRAY%gray font%ENDCOLOR%.%BR% Editing or reviewing notes in %GREEN%green font%ENDCOLOR%. ---++ Reviewing Notes *Version 1:* 26-Mar-2017 * Split of signal map aspect to LCS 070a to be delayed to VHDL-2020 * TODOs for VHDL-2020 * Split into two LCS / Proposals 1 signal map aspect in concurrent signal associations 2 signal map aspect in port maps (incomplete by now) * Support indices as a formal -> choices ---++ Details of Language Change ---+++ 6.5.7.1 General %GREEN%[in 6.5.7 Association lists]%ENDCOLOR% An association list, other than one appearing in an interface package generic map aspect (see 6.5.5), establishes correspondences between %BR% formal or local generic, port, or parameter names on the one hand and local or actual names, expressions, subtypes, subprograms, or packages %BR% on the other. %RED%Likewise, a signal association list establishes correspondences between formal or local signal names on the one hand and local or %BR% actual signal names, or signal maps on the other.%ENDCOLOR% <pre> association_list ::= association_element { <b>,</b> association_element } association_element ::= [ formal_part <b>=></b> ] actual_part formal_part ::= formal_designator | <i>function</i>_name <b>(</b> formal_designator <b>)</b> | type_mark <b>(</b> formal_designator <b>)</b> formal_designator ::= <i>generic</i>_name | <i>port</i>_name | <i>parameter</i>_name actual_part ::= actual_designator | <i>function</i>_name <b>(</b> actual_designator <b>)</b> | type_mark <b>(</b> actual_designator <b>)</b> actual_designator ::= [ <b>inertial</b> ] expression | <i>signal</i>_name %RED%| signal_map_aspect%ENDCOLOR% | <i>variable</i>_name | <i>file</i>_name | subtype_indication | <i>subprogram</i>_name | <i>instantiated_package</i>_name | <b>open</b> </pre> Each association element in an association list associates one actual designator with the corresponding interface element in the interface list %BR% of a subprogram declaration, component declaration, entity declaration, block statement, or package. %RED%Likewise, each signal association element %BR% in a signal association list associates one actual designator with the corresponding element in the list of a signal map or port map.%ENDCOLOR% The %BR% corresponding %RED%<del>interface</del>%ENDCOLOR% element is determined either by position or by name. An association element is said to be <i>named</i> if the formal designator appears explicitly; otherwise, it is said to be <i>positional</i>. For a positional%BR% association, an actual designator at a given position in an association list corresponds to the %RED%<del>interface</del>%ENDCOLOR% element at the same position in the %BR% %RED%<del>interface</del>%ENDCOLOR% list. %RED%Likewise, a signal association element is said to be <i>named</i> if the signal association formal designator appears explicitly; otherwise, %BR% it is said to be <i>positional</i>. For a positional association, a signal association actual designator at a given position in a signal association %BR% list corresponds to the composite element at the same position in the signal's type declaration.%ENDCOLOR% In the following paragraphs, the term <i>actual</i> refers to an actual designator %RED%or signal association actual designator%ENDCOLOR%, and the term %BR% <i>formal</i> refers to a formal designator %RED%or signal association formal designator%ENDCOLOR%. The formal part of a named association element may be in the form of a function call, where the single argument of the function is the formal %BR% designator itself, if and only if the formal is an %RED%<del>interface</del>%ENDCOLOR% object, the mode of the formal is <b>out</b>, <b>inout</b>, <b>buffer</b>, or <b>linkage</b>, and if the actual %BR% is not open. In this case, the function name shall denote a function whose single parameter is of the type of the formal and whose result is the %BR% type of the corresponding actual. Such a conversion function provides for type conversion in the event that data flows from the formal to the actual. Alternatively, the formal part of a named association element may be in the form of a type conversion, where the expression to be converted is %BR% the formal designator itself, if and only if the formal is an %RED%<del>interface</del>%ENDCOLOR% object, the mode of the formal is <b>out</b>, <b>inout</b>, <b>buffer</b>, or <b>linkage</b>, and if %BR% the actual is not open. In this case, the base type denoted by the type mark shall be the same as the base type of the corresponding actual. Such %BR% a type conversion provides for type conversion in the event that data flows from the formal to the actual. It is an error if the type of the %BR% formal is not closely related to the type of the actual. (See 9.3.6.) The actual part of a (named or positional) association element corresponding to a formal %RED%<del>interface</del>%ENDCOLOR% object may have the syntactic form of a function %BR% call. This form may be interpreted either as a function call whose parameter is the actual designator, or as an expression, in which case the entire %BR% expression is the actual designator. The actual part is interpreted as a function call whose parameter is the actual designator if and only if * icon:line_lr The corresponding function declaration has one parameter, * icon:line_lr The mode of the formal corresponding to the association element is <b>in</b>, <b>inout</b>, or <b>linkage</b> and the class of the formal is not constant, * icon:line_lr The function parameter is a signal name or a variable name, and * icon:line_lr The function name is not preceded by the reserved word <b>inertial</b>. Otherwise, the entire expression given by the function call is interpreted as the actual designator. In the case of a function call whose parameter %BR% is the actual designator, the type of the function parameter shall be the type of the actual and the result type shall be the type of the corresponding %BR% formal. Such a function call is interpreted as application of a conversion function that provides for type conversion in the event that data flows %BR% from the actual to the formal. Alternatively, the actual part of a (named or positional) association element corresponding to a formal %RED%<del>interface</del>%ENDCOLOR% object may have the syntactic form %BR% of a type conversion. This form may be interpreted either as a type conversion whose operand is the actual designator, or as an expression, in which %BR% case the entire expression is the actual designator. The actual part is interpreted as a type conversion whose operand is the actual designator if %BR% and only if * icon:line_lr The mode of the formal corresponding to the association element is <b>in</b>, <b>inout</b>, or <b>linkage</b>, and the class of the formal is not constant, * icon:line_lr The operand is a signal name or a variable name, and * icon:line_lr The type mark is not preceded by the reserved word <b>inertial</b>. Otherwise, the entire expression given by the type conversion is interpreted as the actual designator. In the case of a type conversion whose %BR% operand is the actual designator, the base type denoted by the type mark shall be the same as the base type of the corresponding formal. Such a %BR% type conversion provides for type conversion in the event that data flows from the actual to the formal. It is an error if the type of the actual %BR% is not closely related to the type of the formal. The type of the actual (after applying the conversion function or type conversion, if present in the actual part) shall be the same as the type of %BR% the corresponding formal, if the mode of the formal is <b>in</b>, <b>inout</b>, or <b>linkage</b>, and if the actual is not open. Similarly, if the mode of the formal %BR% is <b>out</b>, <b>inout</b>, <b>buffer</b>, or <b>linkage</b>, and if the actual is not open, then the type of the formal (after applying the conversion function or type %BR% conversion, if present in the formal part) shall be the same as the corresponding actual. For the association of signals with corresponding formal ports, association of a formal of a given composite type with an actual of the same type %BR% is equivalent to the association of each scalar subelement of the formal with the matching subelement of the actual, provided that no conversion %BR% function or type conversion is present in either the actual part or the formal part of the association element. If a conversion function or type %BR% conversion is present, then the entire formal is considered to be associated with the entire actual. Similarly, for the association of actuals with corresponding formal subprogram parameters, association of a formal parameter of a given composite %BR% type with an actual of the same type is equivalent to the association of each scalar subelement of the formal parameter with the matching subelement %BR% of the actual. Different parameter passing mechanisms may be required in each case, but in both cases the associations will have an equivalent %BR% effect. This equivalence applies provided that no actual is accessible by more than one path (see 4.2.2.2). A formal %RED%<del>interface</del>%ENDCOLOR% object shall be either an explicitly declared %RED%<del>interface</del>%ENDCOLOR% object or member (see 5.1) of such an %RED%<del>interface</del>%ENDCOLOR% object. In the former %BR% case, such a formal is said to be associated in whole. In the latter cases, named association shall be used to associate the formal and actual; %BR% the subelements of such a formal are said to be associated individually. Furthermore, every scalar subelement of the explicitly declared %RED%<del>interface</del>%ENDCOLOR% %BR% object shall be associated exactly once with an actual (or subelement thereof) in the same association list, and all such associations shall %BR% appear in a contiguous sequence within that association list. Each association element that associates a slice or subelement (or slice thereof) %BR% of an %RED%<del>interface</del>%ENDCOLOR% object shall identify the formal with a locally static name. If an interface element in an interface list includes a default expression for a formal generic constant, for a formal port of any mode other %BR% than linkage, or for a formal variable or constant parameter of mode in, or an interface subprogram default for a formal generic subprogram, %BR% then any corresponding association list need not include an association element for that interface element. For an interface element that is %BR% a formal generic constant, a formal signal port, or a formal variable or constant parameter, if the association element is not included in the %BR% association list, or if the actual is open, then the value of the default expression is used as the actual expression or signal value in an %BR% implicit association element for that interface element. For an interface element that is a formal generic subprogram, if the association %BR% element is not included in the association list, or if the actual is open, then the subprogram denoted by the formal generic subprogram is %BR% determined by the interface subprogram default as described in 6.5.6.2. It is an error if an actual of open is associated with a formal interface object that is associated individually. An actual of open counts %BR% as the single association allowed for the corresponding formal interface object, but does not supply a constant, signal, or variable (as is %BR% appropriate to the object class of the formal) to the formal. %RED%It is an error if a signal association actual, which is a resolved composite type, of open is associated with a signal association formal %BR% object that is associated individually.%ENDCOLOR% It is an error if the reserved word <b>inertial</b> appears in an association element other than in a port map aspect. %GREEN%[Notes ...]%ENDCOLOR% ---+++ 6.5.7.4 Signal map aspects %GREEN%[NEW]%ENDCOLOR% %GREEN%[Reviewer note: These paragraphs are generated from 6.5.7.3 Port map aspects]%ENDCOLOR% %RED%A signal map aspect associates signals or values with the formal element in a signal association.%ENDCOLOR% <pre>%RED% signal_map_aspect ::= <b>map (</b> signal_association_list <b>)</b> signal_association_list ::= signal_association_element { <b>,</b> signal_association_element } %GREEN%[ , ] optional comma, if LCS-2016-071b is approved%ENDCOLOR% signal_association_element ::= [ signal_association_formal_part <b>=></b> ] signal_association_actual_part signal_association_formal_part ::= signal_association_formal_designator | <i>function</i>_name <b>(</b> signal_association_formal_designator <b>)</b> | type_mark <b>(</b> signal_association_formal_designator <b>)</b> signal_association_formal_designator ::= <i>subelement</i>_name signal_association_actual_part ::= signal_association_actual_designator | <i>function</i>_name <b>(</b> signal_association_actual_designator <b>)</b> | type_mark <b>(</b> signal_association_actual_designator <b>)</b> signal_association_actual_designator ::= <i>signal</i>_name | <b>open</b> %ENDCOLOR%</pre> %RED%Both named and positional association are allowed in a signal association list.%ENDCOLOR% %RED%The following definitions are used in the remainder of this subclause:%ENDCOLOR% * icon:line_lr %RED%The term actual refers to a signal association actual designator that appears in a signal association element of a signal association list.%ENDCOLOR% * icon:line_lr %RED%The term formal refers to a signal association formal designator that appears in a signal association element of a signal association list.%ENDCOLOR% %RED%In each case, it is an error if a scalar formal is associated with more than one actual, and is is an error if a scalar subelement of %BR% any composite formal is associated with more than one scalar subelement of an actual.%ENDCOLOR% %RED%An actual associated with a formal subelement in a signal map aspect shall be a signal, an expression, or the reserved word open.%ENDCOLOR% %RED%Certain restrictions apply to the actual associated with a formal subelement in a signal map aspect; these restrictions are described %BR% in %BLUE%6.5.6.3%ENDCOLOR%.%ENDCOLOR% %GREEN%[Reviewer note: These paragraphs are generated from 6.5.6.3 Port clause]%ENDCOLOR% %RED%If a formal is associated with an expression that is not globally static (see 9.4.1) and the formal is of an unconstrained or partially %BR% constrained composite type requiring determination of index ranges from the actual according to the rules of 5.3.2.2, then the expression %BR% shall be one of the following:%ENDCOLOR% * icon:line_lr %RED%The name of an object whose subtype is globally static%ENDCOLOR% * icon:line_lr %RED%An indexed name whose prefix is one of the members of this list%ENDCOLOR% * icon:line_lr %RED%A slice name whose prefix is one of the members of this list and whose discrete range is a globally static discrete range%ENDCOLOR% * icon:line_lr %RED%An aggregate, provided all choices are locally static and all expressions in element associations are expressions described in this list%ENDCOLOR% * icon:line_lr %RED%A function call whose return type mark denotes a globally static subtype%ENDCOLOR% * icon:line_lr %RED%A qualified expression or type conversion whose type mark denotes a globally static subtype%ENDCOLOR% * icon:line_lr %RED%An expression described in this list and enclosed in parentheses%ENDCOLOR% %RED%If the actual part of a given signal association element for a formal is an expression that is not globally static, then the given %BR% association element is equivalent to association of the formal with an anonymous signal implicitly declared in the declarative region %BR% that immediately encloses the block. The signal has the same subtype as the formal port and is the target of an implicit concurrent %BR% signal assignment statement of the form%ENDCOLOR% %RED%<i>anonymous</i> <= E;%ENDCOLOR% %RED%where E is the expression in the actual part of the given association element. The concurrent signal assignment statement occurs in %BR% the same statement part as the enclosing block.%ENDCOLOR% %RED%A formal that is not associated with an actual is said to be an unassociated formal.%ENDCOLOR% %GREEN%[Reviewer note: copied from 6.5.7.1 Association lists - General, paragraph 19 and 20, page 83]%ENDCOLOR% %BLUE%For the association of signals of a given composite type, association of a right-hand side target and a left-hand side target of the same type is %BR% equivalent to the association of each scalar subelement of the right-hand side with the matching subelement of the left-hand side, provided that no %BR% conversion function or type conversion is present on either side of the association element.%ENDCOLOR% %BLUE%A left-hand side signal association target shall be either an explicitly declared signal or member thereof (see 5.1). In the former case, such a %BR% target is said to be associated in whole. In the latter cases, named association shall be used to associate the targets; the subelements of such a target %BR% are said to be associated individually.%ENDCOLOR% ---+++ 11.7 Concurrent signal association statements %GREEN%[NEW, inserted between 11.6 and 11.7]%ENDCOLOR% %GREEN%[Editor note: New main paragraph]%ENDCOLOR% %TEAL%A concurrent signal association statement represents an association between two signals. Associated signals are said to %BR% compose an <i>association group</i>. An association group can comprise multiple signals.%ENDCOLOR% <pre> %TEAL%concurrent_signal_association_statement ::= [ label <b>:</b> ] concurrent_simple_signal_association concurrent_simple_signal_association ::= %RED%lhs_signal_association_target <b><=></b> rhs_signal_association_target ;%ENDCOLOR% %TEAL%<del><i>lhs</i>_signal_association_target <b><=></b> <i>rhs</i>_signal_association_target ;</del>%ENDCOLOR% %TEAL%<del>signal_association_target ::= <i>signal</i>_name</del>%ENDCOLOR% %RED%lhs_signal_association_target ::= <i>signal</i>_name rhs_signal_association_target ::= <i>signal</i>_name | signal_map_aspect%ENDCOLOR% </pre> %TEAL%A signal association implies no direction of information exchange between signal association targets (henceforth referred to as targets). %BR% If the target in the concurrent signal association statement is a name, then the name shall denote a signal.%ENDCOLOR% %TEAL%The signals are associated as follows:%ENDCOLOR% * icon:line_lr %TEAL%If the left-hand side target is a scalar signal and the right-hand side target is also a scalar signal, then both signals are associated.%ENDCOLOR% * icon:line_lr %TEAL%If the left-hand side target is a composite signal and the right-hand side target is also a composite signal, then each subelement in the right-hand %BR% side target shall be associated with the corresponding subelement in the left-hand side target.%ENDCOLOR% * icon:line_lr %RED%If the left-hand side target is a composite signal and the right-hand side target a signal association list, then each signal association formal part %BR% shall be associated with the corresponding subelement in the left-hand side target.%ENDCOLOR% * icon:line_lr %RED%All other cases are an error.%ENDCOLOR% %TEAL%All signals in an association group are either resolved or unresolved signals and shall share the same subtype. Moreover, the resolution function %BR% corresponding to a subtype shall be the same, if any.%ENDCOLOR% %TEAL%If a subelement or slice of a resolved signal of a composite type is associated as the right-hand side target, then every scalar subelement of that %BR% signal shall be associated exactly once with the corresponding left-hand side target in the same concurrent signal association statement.%ENDCOLOR% %TEAL%Note 1 -- A signal association target, denoting a signal name, can also denote an attribute name returning an implicit signal.%ENDCOLOR% ---+++ Annex C %GREEN%[Editor note: Add these rules]%ENDCOLOR% <pre> actual_designator ::= [ <b>inertial</b> ] expression | <i>signal</i>_name %RED%| signal_map_aspect%ENDCOLOR% | <i>variable</i>_name | <i>file</i>_name | subtype_indication | <i>subprogram</i>_name | <i>instantiated_package</i>_name | <b>open</b> %GREEN%[...]%ENDCOLOR% concurrent_assertion_statement ::= [ label <b>:</b> ] [ <b>postponed</b> ] assertion ; %TEAL%concurrent_signal_association_statement ::= [ label <b>:</b> ] concurrent_simple_signal_association%ENDCOLOR% concurrent_conditional_signal_assignment ::= target <b><=</b> [ <b>guarded</b> ] [ delay_mechanism ] conditional_waveforms ; concurrent_procedure_call_statement ::= [ label <b>:</b> ] [ <b>postponed</b> ] procedure_call ; concurrent_selected_signal_assignment ::= <b>with</b> expression <b>select</b> [ ? ] target <b><=</b> [ <b>guarded</b> ] [ delay_mechanism ] selected_waveforms ; concurrent_signal_assignment_statement ::= [ label <b>:</b> ] [ <b>postponed</b> ] concurrent_simple_signal_assignment | [ label <b>:</b> ] [ <b>postponed</b> ] concurrent_conditional_signal_assignment | [ label <b>:</b> ] [ <b>postponed</b> ] concurrent_selected_signal_assignment concurrent_simple_signal_association ::= %RED%lhs_signal_association_target <b><=></b> rhs_signal_association_target ;%ENDCOLOR% %TEAL%<del><i>lhs</i>_signal_association_target <b><=></b> <i>rhs</i>_signal_association_target ;</del>%ENDCOLOR% concurrent_simple_signal_assignment ::= target <b><=</b> [ <b>guarded</b> ] [ delay_mechanism ] waveform ; concurrent_statement ::= block_statement | process_statement | concurrent_procedure_call_statement | concurrent_assertion_statement | concurrent_signal_assignment_statement %TEAL%| concurrent_signal_association_statement%ENDCOLOR% | component_instantiation_statement | generate_statement | PSL_PSL_Directive %GREEN%[...]%ENDCOLOR% %RED%lhs_signal_association_target ::= <i>signal</i>_name%ENDCOLOR% %GREEN%[...]%ENDCOLOR% %RED%rhs_signal_association_target ::= <i>signal</i>_name | signal_map_aspect%ENDCOLOR% %GREEN%[...]%ENDCOLOR% %RED%signal_map_aspect ::= <b>map (</b> signal_association_list <b>)</b> %TEAL%<del>signal_association_target ::= <i>signal</i>_name</del>%ENDCOLOR% signal_association_list ::= signal_association_element { <b>,</b> signal_association_element } %GREEN%[ , ] optional comma, if LCS-2016-071b is approved%ENDCOLOR% signal_association_element ::= [ signal_association_formal_part <b>=></b> ] signal_association_actual_part signal_association_formal_part ::= signal_association_formal_designator | <i>function</i>_name <b>(</b> signal_association_formal_designator <b>)</b> | type_mark <b>(</b> signal_association_formal_designator <b>)</b> signal_association_formal_designator ::= <i>subelement</i>_name signal_association_actual_part ::= signal_association_actual_designator | <i>function</i>_name <b>(</b> signal_association_actual_designator <b>)</b> | type_mark <b>(</b> signal_association_actual_designator <b>)</b> signal_association_actual_designator ::= expression | <i>signal</i>_name | <b>open</b>%ENDCOLOR% </pre> ---++ Comments ---+++ Version 1 %COMMENT% </sticky> </noautolink>
E
dit
|
A
ttach
|
P
rint version
|
H
istory
: r3
<
r2
<
r1
|
B
acklinks
|
V
iew topic
|
Ra
w
edit
|
M
ore topic actions
Topic revision: r3 - 2020-02-17 - 15:34:42 -
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-2026 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki?
Send feedback