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;
© 2025 Microchip Technology, Inc.
Notice: ARM and Cortex are the registered trademarks of ARM Limited in the EU and other countries.
Information contained on this site regarding device applications and the like is provided only for your convenience and may be superseded by updates. It is your responsibility to ensure that your application meets with your specifications. MICROCHIP MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND WHETHER EXPRESS OR IMPLIED, WRITTEN OR ORAL, STATUTORY OR OTHERWISE, RELATED TO THE INFORMATION, INCLUDING BUT NOT LIMITED TO ITS CONDITION, QUALITY, PERFORMANCE, MERCHANTABILITY OR FITNESS FOR PURPOSE. Microchip disclaims all liability arising from this information and its use. Use of Microchip devices in life support and/or safety applications is entirely at the buyer's risk, and the buyer agrees to defend, indemnify and hold harmless Microchip from any and all damages, claims, suits, or expenses resulting from such use. No licenses are conveyed, implicitly or otherwise, under any Microchip intellectual property rights.