PACKAGE

Syntaktische Rahmen – PACKAGE

PACKAGE pack1 IS

CONSTANT min : integer := 5;
END pack1;
Hier wird in einem sehr einfachen Package nur die Konstante min deklariert. Es handelt sich hierbei um eine vollständige Deklaration, in der der Wert der Konstanten ebenfalls im Package festgelegt wird.
PACKAGE pack2 IS

TYPE logic IS ('X','0','1','Z');

FUNCTION resolve (a: logic) RETURN logic;

SUBTYPE sub_logic is resolve logic;
END pack2;
Im Package pack2 wird ein Logiksystem (TYPE logic) mit einer Auflösungsfunktion (FUNCTION resolve) definiert. Es wird hier lediglich der Funktionsheader für die Funktion f bekanntgegeben, die eigentliche Definition erfolgt im zugehörenden Package Body. Darauf aufbauend wird der kann der SUBTYPE sub_logic abgeleitet werden.

Für eine derartige Beschreibung eines mehrwertigen Logiksystems mit Auflösungsfunktion ist genau diese Reihenfolge im Package erforderlich.

PACKAGE pack3 IS

USE work.std_ulogic.ALL;

COMPONENT xyz IS
GENERIC (n : IN positive);
PORT (s1 : IN bit_vector(3 DOWNTO 0);
s2 : OUT bit);
END COMPONENT;

PROCEDURE g (a:IN logic; b :OUT logic) IS
BEGIN
b := NOT (a AND 1);
END g;

FUNCTION h ( a: logic) RETURN logic;
END pack3;
Dieses Beispiel zeigt ein Package, das auch eine COMPONENT-Deklaration enthält. Daneben wird eine Prozedur vollständig deklariert, während von der Funktion h wiederum nur der Funktionsheader angegeben ist.