Instantiation

LRM §9.6.

An instantiation statement defines a sub-component of the design entity.

Syntax:

instance_label: [ component ] component_name 
  [ generic map ] [ port map ];
instance_label: entity entity_name [ ( architecture_name ) ] 
  [ generic map ] [ port map ];
instance_label: configuration configuration_name 
  [ generic map ] [ port map ]; 

Description:

An instantiation is a concurrent statement which is used to define the design hierarchy by making a copy of a lower level design entity within an architecture. The instantiation statement introduces a subsystem declared elsewhere.

The instantiation contains a reference to the instantiated unit and actual values for generics and ports. There are three forms of instantiation:

Instantiation of a component introduces a relationship to a unit defined earlier as a component (see Component). The name of the instantiated component must match the name of the declared component. The instantiated component is called with the actual parameters for generics and ports. The association list can be either positional or named.

It is not necessary to define a component to instantiate it: the entity/architecture pair can be instantiated directly. In such a direct instantiation, the instantiation statement contains the design entity name and optionally the name of the architecture to be used for this design entity.

Example:

u1: Nand4 port map(A, B, Q);
u2: entity work.Parity
  generic map(N => 8)
  port map(A => Data,
           Odd => ParityByte);

Note:

See also:

Architecture, Component, Entity, Configuration, Generic map, Port map