ModelSimコマンドライン実行用シェルスクリプト(VHDL)

設計

ModelSimコマンドライン実行用スクリプトのVHDL版です。

ModelSimは、コマンドラインで直接実行することができます。例えば、次のようなシェル・スクリプト作ってModelSimの処理を記述しておくと、LinuxのターミナルやWindowsのcygwinからコマンドラインで実行できます。

$../bin/run_msim.sh ../scenario/test_1.vhd

シェル・スクリプトの内容は次のとおりです。(このシェル・スクリプトは、サーチパスにModelSimのインストール・ディレクトリが含まれていることを前提としています)

#!/bin/sh

# RTL directory
RTL_DIR="../rtl"

# ステップ1 ワークディレクトリの作成
if [ ! -e ./work ]; then
    vlib ./work
fi

sim_file=$1
echo "Test Scenario=" $sim_file
vhdl_files="${RTL_DIR}/mod_a.vhd ${RTL_DIR}/mod_b.vhd ${RTL_DIR}/mod_top.vhd"

# ステップ2 デザインのコンパイル
vcom  ${vhdl_files}  ${sim_file}

# ステップ3 シミュレーションの実行
vsim -c -keepstdout test_module <<EOF
vcd file dumpvars.vcd
vcd add -r /test_module/*
run -all
quit
EOF

実際に実行できる環境をgithubにおきました。

Kenji-Ishimaru/msim-sample-vhdl
ModelSim VHDL simulation environment sample. Contribute to Kenji-Ishimaru/msim-sample-vhdl development by creating an account on GitHub.

シェルスクリプトの処理

シェル・スクリプトで行っている処理は、次の3つです。

ステップ1: vlibでワークディレクトリを作成

vlibコマンドでModelSimのワークディレクトリを作成します。

if [ ! -e ./work ]; then
 vlib ./work
fi

 

ステップ2: vcomでコンパイル

vcomでデザインのコンパイルを行います。必要なVHDLファイルをすべてvcomに渡します。この例では、${vhdl_files}でデザインのファイルを、${sim_file}でテストベンチのファイルを指定しています。

vhdl_files="${RTL_DIR}/mod_a.vhd ${RTL_DIR}/mod_b.vhd ${RTL_DIR}/mod_top.vhd"
vcom  ${vhdl_files}  ${sim_file}

 

ステップ3: vsimでシミュレーションを実行

vsimでシミュレーション実行を実行します。ヒアドキュメント(<<EOF)を使うと、vsimに実行コマンドを渡せます。この例では、波形ファイル(vcd)の出力指定と出力範囲の指定(test_module以下の全信号)を行った後、run -allでシミュレーションを開始しています。GUIを使いたい場合は、スクリプトのvsim -c -keepstdoutの部分をvsim -guiにします。

vsim -c -keepstdout test_module <<EOF
vcd file dumpvars.vcd
vcd add -r /test_module/*
run -all
quit
EOF

 

Verilog版との違い

Verilog版との違いは、「ステップ2」です。Verilogではvlogを使ってデザインのコンパイルを行いますが、VHDL版ではvcomを使います。vlogでは、モジュールを格納したファイルのサーチパスを-yオプションで指定することでファイルの自動検索が行えますが、vcomではデザインのファイルをすべて明示的に指定する必要があります。

タイトルとURLをコピーしました