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; data = data >> 1; end
This code counts the number of bits that are 1 in a number.
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.
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; data = data >> 1; end end
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.