只要给定条件为真,while和do while都是循环结构,它们执行给定的语句集。
while循环首先检查条件是否为真,然后如果条件为真,则执行语句。 如果结果为假,则循环在此结束。
do while循环首先执行一次语句,然后检查条件是否为真。 如果条件为true,则执行该组语句,直到条件变为false。 如果条件为假,则循环就此结束。
因此,两者之间的区别在于do while循环至少执行一次语句集。
Syntax
while (<condition>) begin
// 多个陈述
end
do begin
// 多个陈述
end while (<condition>);
Example #1 - while loop
module tb;
initial begin
int cnt = 0;
while (cnt < 5) begin
$display("cnt = %0d", cnt);
cnt++;
end
end
endmodule
Simulation Log
ncsim> run
cnt = 0
cnt = 1
cnt = 2
cnt = 3
cnt = 4
ncsim: *W,RNQUIE: Simulation is complete.
Example #2
module tb;
initial begin
int cnt;
while (cnt != 0) begin
$display ("cnt = %0d", cnt);
cnt++;
end
end
endmodule
Simulation Log
ncsim> run
ncsim: *W,RNQUIE: Simulation is complete.
Example #3 - do while loop
module tb;
initial begin
int cnt = 0;
do begin
$display("cnt = %0d", cnt);
cnt++;
end while (cnt < 5);
end
endmodule
Simulation Log
ncsim> run
cnt = 0
cnt = 1
cnt = 2
cnt = 3
cnt = 4
ncsim: *W,RNQUIE: Simulation is complete.
参考文献:
【1】https://www.chipverify.com/systemverilog/systemverilog-while-do-while-loop