TWiki
>
P1076 Web
>
VHDL2017
>
LCS2016_070
(revision 12) (raw view)
Edit
Attach
---+ Language Change Specification for Bidirectional Connections ---++ | <sticky><b>LCS Number:</b></sticky> | LCS-2016-070 | | <sticky><b>Version:</b> </sticky> | 3 | | <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>History Doc:</b></sticky> | [[LCS2016_070_History ]] | | <sticky><b>Summary:</b> </sticky> | Adds bidirectional connections aka. Spaceship assignments. | <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%. ---++ Details of Language Change ---+++ (070.1) 6.4.2.3 Signal declarations %GREEN%[Editor note: 1st paragraph on page 69]%ENDCOLOR% A signal may have one or more <i>sources</i>. For a signal of a scalar type, %RED%the set of sources is the union of the subset of primary sources and of %BR% the subset of secondary sources. %GRAY%<del>each source is either a driver (see 14.7.2) or an *out*, *inout*, *buffer*, or *linkage* port of a component instance %BR% or of a block statement with which the signal is associated.</del>%ENDCOLOR% The subsets are determined as follows:%ENDCOLOR% * icon:line_lr %RED%For a signal of a scalar type,%ENDCOLOR% %GRAY%each%ENDCOLOR% <i>%RED%primary%ENDCOLOR% %GRAY%source%ENDCOLOR%</i> %GRAY%is either a driver (see 14.7.2) or an *out*, *inout*, *buffer*, or *linkage* port of a component %BR% instance or of a block statement with which the signal is associated.%ENDCOLOR% * icon:line_lr %RED%For a signal of a scalar type, the <i>subset of secondary sources</i> is the union of all primary sources of all other signals in the same association %BR% group (see 11.7).%ENDCOLOR% %RED%It?s an error if after elaboration the calculation of driving values in a signal association group contains a cyclic dependency on the sources.%ENDCOLOR% For a signal of a composite type, each composite source is a collection of scalar sources, one for each scalar subelement of the signal. %BR% It is an error if, after the elaboration of a description, a signal has multiple sources and it is not a resolved signal. It is also an %BR% error if, after the elaboration of a description, a resolved signal has more sources than the number of elements in the index range of the %BR% type of the formal parameter of the resolution function associated with the resolved signal. If a subelement or slice of a resolved signal of composite type is associated as an actual in a port map aspect (either in a component %BR% instantiation statement, a block statement, or in a binding indication), and if the corresponding formal is of mode out, inout, buffer, or %BR% linkage, then every scalar subelement of that signal shall be associated exactly once with such a formal in the same port map aspect, and %BR% the collection of the corresponding formal parts taken together constitute one %RED%primary%ENDCOLOR% source of the signal. If a resolved signal of composite type %BR% is associated as an actual in a port map aspect, that is equivalent to each of its subelements being associated in the same port map aspect. If a subelement of a resolved signal of composite type has a driver in a given process, then every scalar subelement of that signal shall %BR% have a driver in the same process, and the collection of all of those drivers taken together constitute one %RED%primary%ENDCOLOR% source of the signal. The default value associated with a scalar signal defines the value component of a transaction that is the initial contents of each driver %BR% (if any) of that signal. The time component of the transaction is not defined, but the transaction is understood to have already occurred %BR% by the start of simulation. ---+++ (070.1) 11.1 General <pre> concurrent_statement ::= block_statement | process_statement | concurrent_procedure_call_statement | concurrent_assertion_statement | concurrent_signal_assignment_statement %RED%| concurrent_signal_association_statement%ENDCOLOR% | component_instantiation_statement | generate_statement | PSL_PSL_Directive </pre> ---+++ (070.2) 11.7 Concurrent signal association statements %GREEN%[NEW, inserted between 11.6 and 11.7]%ENDCOLOR% %GREEN%[Editor note: New main paragraph]%ENDCOLOR% %RED%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> %RED%concurrent_signal_association_statement ::= [ label <b>:</b> ] concurrent_simple_signal_association concurrent_simple_signal_association ::= <i>lhs</i>_signal_association_target <b><=></b> <i>rhs</i>_signal_association_target ; signal_association_target ::= <i>signal</i>_name%ENDCOLOR% </pre> %RED%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% %RED%The signals are associated as follows:%ENDCOLOR% * icon:line_lr %RED%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 %RED%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%All other cases are an error.%ENDCOLOR% %RED%All signals in an association group are either resolved or unresolved signals. The targets' subtypes shall be compatible to each other. Moreover, the resolution function %BR% corresponding to the subtypes shall be the same, if any.%ENDCOLOR% %RED%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% %RED%Note 1 -- A signal association target, denoting a signal name, can also denote an attribute name returning an implicit signal.%ENDCOLOR% ---+++ (070.3) 14.7.3.2 Driving values %GREEN%[Exposed hidden list with a new list hierarchy]%ENDCOLOR% A basic signal is a signal that has all of the following properties: * icon:line_lr It is either a scalar signal or a resolved signal (see 6.4.2.3). * icon:line_lr It is not a subelement of a resolved signal. * icon:line_lr Is not an implicit signal of the form S'STABLE(T), S'QUIET(T), or S'TRANSACTION (see 16.2). * icon:line_lr It is not an implicit signal GUARD (see 11.2). Basic signals are those that determine the driving values for all other signals. The driving value of any signal S is determined by the following steps: a. If a driving-value release is scheduled for S or for a signal of which S is a subelement, S becomes driving-value released, that is, no %BR% longer driving-value forced. Proceed to step b). a. If a driving-value force is scheduled for S or for a signal of which S is a subelement, S becomes driving-value forced and the driving value %BR% of S is the driving force value for S or the element of the driving force value for the signal of which S is a subelement, as appropriate; no %BR% further steps are required. Otherwise, proceed to step c). a. If S is driving-value forced, the driving value of S is unchanged from its previous value; no further steps are required. Otherwise, proceed %BR% to step d). a. If a driving-value deposit is scheduled for S or for a signal of which S is a subelement, the driving value of S is the driving deposit value %BR% for S or the element of the driving deposit value for the signal of which S is a subelement, as appropriate; no further steps are required. %BR% Otherwise, proceed to step e)%RED%, if S is a basic signal, otherwise proceed to <del>or</del>%ENDCOLOR% f)%RED%<del>, as appropriate</del>%ENDCOLOR%. a. If S is a basic signal: * icon:line_lr If S has no source, then the driving value of S is given by the default value associated with S (see 6.4.2.3). * icon:line_lr If S has one source that is a driver and S is not a resolved signal (see 6.4.2.3), then the driving value of S is the current value of %BR% that driver. * icon:line_lr If S has one source that is a port and S is not a resolved signal, then the driving value of S is the driving value of the formal part of %BR% the association element that associates S with that port (see 6.5.7.1). The driving value of a formal part is obtained by evaluating the %BR% formal part as follows: %GRAY%<del>If no conversion function or type conversion is present in the formal part, then the driving value of the formal %BR% part is the driving value of the signal denoted by the formal designator. Otherwise, the driving value of the formal part is the value %BR% obtained by applying either the conversion function or type conversion (whichever is contained in the formal part) to the driving value of %BR% the signal denoted by the formal designator.</del>%ENDCOLOR% %GREEN%[Changed hidden nested item list into a sublist for better readablility]%ENDCOLOR% * %GRAY%If no conversion function or type conversion is present in the formal part, then the driving value of the formal part is the driving %BR% value of the signal denoted by the formal designator.%ENDCOLOR% * %GRAY%Otherwise, the driving value of the formal part is the value obtained by applying either the conversion function or type conversion %BR% (whichever is contained in the formal part) to the driving value of the signal denoted by the formal designator.%ENDCOLOR% * icon:line_lr If S is a resolved signal and has one or more sources, then the driving values of the sources of S are examined. It is an error if %BR% any of these driving values is a composite where one or more subelement values are determined by the null transaction (see 10.5.2.2) and %BR% one or more subelement values are not determined by the null transaction. %GRAY%<del>If S is of signal kind register and all the sources of S have %BR% values determined by the null transaction, then the driving value of S is unchanged from its previous value. Otherwise, the driving value %BR% of S is obtained by executing the resolution function associated with S, where that function is called with an input parameter consisting %BR% of the concatenation of the driving values of the sources of S, with the exception of the value of any source of S whose current value is %BR% determined by the null transaction.</del>%ENDCOLOR% %GREEN%[Changed hidden nested item list into a sublist for better readablility]%ENDCOLOR% * %GRAY%If S is of signal kind register and all the sources of S have values determined by the null transaction, then the driving value of S is %BR% unchanged from its previous value.%ENDCOLOR% * %GRAY%Otherwise, the driving value of S is obtained by executing the resolution function associated with S, where that function is called %BR% with an input parameter consisting of the concatenation of the %RED%current <del>driving</del>%ENDCOLOR% values of the %RED%drivers <del>sources</del>%ENDCOLOR% of S %RED%and the driving %BR% values of the OUT, INOUT, BUFFER, and LINKAGE ports with which S is associated%ENDCOLOR%, with the exception of the value of any source %BR% of S whose current value is determined by the null transaction.%ENDCOLOR% a. If S is not a basic signal: * icon:line_lr If S is a subelement of a resolved signal R, the driving value of S is the corresponding subelement value of the driving value of R. * icon:line_lr Otherwise (S is a nonresolved, composite signal), the driving value of S is equal to the aggregate of the driving values of each of the %BR% basic signals that are the subelements of S. ---+++ (070.4) 15.3 Lexical elements, separators, and delimiters %GREEN%[...]%ENDCOLOR% A delimiter is either one of the following special characters (in the basic character set): <pre> & ' ( ) * + , - . / : ; < = > ` | [ ] ? @ </pre> or one of the following compound delimiters, each composed of two or more adjacent special characters: <pre> => ** := /= >= <= <> %RED%<=>%ENDCOLOR% ?? ?= ?/= ?< ?<= ?> ?>= << >> </pre> %GREEN%[...]%ENDCOLOR% NOTE 2 -- The following names are used when referring to compound delimiters: | *Delimiter* | *Name* | | => | Arrow | | !** | Double star, exponentiate | | := | Variable assignment | | /= | Inequality (pronounced "not equal") | | >= | Greater than or equal | | <= | Less than or equal; signal assignment | | <> | Box | | %RED%<=>%ENDCOLOR% | %RED%Signal association%ENDCOLOR% | | ?? | Condition conversion | | ?= | Matching equality | | ?/= | Matching inequality | | ?< | Matching less than | | ?<= | Matching less than or equal | | ?> | Matching greater than | | ?>= | Matching greater than or equal | | << | Double less than | | >> | Double greater than | ---+++ (070.5) Annex C %GREEN%[Editor note: Add these rules]%ENDCOLOR% <pre> %GREEN%[...]%ENDCOLOR% concurrent_assertion_statement ::= [ label <b>:</b> ] [ <b>postponed</b> ] assertion ; %RED%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 %RED%concurrent_simple_signal_association ::= <i>lhs</i>_signal_association_target <b><=></b> <i>rhs</i>_signal_association_target ;%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 %RED%| concurrent_signal_association_statement%ENDCOLOR% | component_instantiation_statement | generate_statement | PSL_PSL_Directive %GREEN%[...]%ENDCOLOR% %RED%signal_association_target ::= <i>signal</i>_name%ENDCOLOR% </pre> ---++ Comments %COMMENT%</sticky> </noautolink>
Edit
|
Attach
|
P
rint version
|
H
istory
:
r39
|
r14
<
r13
<
r12
<
r11
|
B
acklinks
|
V
iew topic
|
Raw edit
|
More topic actions...
Topic revision: r1 - 2017-07-30 - 05:39:59 -
TWikiGuest
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