Declaration | ---- used in ----> | Architecture Package |
Syntax |
component component_name generic (generic_list); port (port_list); end component; |
Rules and Examples |
The port list must define the name, the mode (i.e.direction) and the
type of each port on the component.component HALFADD port(A,B : in bit; SUM, CARRY : out bit); end component; |
A component declaration does not define the entity-architecture pair to be bound to each instance, or even the ports on the entity. These are defined by the configuration |
In an architecture, components must be declared before the
begin statement:architecture STRUCTURAL of FULLADD is -- (local signal declarations here) component ORGATE port (A,B : in bit; Z : out bit); end component; -- (other component declarations) begin -- the architecture contents end STRUCTURAL; |
A component declared in a package is visible in any architecture which uses the package, and need not be declared again. |
For a component with generics, these must be declared before the
ports. They do not have a mode, as by definition they can only pass
information into the entity:component PARITY generic (N : integer); port (A : in std_ulogic_vector (N-1 downto 0); ODD : out std_ulogic); end component; |
Synthesis Issues |
Whats New in '93 |
In VHDL-93., an entity-architecture pair can be instantiated directly. In this case a component declaration is not required. This is more compact, but does not allow the flexibility of configuration.
In VHDL-93, the component name may be followed by the keyword is, for clarity and consistancy. also the keywords end component may be followed by a repetition of the component name:
component component_name is port (port list); end component component_name;