?? 1076_1.html
字號:
M3: MUX <b>port</b> <b>map</b> ( ··· ) ;
L1: Latch <b>port</b> <b>map</b> ( ··· ) ;
L2: Latch <b>port</b> <b>map</b> ( ··· ) ;
<b>end</b> Structure_View ;
--A configuration of the microprocessor:
<b>library</b> TTL, Work ;
<b>configuration</b> V4_27_87 <b>of</b> Processor <b>is</b>
<b>use</b> Work.<b>all </b>;
<b>for</b> Structure_View
<b>for</b> A1: ALU
<b>use</b> <b>configuration</b> TTL.SN74LS181 ;
<b>end</b> <b>for </b>;
<b>for</b> M1,M2,M3: MUX
<b>use</b> <b>entity</b> Multiplex4 (Behavior) ;
<b>end</b> <b>for </b>;
<b>for</b> <b>all</b>: Latch
-- use defaults
<b>end</b> <b>for </b>;
<b>end</b> <b>for</b> ;
<b>end configuration</b> V4_27_87 ;
</pre>
<h3><a name="1.3.1"> <a href = "1076_1.HTM#1.3.1"> 1.3.1 </a> Block configuration</a></h3>
<p>A block configuration defines the configuration of a block. Such a block maybe either an internal block defined by a block statement or an external block defined by a design entity. If the block is an internal block, the defining block statement may be either an explicit block statement or an implicit block statement that is itself defined by a generate statement.
<pre> block_configuration ::=
<b>for</b> block_specification
{ use_clause }
{ configuration_item }
<b>end</b> <b>for</b> ;
block_specification ::=
<i>architecture</i>_name
| <i>block_statement</i>_label
| <i>generate_statement</i>_label [ ( index_specification ) ]
index_specification ::=
discrete_range
|<i> static</i>_expression
configuration_item ::=
block_configuration
| component_configuration
</pre>
<p>The block specification identifies the internal or external block to which this block configuration applies.
<p>If a block configuration appears immediately within a configuration declaration, then the block specification of that block configuration must bean architecture name, and that architecture name must denote a design entity body whose interface is defined by the entity declaration denoted by the entity name of the enclosing configuration declaration.
<p>If a block configuration appears immediately within a component configuration,then the corresponding components must be fully bound (see <a href = "1076_5.HTM#5.2.1.1"> 5.2.1.1 </a> ), the block specification of that block configuration must be an architecture name, and that architecture name must denote the same architecture body as that to which the corresponding components are bound.
<p>If a block configuration appears immediately within another block configuration, then the block specification of the contained block configuration must be a block statement or generate statement label, and the label must denote a block statement or generate statement that is contained immediately within the block denoted by the block specification of the containing block configuration.
<p>If the scope of a declaration (see <a href = "1076_10.HTM#10.2"> 10.2 </a> ) includes the end of the declarative part of a block corresponding to a given block configuration, then the scope of that declaration extends to each configuration item contained in that block configuration, with the exception of block configurations that configure external blocks. In addition, if a declaration is visible (either directly or by selection) at the end of the declarative part of a block corresponding to a given block configuration, then the declaration is visible in each configuration item contained in that block configuration, with the exception of block configurations that configure external blocks. Additionally, if a given declaration is a homograph of a declaration that a use clause in the block configuration makes potentially directly visible, then the given declaration is not directly visible in the block configuration or any of its configuration items. See <a href = "1076_10.HTM#10.3"> 10.3 </a> for more information.
<p>For any name that is the label of a block statement appearing immediately within a given block, a corresponding block configuration may appear as a configuration item immediately within a block configuration corresponding to the given block. For any collection of names that are labels of instances of the same component appearing immediately within a given block, a corresponding component configuration may appear as a configuration item immediately within a block configuration corresponding to the given block.
<p>For any name that is the label of a generate statement immediately within a given block, one or more corresponding block configurations may appear as configuration items immediately within a block configuration corresponding to the given block. Such block configurations apply to implicit blocks generated by that generate statement. If such a block configuration contains an index specification that is a discrete range, then the block configuration applies to those implicit block statements that are generated for the specified range of values of the corresponding generate parameter; the discrete range has no significance other than to define the set of generate statement parameter values implied by the discrete range. If such a block configuration contains an index specification that is a static expression, then the block configuration applies only to the implicit block statement generated for the specified value of the corresponding generate parameter. If no index specification appears in such a block configuration, then it applies to exactly one of the following sets of blocks:
<ul>
<p>-- All implicit blocks (if any) generated by the corresponding generate statement, if and only if the corresponding generate statement has a generation scheme including the reserved word <b>for</b>
<p>-- The implicit block generated by the corresponding generate statement, if and only if the corresponding generate statement has a generation scheme including the reserved word <b>if</b> and if the condition in the generate scheme evaluates to TRUE
<p>-- No implicit or explicit blocks, if and only if the corresponding generate statement has a generation scheme including the reserved word <b>if</b> and the condition in the generate scheme evaluates to FALSE
</ul>
<p>If the block specification of a block configuration contains a generate statement label, and if this label contains an index specification, then it is an error if the generate statement denoted by the label does not have a generation scheme including the reserved word <b>for</b>.
<p>Within a given block configuration, whether implicit or explicit, an implicit block configuration is assumed to appear for any block statement that appears within the block corresponding to the given block configuration, if no explicit block configuration appears for that block statement. Similarly, an implicit component configuration is assumed to appear for each component instance that appears within the block corresponding to the given block configuration, if no explicit component configuration appears for that instance. Such implicit configuration items are assumed to appear following all explicit configuration items in the block configuration.
<p>It is an error if, in a given block configuration, more than one configuration item is defined for the same block or component instance.
<p>
<h4>NOTES</h4>
<p>1--As a result of the rules described in the preceding paragraphs and in Section 10, a simple name that is visible by selection at the end of the declarative part of a given block is also visible by selection within any configuration item contained in a corresponding block configuration. If such a name is directly visible at the end of the given block declarative part, it will likewise be directly visible in the corresponding configuration items,unless a use clause for a different declaration with the same simple name appears in the corresponding configuration declaration, and the scope of that use clause encompasses all or part of those configuration items. If such a use clause appears, then the name will be directly visible within the corresponding configuration items except at those places that fall within the scope of the additional use clause (at which places neither name will be directly visible).
<p>2--If an implicit configuration item is assumed to appear within a block configuration, that implicit configuration item will never contain explicit configuration items.
<p>3--If the block specification in a block configuration specifies a generate statement label, and if this label contains an index specification that is a discrete range, then the direction specified or implied by the discrete range has no significance other than to define, together with the bounds of the range, the set of generate statement parameter values denoted by the range. Thus, the following two block configurations are equivalent:
<pre> <b>for</b> Adders(31 <b>downto</b> 0) ··· <b>end</b> <b>for</b>;
<b>for</b> Adders(0 <b>to</b> 31) ··· <b>end</b> <b>for</b>;
</pre>
<p>4--A block configuration may appear immediately within a configuration declaration only if the entity declaration denoted by the entity name of the enclosing configuration declaration has associated architectures. Furthermore, the block specification of the block configuration must denote one of these architectures.
<p><i>Examples:</i>
<pre>--A block configuration for a design entity:
<b>for</b> ShiftRegStruct -- An architecture name.
-- Configuration items
-- for blocks and components
-- within ShiftRegStruct.
<b>end</b> <b>for</b> ;
--A block configuration for a block statement:
<b>for</b> B1 -- A block label
-- Configuration items
-- for blocks and components
-- within block B1.
<b>end</b> <b>for</b> ;
</pre>
<h3><a name="1.3.2"> <a href = "1076_1.HTM#1.3.2"> 1.3.2 </a> Component configuration</a></h3>
<p>A component configuration defines the configuration of one or more component instances in a corresponding block.
<pre> component_configuration ::=
<b>for</b> component_specification
[ binding_indication ; ]
[ block_configuration ]
<b>end</b> <b>for</b> ;
</pre>
<p>The component specification (see <a href = "1076_5.HTM#5.2"> 5.2 </a> ) identifies the component instances to which this component configuration applies. A component configuration that appears immediately within a given block configuration applies to component instances that appear immediately within the corresponding block.
<p> It is an error if two component configurations apply to the same component instance.
<p>If the component configuration contains a binding indication (see <a href = "1076_5.HTM#5.2.1"> 5.2.1 </a> ), then the component configuration implies a configuration specification for the component instances to which it applies. This implicit configuration specification has the same component specification and binding indication as that of the component configuration.
<p>If a given component instance is unbound in the corresponding block, then any explicit component configuration for that instance that does not contain an explicit binding indication will contain an implicit, default binding indication (see <a href = "1076_5.HTM#5.2.2"> 5.2.2 </a> ). Similarly, if a given component instance is unbound in the corresponding block, then any implicit component configuration for that instance will contain an implicit, default binding indication.
<p>It is an error if a component configuration contains an explicit block configuration and the component configuration does not bind all identified component instances to the same design entity.
<p>Within a given component configuration, whether implicit or explicit, an implicit block configuration is assumed for the design entity to which the corresponding component instance is bound, if no explicit block configuration appears and if the corresponding component instance is fully bound.
<p><i>Examples:</i>
<pre>--A component configuration with binding indication:
<b>for</b> <b>all</b>: IOPort
<b>use</b> <b>entity</b> StdCells.PadTriState4 (DataFlow)
<b>port</b> <b>map</b> (Pout=>A, Pin=>B, IO=>Dir, Vdd=>Pwr, Gnd=>Gnd) ;
<b>end</b> <b>for</b> ;
--A component configuration containing block configurations:
<b>for</b> D1: DSP
<b>for</b> DSP_STRUCTURE
-- Binding specified in design entity or else defaults.
<b>for</b> Filterer
-- Configuration items for filtering components.
<b>end</b> <b>for</b> ;
<b>for</b> Processor
-- Configuration items for processing components.
<b>end</b> <b>for</b> ;
<b>end for</b> ;
<b>end</b> <b>for</b> ;
</pre>
<p>NOTE<i>--</i>Therequirement that all component instances corresponding to a block configuration be bound to the same design entity makes the following configuration illegal:
<pre><b> architecture</b> A <b>of</b> E <b>is</b>
<b> component</b> C <b>is</b> <b>end</b> <b>component</b> C;
<b>for</b> L1: C <b>use</b> <b>entity</b> E1(X);
<b>for</b> L2: C <b>use</b> <b>entity</b> E2(X);
<b>begin</b>
L1: C;
L2: C;
<b>end</b> <b>architecture</b> A;
<b><i>configuration</i></b> <i>Illegal</i> <b><i>of</i></b><i> Work.E</i> <b><i>is</i></b><i>
</i><b><i>for</i></b><i> A
</i><b><i>for</i></b><i> </i><b><i>all</i></b>: <i>C
</i><b><i>for</i></b> <i>X -- Does not apply to the same design entity in all instances of C.
</i><b>·</b><b>·</b><b>·</b><i>
</i><b><i>end</i></b><i> </i><b><i>for</i></b>; <i>-- X
</i><b><i>end</i></b><i> </i><b><i>for</i></b>; <i>-- C
</i><b><i>end</i></b><i> </i><b><i>for</i></b>; <i>-- A
</i><b><i>end</i></b><i> </i><b><i>configuration</i></b><i> Illegal </i>;<i>
</i>
</pre>
<HR>
<a href="../../HTML/HOMEPG.HTM"><img src="HP.GIF" border=0></a>
<a href="1076_TOC.HTM"><img src="TOP.GIF" border=0></a>
<a href="1076_0.HTM"><img src="LEFT.GIF" BORDER=0></a>
<a href="1076_2.HTM"><img src="RIGHT.GIF" BORDER=0></a>
</body></html>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -