目次
はじめに
時々必要になるが、その時には多分忘れているであろう知識を書き残しておく。
Questa Intel FPGA Edition のセットアップ
Quartus Prime のインストール時に同時にインストールできる(インストーラの画面でチェックを入れる)が、そのままでは使えない。下記のページにあるように、ライセンスの設定が必要。これは罠。
Questa* – Intel® FPGA Starter Edition ライセンスファイルの取得および設定方法
NativeLink で起動したシミュレータのコマンドライン操作
NativeLink 機能を使うと IP を含むプロジェクトが正しくシミュレーションできるよう、Quartus Prime がお膳立てしてシミュレータを起動してくれる。そこまではいい。
では、その後でテスト・ベンチを更新したり、新しく自作モジュールを追加したりした後に Quartus Prime に戻らずに(つまりシミュレータを再起動せずに)再コンパイルとシミュレーションの再実行を行うにはどうすればよいか?
Quartus Prime のプロジェクト > Settings > EDA Tool Settings > Simulation > Output directory で示された場所(起動したシミュレータのカレント・ディレクトリと一致する)にシミュレーション用の Tcl スクリプト・ファイルが生成される。スクリプト・ファイルの名前は [top entity name]_run_msim_rtl_systemverilog.do である。これをエディタで開くと何が行われているのか解る。冒頭はディレクトリの準備や IP のコンパイルであり、自作の RTL ファイルのコンパイル(vlog ...
)がそれに続く。その後にシミュレーション実行(vsim ..., add wave *, run -all
)がある。
もちろん、この do ファイルを Tcl コンソールから再実行してもよいが、一般にベンダ提供の IP のコンパイルには時間が掛かるので、自作 RTL ファイルのみを再度コンパイルしたいことが多い。その際は前記 do ファイルをヒントに、変更・追加した RTL ファイルのみをコンパイルするコマンドを Tcl コンソールに打ち込み、vsim ..., run -all
を再実行すればよい。
コンパイラが Quartus Prime であるか否かを判定する
下記の Web ページで紹介されているように、ALTERA_RESERVED_QIS
が定義されているか否かで判る。
How to determine that synthesis is done in Quartus?
プロジェクトを再生するための必要十分なファイル群
Quartus Prime のプロジェクトを Git でバージョン管理する際に、どのファイルを管理対象とすれば(つまりそれ以外は消えてもいい)必要十分であるか知っておく必要がある。それは次のファイルである。
Quartus Prime Lite Edition / Pro Edition 共通
- プロジェクト情報ファイル:*.qpf, *.qsf
- 自分で作った HDL ファイル(*.sv 等)と制約ファイル (*.sdc)
- Platform Designer の情報ファイル:*.qsys
Quartus Prime Lite Edition 特有
IP 情報ファイル:*.qip, *.sip (前者が論理合成用、後者がシミュレーション用)qsys フォルダの中にもあったりする。
Quartus Prime Pro Edition 特有
IP 情報ファイル:*.ip これらは qsys フォルダの中にもあったりする。
Platform Designer 作った子階層の型名を変更する
検証環境:Quartus Prime Lite 23.1std
Platform Designer で ‘Add a new subsystem to the current system’ すると子階層が作られる。その際に「インスタンス名」はウィザードで指定できるが、「型名」は常に ‘subsystemA’ となる。これを変えるには次の手順が有効である。
- 一旦プロジェクトを閉じて VS Code 等でプロジェクトのフォルダをワークスペースとして開き、配下のファイル群中の ‘subsystemA’ を全て所望の型名に書き換える。
- subsystemA を名前に含むフォルダとファイルの名前の subsystemA の部分を所望の型名に書き換える。
Platform Designer で階層構造を作る例
Platform Designer で階層構造 (sub-system) を作り、かつ sub-system の配下の複数の Avalon-MM Agent の agent インタフェースを仲介機構
(Avalon-MM Pipeline Bridge) で⼀つの agent インタフェースにまとめて上位の階層に⾒せる具体例。