xilinx ip を含む modelsim でのシミュレーション

簡単なのはvivado のプロジェクトを使う方法だが、modelsimのguiを使いたくない場合や、systemverilogを使いたい場合があり、vivadoプロジェクトだとできないことがある。(できるかもしれないけど、とりあえず)

modelsimは自分でdofileまたはmakefileを作ったほうが痛いところに手がとどくし、make なにがしでシミュレーション実行まで出来るようになる。

simlibの作成

vivadoのtclコマンドで作れる

compile_simlib -language all -dir {hoge/simlib} -simulator modelsim -simulator_exec_path {C:/modelsim/win32pe} -library all -family  all

simlibをコンパイルしたら、シミュレーションmakefileで下記を追加しておけばOK

	vlib $(simlib_dir)/secureip
	vmap secureip $(simlib_dir)/secureip
	vlib $(simlib_dir)/unimacro
	vmap unimacro $(simlib_dir)/unimacro
	vlib $(simlib_dir)/unifast
	vmap unifast $(simlib_dir)/unifast
	vlib $(simlib_dir)/unisim
	vmap unisim $(simlib_dir)/unisim
	vlib $(simlib_dir)/unimacro_ver
	vmap unimacro_ver $(simlib_dir)/unimacro_ver
	vlib $(simlib_dir)/unifast_ver
	vmap unifast_ver $(simlib_dir)/unifast_ver
	vlib $(simlib_dir)/unisims_ver
	vmap unisims_ver $(simlib_dir)/unisims_ver
	vlib $(simlib_dir)/simprims_ver
	vmap simprims_ver $(simlib_dir)/simprims_ver

ip のmodelsimライブラリ化

簡単なのは一回vivadoでmodelsim ターゲットでシミュレーションを行うこと。

それにより、シミュレーション起動のdoファイルが生成サれるため、そのdoファイルからvlib,vcom,vlog,vmapをコマンドを自分のmakefileにコピペしておけばOK

自作コード

自作コードは普通にvlog,vcomで追加。

実行制御

vsimのオプションで-do "..."で自動実行と終了ができる。
シミュレーション内で結果ファイルを出力してるならばguiを起動させないために

vsim hoge_top -c -do "run ?ms; exit"

としておけばguiが立ち上がらず実行して自動で終了する。