Intel FPGAのEDAツールであるQuartus PrimeとHDLシミュレーションツールであるModelSimASE(Altera Starter Edition)1を用いたFPGAのプロジェクト開発について解説する. Quartusが使えるようになるということが目的ではなく, コマンドライン操作との対応関係をまとめるのが目的である.
これらツールのバージョンは以下の通り.
1 Intel FPGAになってもいまだにASEで呼ばれることが多い.
Quartus Prime 18.0.0 Build 614 04/24/2018 SJ Lite Edition
ModelSim - Intel FPGA Starter Edition 10.5b 2016.10
FPGAのプロジェクト開発は以下の流れで行う. デバイス設定やピンアサインメント, タイミング制約などに関しては言及しない.
- Quartus GUI立ち上げ
- プロジェクト作成
- プロジェクトファイル登録
- コンパイル
- Quartus Prime+ModelSimASE連携
- シミュレーション
以下でこれらの項目でのツールの使用方法について説明する. QuartusやModelSimのGUIにおける操作とコマンドラインやファイルを使ったスクリプトによる操作を対比して説明する.
0. Quartus GUIの立ち上げ
Quartus Primeの統合ツール(GUI)はインストールディレクトリ以下にある.
intelFPGA_lite/18.0/quartus/bin64/quartus
(Windows版では.exe形式であるが、どうせ余計なので以下ではLinux版に合わせて、ツールはすべて実行形式で示す.)
これを実行するとQuartus GUIが立ち上がる.
1. プロジェクト作成
Quartus GUIの立ち上げ時のスタートページ, またはツールバーのFile >
から「New Project Wizard」を選択するとプロジェクトの作成を行うことができる. プロジェクトの作成時点でプロジェクトの実ファイルである<project>.qpf
とプロジェクトの設定ファイルである<project>.qsf
が生成される.

コマンドライン上からは以下のコマンドで<project>
というプロジェクトを作成することができる.
quartus_sh --tcl_eval project_new <project>
2. プロジェクトファイル登録
「New Project Wizard」でプロジェクトを作成する際に「Add Files」から既存のファイルを追加することができる. またツールバーからProject > Add/Remove Files in Project...
を選択しても同様にファイルを追加できる.
プロジェクトの設定は<project>.qsf
ファイル内に記述されており, これに追記することでファイルを追加することができる.
ファイル種別 | 記述 |
---|---|
VHDL | set_global_assignment -name VHDL_FILE <file>.vhd |
Verilog HDL | set_global_assignment -name VERILOG_FILE <file>.v |
System Verilog | set_global_assignment -name SYSTEMVERILOG_FILE <file>.sv |
Block Design Files | set_global_assignment -name BDF_FILE <file>.bdf |
Quartus IP File | set_global_assignment -name QIP_FILE <file>.qip |
Qsys file | set_global_assignment -name QSYS_FILE <file>.qsys |
3. コンパイル
プロジェクトのコンパイルは以下の項目を実行することをさす.
- Analysis & Synthesis(論理合成)
- Fitter(配置配線)
- Assembler(プログラミングファイル生成)
- Timing Analysis(タイミング解析)
- EDA Netlist writer(ネットリストファイル生成)
ツールバーからProcessing > Start Compilation
を選択すると, 上記すべてを実行するコンパイルができる.
コマンドライン上からは以下のコマンドで<project>
というプロジェクトのコンパイルを実行できる.
quartus_sh --flow compile <project>
1. Analysis & Synthesis
プロジェクト作成初期や有償のIPの検証時は「Analysis & Synthesis」のみの実行が有用である. ツールバーからProcessing > Start > Start Analysis & Synthesis
を選択すると実行できる.
コマンドライン上からは以下のコマンドで<project>
というプロジェクトの「Analysis & Synthesis」を実行できる.
quartus_map <project>
またこのコマンドから各種ファイルの変換を行うことができる. もちろんGUIでも該当する操作を行うことができる.
Block Design File → HDL
ツールバーからFile > Create / Update > Create HDL Design File from Current File
quartus_map <project> --convert_bdf_to_vhdl=<file>(.bdf)
quartus_map <project> --convert_bdf_to_verilog=<file>(.bdf)
HDL → Block Symbol File(.bsf)
ツールバーからFile > Create / Update > Create Symbol Files for Current File
quartus_map <project> --generate_symbol=<file>(.vhd/.v/.sv)
2. Fitter
プロジェクトのRTL記述などが固まった時点でデバイスの変更やピンアサインメントを行う場合は「Fitter」のみの実行が有用である. ツールバーからProcessing > Start > Start Fitter
を選択すると実行できる.
コマンドライン上からは以下のコマンドで<project>
というプロジェクトの「Fitter」を実行できる.
quartus_fit <project>
3. Assembler
同じ文章が続いてだんだん飽きてきたがコンフィグレーション設定の変更のみを行いたい場合などは「Assembler」のみの実行が有用であるそんなことあるか?. ツールバーからProcessing > Start > Start Assembler
を選択すると実行できる.
コマンドライン上からは以下のコマンドで<project>
というプロジェクトの「Assembler」を実行できる.
quartus_asm <project>
4. Timing Analysis
タイミング制約を行いたい場合などは「Timing Analysis」のみの実行が有用である. ツールバーからProcessing > Start > Timing Analysisr
を選択すると実行できる.
quartus_sta <project>
4. EDA Netlist writer
ツールバーからProcessing > Start > EDA Netlist writer
を選択すると実行できる.
quartus_eda <project>
5. Quartus Prime+ModelSimASE連携
QuartusではNativeLinkという機能により外部のEDAシミュレーションツールと連携してテストベンチシミュレーションを行うことができる.
Quartus Primeから外部のEDAツールを利用するためには, まずQuartusに使用するツールを登録しなければならない. ツールバーからTools > Options...
を選択し, 「Options」の設定画面を表示する. 「Category」のGeneral > EDA Tool Options
を選択する. ここで使用するEDAツールのパスを登録することができる. ここではModelSimASEを使用するため「ModelSim-Altera」にパス(intelFPGA_lite\18.0\modelsim_ase\win32aloem\
)を登録する. この操作はQuartusに記憶されるため一度限りである.

