?? 1076_9.html
字號:
<h4>NOTES</h4>
<p>1--Since a concurrent assertion statement represents a passive process statement, such a process has no outputs. Therefore, the execution of a concurrent assertion statement will never cause an event to occur. However, if the assertion is false, then the specified error message will be sent to the simulation report.
<p>2--The value of an implicitly declared signal GUARD has no effect on evaluation of the assertion unless it is explicitly referenced in one of the expressions of that assertion.
<p>3--A concurrent assertion statement whose condition is defined by a static expression is equivalent to a process statement that ends in a wait statement that has no sensitivity clause; such a process will execute once through at the beginning of simulation and then wait indefinitely.
<h2><a name="9.5"> <a href = "1076_9.HTM#9.5"> 9.5 </a> Concurrent signal assignment statements</a></h2>
<p>A concurrent signal assignment statement represents an equivalent process statement that assigns values to signals.
<pre> concurrent_signal_assignment_statement ::=
[ label : ] [ <b>postponed</b> ] conditional_signal_assignment
| [ label : ] [ <b>postponed</b> ] selected_signal_assignment
options ::= [ <b>guarded </b>] [ delay_mechanism ]
</pre>
<p>There are two forms of the concurrent signal assignment statement. For each form,the characteristics that distinguish it are discussed in the following paragraphs.
<p>Each form may include one or both of the two options <b>guarded </b>and a delay mechanism (see <a href = "1076_8.HTM#8.4"> 8.4 </a> for the delay mechanism, <a href = "1076_9.HTM#9.5.1"> 9.5.1 </a> for the conditional signal assignment statement, and <a href = "1076_9.HTM#9.5.2"> 9.5.2 </a> for the selected signal assignment statement).The option <b>guarded </b>specifies that the signal assignment statement is executed when a signal GUARD changes from FALSE to TRUE, or when that signal has been TRUE and an event occurs on one of the signal assignment statement's inputs. (The signal GUARD may be one of the implicitly declared GUARD signals associated with block statements that have guard expressions, or it may be an explicitly declared signal of type Boolean that is visible at the point of the concurrent signal assignment statement.) The delay mechanism option specifies the pulse rejection characteristics of the signal assignment statement.
<p>If the target of a concurrent signal assignment is a name that denotes a guarded signal (see <a href = "1076_4.HTM#4.3.1.2"> 4.3.1.2 </a> ), or if it is in the form of an aggregate and the expression in each element association of the aggregate is a static signal name denoting a guarded signal, then the target is said to be a <i>guarded target</i>. If the target of a concurrent signal assignment is a name that denotes a signal that is not a guarded signal, or if it is in the form of an aggregate and the expression in each element association of the aggregate is a static signal name denoting a signal that is not a guarded signal, then the target is said to be an <i>unguarded target</i>. It is an error if the target of a concurrent signal assignment is neither a guarded target nor an unguarded target.
<p>For any concurrent signal assignment statement, there is an equivalent process statement with the same meaning. The process statement equivalent to a concurrent signal assignment statement whose target is a signal name is constructed as follows:
<ol type="a">
<li>If a label appears on the concurrent signal assignment statement, then the same label appears on the process statement.
<li>The equivalent process statement is a postponed process if and only if the concurrent signal assignment statement includes the reserved word <b>postponed</b>.
<li>If the delay mechanism option appears in the concurrent signal assignment, then the same delay mechanism appears in every signal assignment statement in the process statement; otherwise, it appears in no signal assignment statement in the process statement.
<li>The statement part of the equivalent process statement consists of a statement transform (described below).
<p>If the option <b>guarded</b> appears in the concurrent signal assignment statement, then the concurrent signal assignment is called a <i>guarded</i> <i>assignment</i>. If the concurrent signal assignment statement is a guarded assignment, and if the target of the concurrent signal assignment is a guarded target, then the statement transform is as follows:
<pre> <b>if</b> GUARD <b>then</b>
<i> signal_transform</i>
<b> else</b>
<i> disconnection_statements</i>
<b>end if</b> ;
</pre>
<p>Otherwise, if the concurrent signal assignment statement is a guarded assignment, but if the target of the concurrent signal assignment is <i>not</i>a guarded target, then the statement transform is as follows:
<pre> <b>if</b> GUARD <b>then</b>
<i> signal_transform</i>
<b>end if</b> ;
</pre>
<p>Finally, if the concurrent signal assignment statement is <i>not</i> a guarded assignment, and if the target of the concurrent signal assignment is <i>not</i> a guarded target, then the statement transform is as follows:
<pre><i> signal_transform</i>
</pre>
<p> It is an error if a concurrent signal assignment is not a guarded assignment and the target of the concurrent signal assignment is a guarded target.
<p>A <i>signal transform</i> is either a sequential signal assignment statement, an if statement, a case statement, or a null statement. If the signal transform is an if statement or a case statement, then it contains either sequential signal assignment statements or null statements, one for each of the alternative waveforms. The signal transform determines which of the alternative waveforms is to be assigned to the output signals.
<li>If the concurrent signal assignment statement is a guarded assignment, or if any expression (other than a time expression) within the concurrent signal assignment statement references a signal, then the process statement contains a final wait statement with an explicit sensitivity clause. The sensitivity clause is constructed by taking the union of the sets constructed by applying the rule of <a href = "1076_8.HTM#8.1"> 8.1 </a> to each of the aforementioned expressions. Furthermore, if the concurrent signal assignment statement is a guarded assignment, then the sensitivity clause also contains the simple name GUARD. (The signals identified by these names are called the <i>inputs</i> of the signal assignment statement.) Otherwise, the process statement contains a final wait statement that has no explicit sensitivity clause, condition clause, or timeout clause.
</ol>
<p>Under certain conditions (see above) the equivalent process statement may contain a sequence of disconnection statements. A <i>disconnection statement</i> is a sequential signal assignment statement that assigns a null transaction to its target. If a sequence of disconnection statements is present in the equivalent process statement, the sequence consists of one sequential signal assignment for each scalar subelement of the target of the concurrent signal assignment statement. For each such sequential signal assignment, the target of the assignment is the corresponding scalar subelement of the target of the concurrent signal assignment, and the waveform of the assignment is a null waveform element whose time expression is given by the applicable disconnection specification (see <a href = "1076_5.HTM#5.3"> 5.3 </a> ).
<p>If the target of a concurrent signal assignment statement is in the form of an aggregate, then the same transformation applies. Such a target may only contain locally static signal names, and a signal may not be identified by more than one signal name.
<p>It is an error if a null waveform element appears in a waveform of a concurrent signal assignment statement.
<p>Execution of a concurrent signal assignment statement is equivalent to execution of the equivalent process statement.
<h4>NOTES</h4>
<p>1--A concurrent signal assignment statement whose waveforms and target contain only static expressions is equivalent to a process statement whose final wait statement has no explicit sensitivity clause, so it will execute once through at the beginning of simulation and then suspend permanently.
<p>2--A concurrent signal assignment statement whose waveforms are all the reserved word <b>unaffected</b> has no drivers for the target, since every waveform in the concurrent signal assignment statement is transformed to the statement
<pre><b>null</b>;
</pre>
<p>in the equivalent process statement. See <a href = "1076_9.HTM#9.5.1"> 9.5.1 </a> .
<h3><a name="9.5.1"> <a href = "1076_9.HTM#9.5.1"> 9.5.1 </a> Conditional signal assignments</a></h3>
<p>The conditional signal assignment represents a process statement in which the signal transform is an if statement.
<pre> conditional_signal_assignment ::=
target<i> </i> <= options conditional_waveforms ;
conditional_waveforms ::=
{ waveform <b>when</b> condition <b>else</b> }
waveform [ <b>when</b> condition ]
</pre>
<p>The options for a conditional signal assignment statement are discussed in <a href = "1076_9.HTM#9.5"> 9.5 </a> .
<p>For a given conditional signal assignment, there is an equivalent process statement corresponding to it as defined for any concurrent signal assignment statement. If the conditional signal assignment is of the form
<pre> target <= options waveform1 <b>when</b> condition1 <b>else</b>
waveform2 <b>when</b> condition2 <b>else</b>
·
·
·
waveformN-1 <b>when</b> conditionN-1 <b>else</b>
waveformN <b>when</b> conditionN;
</pre>
<p>then the signal transform in the corresponding process statement is of the form
<pre> <b>if</b> condition1 <b>then</b>
wave_transform1
<b>elsif</b> condition2 <b>then</b>
<b> </b>wave_transform2
·
·
·
<b>elsif</b> conditionN-1 <b>then</b>
wave_transformN-1
<b>elsif</b> conditionN <b>then</b>
wave_transformN
<b>end if</b> ;
</pre>
<p>If the conditional waveform is only a single waveform, the signal transform in the corresponding process statement is of the form
<pre> wave_transform
</pre>
<p>For any waveform, there is a corresponding <i>wave transform</i>. If the waveform is of the form
<pre> waveform_element1, waveform_element2, ..., waveform_elementN
</pre>
<p>then the wave transform in the corresponding process statement is of the form
<pre> target <= [ delay_mechanism ] waveform_element1, waveform_element2, ...,
waveform_elementN;
</pre>
<p>If the waveform is of the form
<pre> <b>unaffected</b>
</pre>
<p>then the wave transform in the corresponding process statement is of the form
<pre> <b>null</b>;
</pre>
<p>In this example, the final <b>null</b> causes the driver to be unchanged, rather than disconnected. (This is the null statement--not a null waveform element).
<p>The characteristics of the waveforms and conditions in the conditional assignment statement must be such that the if statement in the equivalent process statement is a legal statement.
<p><i>Example:</i>
<pre> S <= <b>unaffected</b> <b>when</b> Input_pin = S'DrivingValue <b>else</b>
Input_pin <b>after</b> Buffer_Delay;
</pre>
<p>NOTE--The wave transform of a waveform of the form <b>unaffected</b> is the null statement, not the null transaction.
<h2><a name="9.5.2"> <a href = "1076_9.HTM#9.5.2"> 9.5.2 </a> Selected signal assignments</a></h2>
<p>The selected signal assignment represents a process statement in which the signal transform is a case statement.
<pre> selected_signal_assignment ::=
<b>with</b> expression <b>select</b>
target <= options selected_waveforms;
selected_waveforms ::=
{ waveform <b>when</b> choices , }
waveform <b>when</b> choices
</pre>
<p>The options for a selected signal assignment statement are discussed in <a href = "1076_9.HTM#9.5"> 9.5 </a> .
<p>For a given selected signal assignment, there is an equivalent process statement corresponding to it as defined for any concurrent signal assignment statement. If the selected signal assignment is of the form
<pre> <b>with</b> expression <b>select</b>
target <= options waveform1 <b>when</b> choice_list1,
waveform2 <b>when</b> choice_list2,
·
·
·
waveformN-1 <b>when</b> choice_listN-1,
waveformN <b>when</b> choice_listN ;
</pre>
<p>then the signal transform in the corresponding process statement is of the form
<pre> <b>case</b> expression <b>is</b>
<b>when</b> choice_list1 =>
wave_transform1
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -