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