194 Chapter Seven
FOR AN2 : and3 USE ENTITY WORK.and3(and3_gen1)
GENERIC MAP( int_rise => 2.2 ns,
GENERIC MAP( int_fall => 2.7 ns,
GENERIC MAP( ext_rise => 3.1 ns,
GENERIC MAP( ext_fall => 3.2 ns);
END FOR;
FOR AN3 : and3 USE ENTITY WORK.and3(and3_gen1)
GENERIC MAP( int_rise => 2.2 ns,
GENERIC MAP( int_fall => 2.7 ns,
GENERIC MAP( ext_rise => 3.3 ns,
GENERIC MAP( ext_fall => 3.4 ns);
END FOR;
FOR AN4 : and3 USE ENTITY WORK.and3(and3_gen1)
GENERIC MAP( int_rise => 2.2 ns,
GENERIC MAP( int_fall => 2.7 ns,
GENERIC MAP( ext_rise => 3.0 ns,
GENERIC MAP( ext_fall => 3.1 ns);
END FOR;
END FOR;
END decode_gen1_con;
Each component instance is configured to the correct entity and archi-
tecture, and the generics of the entity are mapped with a generic map
clause. Using this type of configuration allows each instance to have
unique delay characteristics. Of course, the generics passed into the device
can represent any type of data the designer wants, but typically the gener-
ics are used to represent delay information. VITAL uses generics to pass
delay information to library components. We examine this more closely in
later chapters.
The power of this type of configuration is realized when the delay values
are updated. For instance, in the ASIC example, the estimated delays are
included in the configuration initially, but after the ASIC device has been
through the physical layout process, the actual delay information can be
determined. This information can be fed back into the configuration so
that the configuration has the actual delay information calculated from
the layout tool. Building a new simulatable device, including the new delay
information, requires only a recompile of the configuration. The entities
and architectures do not need to be recompiled.
If the delay information was included in the architecture for the device,
then a lot more of the model would need to be recompiled to build the
simulatable entity. All of the architectures that included the generics
would need to be recompiled, and so would the configuration for the entity.
A lot of extra code would be recompiled unnecessarily.