ModelSimで定期的にメモリダンプを取得するにはどうすればよいですか?
メモリデータをエクスポートする方法を知っています。1000 nsごとまたはxサイクルごとにメモリデータをエクスポートするコマンドを.doファイルに書き込む方法はありますか?
アップデート:
答えてくれてありがとう。私が今それをしている方法:
mkdir -p mlog
set counter 0
set limit 30
while { true } {
run 100 us
incr counter +1
mem save -o ./mlog/spram1_${counter}.mem -f mti -data binary -addr hex /ram_tb/spram1/mem
mem save -o ./mlog/spram2_${counter}.mem -f mti -data binary -addr hex /ram_tb/spram2/mem
/path/to/third/mem
}
これは、以前にrun -allを使用したことがあり、シミュレーションがいつ停止するかわからない場合です。もちろん、VHDLテストケースには次のようなものが必要です。
ASSERT false
REPORT "### End of Simulation!"
SEVERITY failure;
シミュレーションを終了します(より良い方法については、以下の回答を参照してくださいが、これは機能します)
シミュレーションの実行時間がわかっている場合は、次の方法を使用することもできます。
mkdir -p mlog
set counter 0
set limit 10
while { $counter < $limit } {
run 1 ns
incr counter +1
mem save -o ./mlog/filename1_${counter}.mem -f mti -data binary -addr hex /path/to/another/mem
mem save -o ./mlog/filename2_${counter}.mem -f mti -data symbolic -addr hex -wordsperline 1 /path/to/mem
## mem save -o ./mlog/anotherfile ...
}
「10ns実行」を置き換えることができます
または、シミュレーションの終了を示す信号を使用することもできます
signal end_of_sim : std_logic := '0';
...
end_of_sim <= '1'
およびdoファイル内:
when -label end_of_simulation {/end_of_sim == '1'} {
echo "End of simulation";
stop ;
#quit -f
}