Exit Statement
  
    
    
     
   
   Formal Definition
  
   The exit
   statement is used to finish or exit the execution of an enclosing
   loop statement. If the exit
   statement includes a condition, then the exit from the loop is conditional. 
  
   Simplified Syntax
  
   exit; 
  
   exit loop_label; 
  
   exit loop_label when condition; 
  
   Description
  
   The exit statement 
   terminates entirely the execution of the loop in which it is located. 
   The execution of the exit statement depends on a condition placed at 
   the end of the statement, right after the when
    reserved word. When the condition is TRUE (or if there is no 
   condition at all) the exit statement is executed and the control is 
   passed to the first statement after the end loop (example 1). 
  
   The loop label in the exit statement is not obligatory and can be 
   used only in case of labeled loops. If no label is present then it is 
   assumed that the exit statement relates to the innermost loop 
   containing it. If an exit from a loop on a higher level of hierarchy 
   is needed then the loop has to be assigned a label, which will be 
   used explicitly in the exit statement. (Example 2). 
  
   Examples
  
   Example 1 
  
   Loop_1: for count_value in 
   1 to 10 loop 
            exit 
   Loop_1 when reset = '1'; 
   A_1: A(count_value) := '0'; 
            end loop Loop_1; 
   A_2: B <= A after 10 ns; 
  
     
   At the beginning of each iteration of the LOOP_1 loop, the reset ='1' 
   ondition is checked. If the condition is FALSE, then the rest of the 
   loop is executed (in this case it is the assignment labeled A_1). 
   Otherwise, the control is passed to the next statement after the 
   loop, denoted with the A_2 label. 
  
   Example 2 
  
   Loop_X: loop 
              a_v 
   := 0; 
   Loop_Y:    loop 
   Exit_1:       exit 
   Loop_X when condition_1; 
                 Output_1(a_v)
    := Input_1(a_v); 
                 a_v
    := a_v + 1; 
   Exit_2:       exit when condition_2; 
              end loop Loop_Y; 
              Assign_Y:
    B(i) <= Output_1(i) after 
   10 ns; 
   Exit_3:    exit 
   Loop_X when condition_3; 
           end loop Loop_X; 
           Assign_X: A <=B after 
   10 ns; 
  
     
   There are two nested loops in the above example. When the condition_1 
   is TRUE, the Exit_1 statement will be executed. This will cause 
   termination of the Loop_X loop and moving the execution to Assign_X. 
   Next, the Loop_X will be terminated because its label is explicitly 
   listed in the exit statement. 
  
   If condition_1 is not TRUE then the two assignments below it are 
   performed and condition_2 is checked. If it is TRUE, then the Loop_Y 
   is exited. Since there is no loop label within the exit statement, 
   therefore it relates to the innermost loop. As a result, the next 
   statement to be executed will be Assign_Y. Finally, when the 
   condition_3 is TRUE the Loop_X is terminated. The Exit_3 loop label 
   could be skipped because this statement is within the boundaries of 
   the exit Loop_X loop. 
  
   Important Notes
  
   - 
   
    The exit statement is often 
    confused with the next statement.
     The difference between the two is that the exit
     statement "exits" the loop entirely, while the next 
    statement skips to the "next" loop iteration (in other 
    words, "exits" only the current iteration of the loop). 
     
  
    
 
    |