SystemVerilogwhileおよびdo-whileループ
Systemverilog While
指定された条件が真である限り、whileおよびdo whileはループ構造であり、指定されたステートメントのセットを実行します。
whileループは、最初に条件が真であるかどうかをチェックし、次に条件が真である場合にステートメントを実行します。結果がfalseの場合、ループはここで終了します。
do whileループは、最初にステートメントを1回実行してから、条件が真であるかどうかを確認します。条件が真の場合、条件が偽になるまでステートメントのグループを実行します。条件がfalseの場合、ループはここで終了します。
したがって、この2つの違いは、dowhileループがステートメントセットを少なくとも1回実行することです。
構文
while (<condition>) begin // multiple statements end do begin // multiple statements end while (<condition>)
例1-whileループ
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.
例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.
例3-dowhileループ
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