The SCL while loop is a variation on the Loop statement where the boolean exit condition is given at the start of the loop.
while booleanExpression 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 while true loop RD1 <= '0'; wait on RD1; end loop; //loop until PC > 0x2000 while PC <= #16#2000# loop PIR3.ADIF <= 1; wait 200 us; end loop;
Note that even though the while statement has it's own boolean expression, the loop can still contain exit when statements.
//loop until PIR2.EEIF is cleared while PIR2.EEIF == 1 loop RD1 <= '1'; wait on RD0; exit when PC == 0; // device reset end loop;