180 Chapter Seven
This configuration specifies which configuration to use for each compo-
nent in architecture structuralof entity decode. The specified lower-level
configuration must already exist in the library for the current configura-
tion to compile. Each component being configured has a FORclause to begin
the configuration and an END FORclause to end the configuration specifi-
cation for the component. Each component can be specified with the
component instantiation label directly, as shown for component I1,or
with an ALLor OTHERSclause as shown by the and3components.
After the component is uniquely specified by label or otherwise, the USE
CONFIGURATION clause specifies which configuration to use for this
instance of the component. In the preceding example, the configuration
specification for component I1uses the configuration called invcon, from
the working library. For configuration decode_llconto compile, configu-
ration invconmust have been already compiled into library WORK.
Notice that the names of the entities, architectures, and configurations
reflect a naming convention. In general, this is a good practice. It helps
distinguish the different types of design units from one another when they
all exist in a library.
The advantage of this style of configurations is that most configura-
tions are easy to write and understand. The disadvantage is not being
able to change the configuration of a lower-level component, without
implementing a two-step or more process of recompilation when hierarchy
levels increase.
Entity-Architecture Pair Configuration
The other style of component configurations is the entity-architecture pair
style. Following is an example of a configuration that uses the same
entity and architectures as the previous example:
CONFIGURATION decode_eacon OF decode IS
FOR structural
FOR I1 : inv USE ENTITY WORK.inv(behave);
END FOR;
FOR OTHERS : inv USE ENTITY WORK.inv(behave);
END FOR;
FOR A1 : and3 USE ENTITY WORK.and3(behave);
END FOR;
FOR OTHERS : and3 USE ENTITY WORK.and3(behave);