Article header bolg  1

シェフの気まぐれテストベンチ~NativeLink イリュージョン~

こんにちは、頭領です。
以前、Quartus® Prime の Testbench Template Writer を使った、誰でも簡単!テストベンチ・ファイルの生成方法を紹介しました。
今回はそのテストベンチ・ファイルを使った ModelSim®の RTL シミュレーションをスピーディに行う、イリュージョン・マジックをご紹介します!
材料は、あの時に使用したデザイン・ファイルおよび生成したテストベンチ・ファイル (.vt)(← もちろん入力信号のパターンは記述済み)、そして Quartus Prime 。

…と、その前に。イリュージョン・マジックのためのツール環境設定をお忘れなく。
Tools > Options > General 下の EDA Tool Options から、シミュレーションで使用する ModelSim の実行プログラム(Windows OS なら modelsim.exe)が格納されているフォルダの絶対パスが設定されているかを確認。できていれば、準備 OK!

Article header library 118745 pic01  3

では、開始!!

1. Assignments > Settings を開き、 EDA Tool Settings の Simulation タブを開く

2. NativeLink settings 欄で 「 Compile test bench 」 を選択し、右端の 「 Test Benches... 」をクリック

Article header library 118745 pic02  2

3. Test benches で 「 New... 」 をクリック

Article header library 118745 pic03  2

4. Test bench name にテストベンチの名前を入力し、 File name の [...] をクリックし該当するテストベンチ・ファイルを開き、「 Add 」をクリック
※ 「 Test bench and simulation files 」 欄に回路デザイン・ファイルを追加する必要ない

Article header library 118745 pic04  2

5. OK をクリックし、 Test benches のウィンドウで作成したテストベンチ・ファイルをクリックし、OK

6. Settings ウィンドウでOK
※ちなみに、 NativeLink settings 欄の 「 Use script to set up simulation 」 をチェックすると、ユーザーが作成したスクリプト・ファイルを使用できる


あとは Tools > Run Simulation Tool > RTL Simulation をクリックするだけで ModelSim が自動的に開き、ファイルのコンパイルからシミュレーションまで自動的に行って…

Article header library 118745 pic05  2

あれ???シミュレーションが自動で実行されていない…。エラーメッセージは出ていないのに、なぜ???

Article header library 118745 pic06  2

それに Transcript 欄に自分で run コマンドを手入力して実行しても、信号がハイ・インピーダンス状態になる…どうしよう。

「 設定を間違えていないか? Test Bench Settings の Test bench name に入力するのはファイル名ではない? 」 と自問自答して、設定画面を見直してみると…
確かにテストベンチのファイル名を入力したけれど… アッーーー!

Article header library 118745 pic07  2

モジュール名だ!テストベンチのファイル名とモジュール名が異なっている!そうか、ファイル名ではなく、モジュール名を入力するべきだったのか!
テストベンチ生成時にはファイル名は自動的にデザインの最上位階層のファイル名と同じになるが、モジュール名は Verlilog HDL の場合は「 ファイル名_vlg_tst 」 になってしまうのだ。
なので、上記 4 の Test bench name と Top level module in test bench では 「 sample_design_vlg_tst 」 と入力しなければならない。
上記3の Test Benchs で先ほど作成した設定を選択して Editi ボタンをクリック。Edit Test Bench Settings の Test bench name と Top level module in test bench を編集して、すべての設定画面を OK で閉じて…。
そして RTL Simulation をやり直すと…

Article header library 118745 pic08  2

ちゃんとシミュレーションが自動的に開始された!

NativeLink とは、 Quartus Prime 上で操作するだけで EDA ツールが実行される仕組みの名称である。
今回は Quartus Prime のプロジェクトに対しテストベンチの設定をしただけで、 EDA ツールである ModelSim によるシミュレーションが実行された。
まさに、イリュージョン・マジック!!
Quartus Prime の操作だけで ModelSim が自動的に起動し、対象のファイルを読み込んでシミュレーションを実行するというなんとも効率的なのだ。
NativeLink 機能があれば Quartus Prime と ModelSim 両方の操作を覚える必要がない。

ちなみに、 ModelSim が自動的に必要なファイルをコンパイルし、ノードを追加してシミュレーションを実行するという工程は、スクリプト・ファイルにより実現されている。スクリプトは Quartus Prime プロジェクト・フォルダの /simulation/modelsim に存在する .do ファイルである。

Article header library 118745 pic09  2

この .do ファイルの記述を見てみると、テストベンチを含むデザインのコンパイルの実行と、使用するライブラリ、シミュレーションの実行方法について記載されている。

つまり、 Quartus Prime で NativeLink を実行したことで、自動生成された ModelSim 用のスクリプト・ファイル、 .do ファイルが Quartus Prime から ModelSim へ 渡されていることになる。

Article header library 118745 pic10  1

自動生成された .do ファイルの中を見ると 「 run -all 」 となっているため、 テストベンチの記述内容によっては ModelSim 上で Break をしないとシミュレーションが終了しない。
例えばもし 「 500 us 」 シミュレーション時間を限定したいのであれば、 .do ファイル内のこの部分の記載を書きかえれば良い。
そして変更後は、 Quartus Prime に戻ることなく、 ModelSim 上で Tools > Tcl > Execute Macro をクリックし、編集した .do ファイルを指定すればOK!
いつでもシミュレーションを実行したい場合は、 ModelSim を起動し、 do ファイルを実行すれば、今までの工程が再現できる。

Quartus Prime は他の EDA シミュレーション・ツールとコラボレーションすることで、エンジニアの業務改善のための「イリュージョン」を起こしているのだ!

Article header hanako 25x25  58

ハナコのちょこっとポイント♪
ここで先輩であるハナコから追加情報です。
IP や Platform Designer(旧 Qsys)で作成したモジュールが含まれているデザインを NativeLink で RTL シミュレーションする場合には、それらモジュールの .qip ファイルおよび .sip ファイルをプロジェクトに登録する必要があります。
詳細は、MACNICA フォーラムで公開されている下記 TIPS の注意点(ハナコ’s ポイント)部分を必ずご覧ください。

【TIPS】ModelSim のシミュレーションをスクリプト(コマンド)で実行してみよう!②

関連情報

翔け新人!エンジニア奮闘記とは?

マクニカのエンジニアが新人時代に研修中に感じた疑問、制作実習での奮闘、発生したトラブルを解決するまでのフローなど紹介します。個性あふれる新人たちが奮闘から会得した実用的なノウハウを業務にご活用ください。

関連タグ