modelsim

modelsimの使い方。

今のところ自分専用のメモ書き。

vlib work

vlog source_file

vsim

動作モード

guiモードで起動

vsim -gui

guiモードで起動(波形ファイル読み込み)

vsim -gui -view vsim.wlf

コマンドラインモードで起動

vsim -c

バッチモードで起動

vsim < batchfile

(バッチファイルをvsimにリダイレクトすると、バッチモードで動作する)

vlogの引数

ファイルの検索

シミュレーション実行ディレクトリとrtl等が存在するディレクトリが異なる場合、-yでディレクトリを指定できる。ただし、デフォルトではソースファイルとして.v拡張子を持ったものを自動で探してくれないようなのでlibextの指定も必要。

また、インクルードファイルのディレクトリの指定には+incdir+を使用する。

ここらへんのオプションはVerilog-XLやVSC等、他社ツールでも同じように使える。

vlog +incdir+../rtl +libext+.v -y ../rtl test.v

lintオプション

-lintを引数に指定することで、ある程度のlintチェックを行ってくれる。初期デバッグにはかなり便利。

vlog -lint test.v

動作設定ファイル

modelsim.iniもしくはプロジェクトファイル(projectname.mpf)で設定する。

modelsim.iniはmodelsimを使用する時に常に適用する設定、プロジェクトファイルはプロジェクト毎の設定という切り分け。

これらのファイルが読み込まれるタイミングとサーチの順番はUser's ManualのAppendix GのSystem Initializationに詳しく記述されている。

    1. modelsim.ini。あちこちのディレクトリから探そうとする。詳しい順番はマニュアル参照

    2. Windowsのレジストリに記録された、もっとも最近にロードされた?modelsim実行時のプロジェクトファイル(新規作成、セーブしたものは記録されず、ロードされたもののみが記録されているような気がする)

Windowsの場合は、読み込むプロジェクトファイルがカレントディレクトリには関係ないことに注意。

vsimのコマンドラインからwhereコマンドで、どのプロジェクトファイルを使用しているかを確認できる。ただし、プロジェクトファイルを読み込んでしまうと、どのmodelsim.iniを使用しているかは表示してくれないので注意

プロジェクトファイルは、modelsimをprojectを閉じたときやmodelsimを終了させた時に自動で設定内容が更新される。特にファイルを上書きするかどうかをたずねたりはしてこない。テキストファイルなので、エディタでも編集可能なのだが、modelsimが好き勝手にいじる設定ファイルのような位置づけになっている。

vsimのコマンド

add wave *

全ての波形をwlfに記録する

run -all

シミュレーションを最後まで実行する

波形デバッグ時の、表示している波形等の情報は、window format fileである.doに保存する。

波形ウィンドをアクティブにした状態で(他ウィンドウをアクティブにした状態では不可)

File > Save Format...

で行う。

読み込みは、ウィンドウから

File > Load

またはコマンドラインから

do filename.do

で行う。

別プロセスでシミュレーションを行って、その結果ファイルを現在の波形デバッグウィンドウに反映させるには(いわゆる、リロードの動作)

dataset restart

Altera Mega FunctionのRTLモデル

Mega Function Wizardで吐き出すIPのRTLはラッパのみで、実質的な中身は別の場所にある。

QuartusのMegafunctionウィザードを起動して、右上の"Documentation"ボタンを押すと、そのIPについてのいろいろな情報が表示されるが、その中の"Simulation Library:"の項目に本体のモデルのパス等の情報があるので、これをライブラリに指定する。

例えば、内部メモリのマクロの指定は以下のようになる。

vsim -v c:/Altera/10.1sp1/quartus/eda/sim_lib/altera_mf.v