Sequential Statement | ---- used in ----> | Loop For Loop While Loop |
Syntax |
next; |
next loop_label; |
next loop_label when condition; |
Rules and Examples |
The nextstatement is used to prematurely terminate the
current iteration of a while, for or infinite loop:
for I in 0 to 7 loop if SKIP = '1' then next; else N_BUS <= TABLE(I); wait for 5 ns; end if; end loop; |
The next statement may test a boolean condition directly, using the
when keyword:
process (A) begin Z <= "0000"; for I in 0 to 3 loop next when A /= I; Z(I) <= '1'; end loop; end process; |
For a next statement within a set of nested loops, the optional loop
label may be used to indicate which level of loop is to be iterated. The
default (no label) is the innermost loop. If an outer loop is specified,
loops inside are effectively exited:
READ_BUS: process begin RESETLOOP: loop VALID_CHECK: while (CPU_DATA_VALID /= '1') loop wait until rising_edge(CLK) or RESET = '1'; next RESETLOOP when RESET='1'; end loop VALID_CHECK; CPU_DATA_READ <= '1'; wait until rising_edge(CLK); LOCAL_BUFFER <= DATA_BUS; wait until rising_edge(CLK); CPU_DATA_READ <= '0'; end loop RESETLOOP; end process READ_BUS; |
Synthesis Issues |
Whats New in '93 |
In VHDL-93, the next statement may have an optional label:
labelL next loop_label;