SCL Reference: loop Statement
The SCL loop statement provides looping capability.
loop scl statements exit when booleanExpression // optional end loop;
The boolean expression is what you would expect it to be. Here are a few examples:
//infinite loop (no exit when) loop RD1 <= '0'; wait on RD1; end loop; //clock until pc == foo label loop RD0 <= '0'; wait 4 ic; RD0 <= '1'; wait 4 ic; exit when PC == foo; end loop; //unadorned exit (yeah this is contrived!) loop AN1 <= 3500 mv; exit; // unconditional exit end loop;
Note that a loop can have more than one exit when condition:
//multiple exit conditions loop wait on RD1; RD0 <= '0'; exit when STATUS.Z == 0; exit when RD2 == '0'; end loop;