toms.log
2020/01/02
Quartus Prime + ModelSimASEによるFPGAプロジェクト開発
Intel FPGAのEDAツールであるQuartus PrimeとHDLシミュレーションツールであるModelSimASE(Altera Starter Edition)[${}^1$](#footnote1)
を用いた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のプロジェクト開発は以下の流れで行う. デバイス設定やピンアサインメント, タイミング制約などに関しては言及しない. 0. Quartus GUI立ち上げ 1. プロジェクト作成 2. プロジェクトファイル登録 3. コンパイル 4. Quartus Prime+ModelSimASE連携 5. シミュレーション 以下でこれらの項目でのツールの使用方法について説明する. 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」を選択するとプロジェクトの作成を行うことができる. プロジェクトの作成時点でプロジェクトの実ファイルである`
.qpf`とプロジェクトの設定ファイルである`
.qsf`が生成される.
コマンドライン上からは以下のコマンドで`
`というプロジェクトを作成することができる. ```bash quartus_sh --tcl_eval project_new
``` ## 2. プロジェクトファイル登録 「New Project Wizard」でプロジェクトを作成する際に「Add Files」から既存のファイルを追加することができる. またツールバーから`Project > Add/Remove Files in Project...`を選択しても同様にファイルを追加できる. プロジェクトの設定は`
.qsf`ファイル内に記述されており, これに追記することでファイルを追加することができる. | ファイル種別 | 記述 | | ------------------ | ---------------------------------------------------------- | | VHDL | `set_global_assignment -name VHDL_FILE
.vhd` | | Verilog HDL | `set_global_assignment -name VERILOG_FILE
.v` | | System Verilog | `set_global_assignment -name SYSTEMVERILOG_FILE
.sv` | | Block Design Files | `set_global_assignment -name BDF_FILE
.bdf` | | Quartus IP File | `set_global_assignment -name QIP_FILE
.qip` | | Qsys file | `set_global_assignment -name QSYS_FILE
.qsys` | ## 3. コンパイル プロジェクトのコンパイルは以下の項目を実行することをさす. 1. Analysis & Synthesis(論理合成) 2. Fitter(配置配線) 3. Assembler(プログラミングファイル生成) 4. Timing Analysis(タイミング解析) 5. EDA Netlist writer(ネットリストファイル生成) ツールバーから`Processing > Start Compilation`を選択すると, 上記すべてを実行するコンパイルができる. コマンドライン上からは以下のコマンドで`
`というプロジェクトのコンパイルを実行できる. ```bash quartus_sh --flow compile
``` ### 1. Analysis & Synthesis プロジェクト作成初期や有償のIPの検証時は「Analysis & Synthesis」のみの実行が有用である. ツールバーから`Processing > Start > Start Analysis & Synthesis`を選択すると実行できる. コマンドライン上からは以下のコマンドで`
`というプロジェクトの「Analysis & Synthesis」を実行できる. ```bash quartus_map
``` またこのコマンドから各種ファイルの変換を行うことができる. もちろんGUIでも該当する操作を行うことができる. **Block Design File → HDL** ツールバーから`File > Create / Update > Create HDL Design File from Current File` ```bash quartus_map
--convert_bdf_to_vhdl=
(.bdf) quartus_map
--convert_bdf_to_verilog=
(.bdf) ``` **HDL → Block Symbol File(.bsf)** ツールバーから`File > Create / Update > Create Symbol Files for Current File` ```bash quartus_map
--generate_symbol=
(.vhd/.v/.sv) ``` ### 2. Fitter プロジェクトのRTL記述などが固まった時点でデバイスの変更やピンアサインメントを行う場合は「Fitter」のみの実行が有用である. ツールバーから`Processing > Start > Start Fitter`を選択すると実行できる. コマンドライン上からは以下のコマンドで`
`というプロジェクトの「Fitter」を実行できる. ```bash quartus_fit
``` ### 3. Assembler ~~同じ文章が続いてだんだん飽きてきたが~~コンフィグレーション設定の変更のみを行いたい場合などは「Assembler」のみの実行が有用である~~そんなことあるか?~~. ツールバーから`Processing > Start > Start Assembler`を選択すると実行できる. コマンドライン上からは以下のコマンドで`
`というプロジェクトの「Assembler」を実行できる. ```bash quartus_asm
``` ### 4. Timing Analysis タイミング制約を行いたい場合などは「Timing Analysis」のみの実行が有用である. ツールバーから`Processing > Start > Timing Analysisr`を選択すると実行できる. ```bash quartus_sta
``` ### 4. EDA Netlist writer ツールバーから`Processing > Start > EDA Netlist writer`を選択すると実行できる. ```bash quartus_eda
``` ## 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 | `
` |
| 項目 | 内容 | | ------------------ | ------------- | | Name | `
` | | Test Bench File(s) | `
.sv` |
これらの項目は`
.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
-section_id eda_simulation set_global_assignment -name EDA_TEST_BENCH_NAME
-section_id eda_simulation set_global_assignment -name EDA_DESIGN_INSTANCE_NAME NA -section_id
set_global_assignment -name EDA_TEST_BENCH_MODULE_NAME
-section_id
set_global_assignment -name EDA_TEST_BENCH_FILE
.sv -section_id
``` ## 5. シミュレーション ツールバーの`Tools > Run Simulation Tool > RTL Simulation`からシミュレーションを実行できる.
このときNativeLink機能により`simulation/modelsim/`以下にModelSim用のスクリプトファイル(`*.do`)が生成され, このスクリプトが実行される. スクリプトファイルの生成をコマンドラインで実行するには以下のように該当するTclスクリプトを使用する. ```bash quartus_sh -t intelFPGA_lite\18.0\quartus\common\tcl\internal\nativelink\qnativesim.tcl --rtl_sim
``` また`*.do`ファイルはModelSimのコマンドライン実行でも実行することができる. ```bash vsim -do
.do ``` ## Tips ### 各種コマンドはBashコマンドと組み合わせるとよい **ex. プロジェクトファイル登録** ```bash find . -name ".vhd" | xargs -I% echo "set_global_assignment -name VHDL_FILE %" >>
.psf ``` ### NativeLinkによって生成されたスクリプトはタイムスケールが1ps固定 EDA Settingsに記載しても, テストベンチファイル内に`` `timescale``を記載してもすべて無視される. `*.do`ファイル生成用Tclスクリプト内に`vsim -t 1ps`が直書きされているためである. `*.do`ファイルの書き換えのみで対応可能である. ### Message Viewerの表示 ModelSimにはシミュレーション実行時のメッセージを表示する機能がある. ツールバーの`View > Message Viewer`で表示できる. しかしシミュレーション実行時に設定が必要なため, `*.do`ファイルを以下のように書き換える必要がある. ```diff - vsim + vsim -msgmode both -displaymsgmode both ``` ## 参考 [インテル Quartus Prime プロ・エディション ユーザーガイド: スクリプティング](https://www.intel.co.jp/content/www/jp/ja/programmable/documentation/sbv1513989262284.html) [Intel Quartus Prime Pro Settings File Reference Manual](https://www.intel.co.jp/content/www/jp/ja/programmable/documentation/eca1490998903550.html) [Quartus Prime - EDA ツールの設定方法](https://www.macnica.co.jp/business/semiconductor/articles/pdf/ELS1408_Q1510_10__1.pdf)
0 件のコメント:
コメントを投稿
次の投稿
前の投稿
ホーム
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