Looping Statements

While Statements

A while statement evaluates an expression and repeatedly executes the subsequent statement if the expression evaluates to true. For example:

ones = 0;
while (data) begin
   ones = ones + data[0];
   data = data >> 1;
end

This code counts the number of bits that are 1 in a number.

For Statements

The for statement is used to iterate through a range of values. For example:

for (i = 0; i < 64; i = i + 1)
   test_amplifier(.gain(i));

This is equivalent to:

i = 0;
while (i < 64) begin
   test_amplifier(.gain(i));
   i = i + 1;
end

Thus, ‘i = 0’ is acting as the initializer, ‘i < 64’ the conditional that indicates the loop should continue, and ‘i = i + 1’ the incrementer.

Repeat Statements

A repeat statement evaluates an expression and then executes the subsequent statement that many times. For example:

always @(posedge start) begin
   repeat (8) begin
       #1 out <= data[0];
       data = data >> 1;
   end
end

Forever Statements

A forever statement executes the subsequent statement repeatedly forever. For this reason, the subsequent must contain something that will block execution, such as a delay statement, an event statement, or a blocking assignment statement with delay. For example:

initial wait (start) forever #5 clk = ~clk;

This code waits for start to become true, and then it generates a clock on clk with a period of 10.