また各プロジェクトでEDAツールの選択とテストベンチファイルの設定を行う. ツールバーからAssignments > Settings...
を選択し, 「Settings」の画面から「Category」のEDA Tool Settings > Simulation
を選択する. 「Simulation」の画面で以下の項目を設定する. なおTime scaleの項目は無視される.
項目 | 内容 |
---|---|
Tool name | ModelSim-Altera |
Format for output netlist | System Verilog HDL |
Time scale | 1ns |
Compile test bench | <testbench> |

項目 | 内容 |
---|---|
Name | <testbench> |
Test Bench File(s) | <file>.sv |

これらの項目は<project>.qsf
ファイル内に以下のように記述されている.
set_global_assignment -name EDA_SIMULATION_TOOL "ModelSim-Altera (SystemVerilog)"
set_global_assignment -name EDA_TIME_SCALE "1 ns" -section_id eda_simulation
set_global_assignment -name EDA_OUTPUT_DATA_FORMAT "SYSTEMVERILOG HDL" -section_id eda_simulation
set_global_assignment -name EDA_TEST_BENCH_ENABLE_STATUS TEST_BENCH_MODE -section_id eda_simulation
set_global_assignment -name EDA_NATIVELINK_SIMULATION_TEST_BENCH <testbench> -section_id eda_simulation
set_global_assignment -name EDA_TEST_BENCH_NAME <testbench> -section_id eda_simulation
set_global_assignment -name EDA_DESIGN_INSTANCE_NAME NA -section_id <testbench>
set_global_assignment -name EDA_TEST_BENCH_MODULE_NAME <testbench> -section_id <testbench>
set_global_assignment -name EDA_TEST_BENCH_FILE <file>.sv -section_id <testbench>
5. シミュレーション
ツールバーのTools > Run Simulation Tool > RTL Simulation
からシミュレーションを実行できる.

このときNativeLink機能によりsimulation/modelsim/
以下にModelSim用のスクリプトファイル(*.do
)が生成され, このスクリプトが実行される.
スクリプトファイルの生成をコマンドラインで実行するには以下のように該当するTclスクリプトを使用する.
quartus_sh -t intelFPGA_lite\18.0\quartus\common\tcl\internal\nativelink\qnativesim.tcl --rtl_sim <project>
また*.do
ファイルはModelSimのコマンドライン実行でも実行することができる.
vsim -do <file>.do
Tips
各種コマンドはBashコマンドと組み合わせるとよい
ex. プロジェクトファイル登録
find . -name ".vhd" | xargs -I% echo "set_global_assignment -name VHDL_FILE %" >> <project>.psf
NativeLinkによって生成されたスクリプトはタイムスケールが1ps固定
EDA Settingsに記載しても, テストベンチファイル内に `timescale
を記載してもすべて無視される. *.do
ファイル生成用Tclスクリプト内にvsim -t 1ps
が直書きされているためである. *.do
ファイルの書き換えのみで対応可能である.
Message Viewerの表示
ModelSimにはシミュレーション実行時のメッセージを表示する機能がある. ツールバーのView > Message Viewer
で表示できる. しかしシミュレーション実行時に設定が必要なため, *.do
ファイルを以下のように書き換える必要がある.
- vsim
+ vsim -msgmode both -displaymsgmode both
参考
インテル Quartus Prime プロ・エディション ユーザーガイド: スクリプティング
Intel Quartus Prime Pro Settings File Reference Manual
Quartus Prime - EDA ツールの設定方法
0 件のコメント:
コメントを投稿