2.4.17 save/restore(Pro-Version Only)
 

シミュレータの内部状態とを波形を保存する機能です。この機能は、少し込み入っています。実装は終わっていますが、
当面、異なるVersion間での互換はありません。また、Defaultの設定では、1.5GB程度Diskを消費します。予めDiskスペースがあることを御確認ください。
この機能を使うには、別にプロジェクトを作成する必要があります。


プロジェクトの移行を例で見ていきましょう。

samples\physical_to_disk.vtakprj をロードしてみてください。
このプロジェクトは、簡単なカウンタのプロジェクトです。走らせて波形を出してみてください。

 

このプロジェクトを別な名前でSaveしてSave/Rrestore用のプロジェクトを作成します。下のダイアログで、Save to Physical Disk にチェックを入れて
適当な名前をつけSaveします。(Waveform Manager は常にONになります)



プロジェクトをロードします。Reloadではなく、ファイルダイアログからロードしてください。





ロードは下図のように最初は失敗します。
Save/Restore 用のプロジェクトでは、まず最初にRecompileする必要があります。


ReCompileボタンで、通常通りコンパイルします。Save to phsical diskプロジェクトでは、これがコンパイル命令になります。
また、Reloadは、コンパイルは行われずに、状態Saveしたオブジェクトのロードである点にご注意ください。

1秒間程度Runさせると次のようになります。
コンパイラステータス画面で、時刻324190で、Saveが行われたことが分かります。



Reloadボタンを押すと
時刻324190の状態にRestore されます。



下図ボタンを押すと波形も再現されることが分かります。Diskは、不揮発メモリですので、Reloadでなくても、このプロジェクトをロードすれば、最後にSaveした状態に復帰します。復帰した状態から、さらにシミュレーションを継続できます。



Viewに信号を追加してみましょう。



先ほどと同じく1秒間程、RUNさせてみます。





Reloadしてみると、最後にSaveされた状態で再現します。









Veritakでは、信号の保存Saveとして

と二つに分けてSaveしています。


圧縮した数GBに渡る波形履歴のSaveは可能ですが、Viewにない信号を追加するには、Diskから拾ってくるので、時間がかかることにご留意ください。たとえば、HDDの転送レートが50MB /SECで、5GBのアーカイブを保存したとしたら、キャッシュは、もう効きませんので、いかに高速なCPUであっても100sec必要になってしまいます。 そこで、以下に述べるプロジェクト例を参考にして、最適なプロジェクトを構成してください。

また、シミュレータ状態の保存としても専用のファイル、

を使用しています。一旦状態が保存されると次回プロジェクトロード時は、この保存された状態から始まります。
ソースの更新で自動で、ReCompileする機能は、装備しておりません。ソースを更新した場合は、手動で、ReCompileを行ってください。保存を解除するのは、次のいずれかの場合で、

です。この場合、通常のソースからのコンパイルを試みます。生成中にKillボタン等が押された場合には、異常なフォーマットのファイルができてしまいます。その場合は、ReCompileから作業をやり直してください。

以下は、いくつかのプロジェクト例です。

常に時刻0で始まるプロジェクト

コンパイル直後に一回だけ状態保存すれば、常に時間0から始まる(つまりコンパイルの手間だけを省いた)プロジェクトを作れます。(非常に大規模なソースでは、高速コンパイラであるVeritakでもコンパイルに6分かかる例もありました。そういう場合に有用です。メモリ使用量が600MB->200MB に、コンパイル時間6分->Loading Time が20secになった例もあります。)

コンパイル直後に一回だけ保存するために、以下の通り設定し、Save ->ReCompileを実行します



これで、Reloadする度にTime=0から始まるプロジェクトができました。
このプロジェクトでPauseボタンを押しても、、保存は、Compilation 一回(one)で終わっていますので、保存されません。
常に時刻0より始まるプロジェクトになります。また、Elaboration で消費するメモリがありません使用メモリ容量(veritak2.exe)も大体1/2以下になります。



波形履歴だけのプロジェクト



上の設定で、TimesをEveryにして$stop/$finishにチェックを入れてReCompile
最後まで走らせます。そうするとシミュレータの状態は、シミュレーションが終了した状態での保存、波形は、$finishまでの全履歴
保存ということになります。イベントがなくなった状態になりますので、シミュレータは実質、なにも動きません。


デバッグ地点まで波形を保存したくない。
大容量の波形を保存する場合は、シミュレーション速度の低下が顕著になります。デバッグポイントに行くまでは、不要な波形を削って速度低下をできるかぎり抑えたい場合のプロジェクトです。前のプロジェクトで、Disable Waveforms until ...$stop/$finish ,Every にチェックを入れて、Save=>、ReCompile=> Go を実行します。なお、「Saveまで、Viewは、見ることができない。。」のメッセージが出ます。
しばらくして、$stop で止まります。この段階では、未だ保存されません。保存されるのは、次の時刻に行く直前です。
したがって、 次にGo ボタンを押したときにSave動作が行われます。



最終的に次の画面となりました。これは、シミュレータのSave保存をおこなった時刻は、2000070、波形Saveがスタートしたのは、
それより少し前の199990から始まったことを示しています。波形Saveのスタートは、平均で500タイムステップ以前から始まります。
(波形アーカイブは、約1000タイムステップを一つのブロックとして保存している関係でこのようになります。)
最初からDisplayにある信号は、vtakwave の方にSaveしており、トリガとは無関係に常にSaveですので、時刻0からValidな表示になります。


ところが、
信号を追加するとSaveが行われるまでの間INVLAIDを示す色になります。Displayにない信号は、圧縮したアーカイブから拾ってきますが、このアーカイブへの保存がトリガ信号が来るまでDisableされていたために、INVALIDになっています。



なお、プロジェクトのチェックをone にすると、そのトリガ時の一回だけのSaveになります。Restoreすると、トリガ時点での状態復帰となります。実行順序に依存するデバッグ等、繰り返し、実行状態ををVeripad上で追って見たい場合に有効なオプションです。

プロジェクト設定変更は、ReCompileが必要です。RunLengthは、コンパイルなしに変更が可能です。


制限事項