Configuration Declaration

LRM §1.3.

A configuration is a construct that defines how the design hierarchy is linked together.

Syntax:

configuration configuration_name of entity_name is
  [ configuration_declarations ]
  for architecture_name
    [ configuration_item ]
  end for;
end [ configuration ] [ configuration_name ];

configuration_item = for instance_label : component_name
                       [ use_item
                         [ generic_map ]
                         [ port_map ]; ]
                       [ configuration_item ]
                     end for;

use_item = entity [ library_name. ] entity_name [ ( architecture_name ) ] |
           configuration [ library_name. ] configuration_name 

Description:

A configuration declaration defines how the design hierarchy is linked together during elaboration, by listing the entities and architectures used in place of each component instantiation within an architecture.

A simple configuration contains reference to only one architecture body. Hierarchical configurations allow to nest configurations. This mechanism allows binding component instantiations with the design entities down the hierarchy.

When the ports and generics in the component declaration are not equal to their counterparts in the entity declaration, one can use an explicit notification on how the ports and generics in the entity should be bound to ports and generics of the component instance. The generic map and port map are used for this purpose.

Example:

-- an architecture of a microprocessor 
architecture Structure of MicroProcessor is 
  component ALU port (...); end component; 
  component MUX port (...); end component; 
  component LATCH port (...); end component; 
begin 
  A1: ALU port map(...); 
  M1: MUX port map(...); 
  M2: MUX port map(...); 
  M3: MUX port map(...); 
  L1: LTACH port map(...); 
  L2: LATCH port map(...); 
end Structure;
  
-- a configuration of the microprocessor
library TTL, work; 
use TTL.all;
use work.all; 
configuration Cfg4 of MicroProcessor is 
  for Structure 
    for A1: ALU 
      use configuration TTL.SN74LS181; 
    end for; 
    for M1, M2, M3: MUX 
      use entity Multiplex4(behavior); 
    end for; 
    for all: LATCH 
      use entity Work.Latch; 
    end for;
  end for; 
end configuration Cfg4;

Notes:

See also:

Architecture, Component, Configuration specification, Entity, Instantiation