EXIT

Sequentielle Anweisungen – EXIT

PACKAGE array_pack IS
TYPE bit_matrix IS
ARRAY (integer RANGE <>, integer RANGE <>) OF bit;
END array_pack ;

-----------------------------------------------------------

USE work.array_pack.ALL;

ENTITY array_compare IS
PORT (a, b : IN bit_matrix(8 DOWNTO 0, 8 DOWNTO 0);
equal : OUT boolean) ;
END array_compare ;

-----------------------------------------------------------

ARCHITECTURE behavioral OF array_compare IS
BEGIN
cmp : PROCESS (a,b)
VARIABLE equ : boolean ;
BEGIN

equ := true ;

first_dim_loop : FOR k IN a'RANGE(1) LOOP
second_dim_loop : FOR l IN a'RANGE(2) LOOP
IF a(k,l) /= b(k,l) THEN
equ := false ;
-- sofortiger Ausstieg bei ungleichen Elementen
EXIT first_dim_loop ;

END IF ;
END LOOP ;
END LOOP ;

equal <= equ ;

END PROCESS ;
END behavioral ;
Mit diesem Modell werden zwei bit-Matrizen auf Gleichheit geprüft. Der Vergleich kann abgebrochen werden, sobald eine Ungleichheit in einem Matrixelement auftritt. In diesem Fall wird deshalb die doppelte Schleife durch ein EXIT vorzeitig verlassen.

Wird wie hier das Schleifen-Label angegeben, so kann nicht nur aus der aktuellen (second_dim_loop), sondern auch aus übergeordneten Schleifen ausgestiegen werden.

Die EXIT-Anweisung kann auch eine Bedingung (Schlüsselwort WHEN) enthalten.