シミュレーションは、テストベンチを作る手間がかかりますが、バグ取りがラクなので結局は早道です。備忘録として無償のModelSim - Intel FPGA Starter Editionを使った例を紹介します。
SRC4382とVerilogモジュールの接続イメージ
サンプルレートコンバータをスレーブモードで動作させるため、各種のクロック信号はDE0-nanoが供給します。さらにデジタルオーディオのPCMデータをシリアル・パラレル変換、パラレル・シリアル変換します。これをasrc_ifというモジュールに記述します。Quartusの事前設定
- Assignments ⇒ Settings ⇒ EDA Tool Settings(Simulation) ⇒ Tool name に "ModelSim-Altera"と指定。※"ModelSim"ではありません
- Tools ⇒ Options ⇒ EDA Tool Options の ModelSim-Alteraに C:\intelFPGA_lite\16.1\modelsim_ase\win32aloem と指定。
- ModelSimを起動するには、QuartusからTools ⇒ Run Simulation Tool ⇒ RTL Simulationとします。
新規プロジェクトの作成
- ModelSimで、File ⇒ New ⇒ Project とし、プロジェクト名を適当に指定します。Add items to the Projectウインドウが現れるが、何もせず閉じます。
- Project ⇒ Add to Project ⇒ Existing File として、シミュレーション対象のVerilogファイルを指定します。
- Project ⇒ Add to Project ⇒ New File として、テストベンチを新規作成・追加します。Add file as typeでVerilogを指定しておきます。保存場所はシミュレーション対象と同じフォルダが良いようです
- Compile ⇒ Compile All してテストベンチをコンパイルします。コンパイル結果は、プロジェクト ペインのStatusで確認できます。
シミュレーションの実行
- もしメガファンクションが含まれる場合は、メガファンクションのシミュレーションライブラリを登録します。シミュレーションライブラリ名は、MegaWizardの途中で表示されます。
- シミュレーションライブラリを登録は、Simulate ⇒ Start Simulation ⇒ Librariesタブ ⇒ Search Libraries( -L )欄のAdd ⇒ altera_mf_verを指定。verilog用なので _verのサフィックスが付きます
- 次にDesignタブでワーキングライブラリ(デフォルト名work)内でテストベンチを指定します。メガファンクション ALTPLLを使うときは、Resolutionを1psにしなくてはダメという場合もあるようです。
- Simulation Configurationに保存
ところでStart Simulation の設定は保存されないので、保存したいときはSimulation Configurationを使います。Project ⇒ Add to Project ⇒ Simulation Configurationで適当な名前を付けます。すると、ProjectペインにConfiguration名の項目が現れるので、次回からはこれをクリックします。
- シミュレーション結果を波形表示させるため、テストベンチを右クリックしてWaveウインドウに項目を追加します。
- シミュレーション時間を指定して Run をクリックしてシミュレーションを実行します。
- 無事波形が出ました。テストベンチでパラレル・シリアル変換とシリアル・パラレル変換をループバックさせたところミスを発見。1カ所修正して、シミュレーションでは動作できることがわかりました。
参考資料
使用したVerilogファイルとテストベンチ
module asrc_if
(
CLK,
RST,
LCH_IN,
RCH_IN,
LCH_OUT,
RCH_OUT,
SRC_MCLK,
SRC_RST,
SRC_BCK,
SRC_LRCK,
SRC_DOUT,
SRC_DIN,
SRC_LOCK
);