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

設計

(VHDL版の記事はこちら)

QuartusII ウェブエディシションに含まれているModelSim Altera Starter Editionは、ライセンス不要のVerilog/VHDLシミュレータです。

無償で利用できるシミュレータの中で、SystemVerilogが部分的にサポートされているのが特徴の1つです。

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

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

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

#!/bin/sh

# RTL directory
RTL_DIR="../rtl"

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

sim_file=$1
echo "Test Scenario=" $simfile

# ステップ2 デザインのコンパイル
vlog \
    +notimingchecks \
    -sv \
    -y ${RTL_DIR} \
    +incdir+${RTL_DIR}/+ \
    +libext+.v+ \
    ${sim_file}

# ステップ3 シミュレーションの実行
vsim  -c  -keepstdout  test_module <<EOF
run  -all

EOF

 

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

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

シェルスクリプトの処理

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

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

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

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

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

vlogでデザインのコンパイルを行います。-yや+incdirのオプションを使うと、指定したディレクトリから必要なモジュールをサーチしてコンパイルしてくれるので便利です。

 
vlog \
 +notimingchecks \
 -sv \
 -y ${RTL_DIR} \
 +incdir+${RTL_DIR}/+ \
 +libext+.v+ \
 ${sim_file}

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

vsimでシミュレーション実行を実行します。ヒアドキュメント(<<EOF)を使うと、vsimにrun -allなどの実行コマンドを渡せます。GUIを使いたい場合は、スクリプトのvsim -c -keepstdoutの部分をvsim -guiにします。

vsim  -c  -keepstdout  test_module <<EOF
 run -all
EOF

コマンドライン実行の利点

個人的には、次のような理由でコマンドライン実行を多用しています。

  • 実行手順を簡略化できる
  • GUIが起動するまでの待ち時間がない
  • テストベンチの最上位ファイルを引数で渡せば、テスト内容の変更が容易
タイトルとURLをコピーしました