[Verilog] シミュレーション状態を保存、途中から再開 $save, $restart

保存

システムタスク $save(“filename”) でシミュレーションの状態をファイルに保存。

initial begin
#100; $display("a");
#100; $display("b");
$save("checkpoint");
#100; $display("c");
#100; $display("d");
end
view raw
gistfile1.v
hosted with ❤ by GitHub

差分保存の $incsave(“incremental_filename”) もある。

再開

$restart(“filename”) で再開。書くならこんな感じ?

initial begin
integer fd;
fd = $fopen("checkpoint", "rb");
if (fd !== 0) begin
$fclose(fd);
$restart("checkpoint");
end
end
view raw
gistfile1.v
hosted with ❤ by GitHub

VCS の場合、simv -r checkpoint で指定可能なよう。

注意点

(ツールの実装によるかもしれないけど)$save を呼び出した同時刻までの処理が完了した状態で保存されるので、次のような場合 CHECKPOINT は再開時に表示されない。

initial begin
$save("checkpoint");
$display("CHECKPOINT"); // $save 呼び出しと sim 時間が同じ
end
view raw
gistfile1.v
hosted with ❤ by GitHub
スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク