ENTITY

Syntaktische Rahmen – ENTITY

ENTITY xy_tb IS
END;
Dies ist eine einfache ENTITY ohne PORTs und GENERICs, wie sie z.B. bei Testbenches vorkommen könnte.
ENTITY ab IS

PORT (s1 : IN bit_vector(3 DOWNTO 0);
s2 : OUT bit);
END ab;
Diese ENTITY besitzt einen 4 bit breiten Bus als Eingangs-PORT und ein einzelnes bit-Signal als Auspags-PORT. Dies könnte z.B. ein Modell zur Paritätsprüfung darstellen.
ENTITY n_bit_register IS

GENERIC (n : positive := 4);
PORT (clk, reset : IN bit;
d1 : IN bit_vector(n-1 DOWNTO 0);
q1 : OUT bit_vector(n-1 DOWNTO 0));
END n_bit_register;
In diesem Beispiel wird die Schnittstelle eines Registers mit beliebiger Bitbreite beschrieben. Das GENERIC dient dazu, um die Breite des Eingangs- und Ausgangsbusses zu parametrisieren. Der Defaultwert hierfür ist 4, d.h. ohne explizite Angabe wird eine Busbreite von 4 Bit angenommen.
ENTITY something_else IS

GENERIC (n : IN positive);
PORT (c : IN bit;
q1 : OUT bit_vector(n-1 DOWNTO 0));

TYPE byte IS ARRAY (1 TO 8) OF bit;
USE work.timing_package.delay;

PROCEDURE initialize (SIGNAL y : byte) IS
BEGIN
y <= (OTHERS => '1') AFTER delay;
END initialize;
BEGIN

ASSERT c'DELAYED'STABLE(5 ns)
REPORT "c is not stable!"
SEVERITY error;
passive: proc_delay (c, q1, delay);
END something_else;
Hier werden im Deklarationsteil der ENTITY (vor BEGIN) neben den üblichen PORTS und GENERICS auch eine USE-Anweisung und eine PROCEDURE-Deklaration verwendet. Alle Vereinbarungen gelten somit fü ENTITY und ARCHITECTUREs; das timing_package ist somit also auch in der zugehöhrenden ARCHITECTURE bekannt. Nach dem BEGIN tritt eine sog. passive Anweisung (PROCEDURE-Aufruf oder PROCESS-Anweisung, die keine Signalzuweisungen enthalten) und eine ASSERTION auf.