Questa - 2022.1 日本語

Vitis Model Composer ユーザー ガイド (UG1483)

Document ID
UG1483
Release Date
2022-05-26
Version
2022.1 日本語

HDL Black Box ブロックは、既存の HDL ファイルをモデルに組み込む方法を提供します。モデルをシミュレーションする際、協調シミュレーションを使用してブラック ボックスを含めることができます。Questa HDL 協調シミュレーション ブロックは、1 つまたは複数のブラック ボックスの協調シミュレーションを設定および制御します。



シミュレーション中、各 Questa ブロックが Questa のコピーを 1 つ生成するので、Questa ライセンスを 1 つ使用します。ライセンス数が少ない場合は、複数のブラック ボックスで同じブロックを共有できます。

Questa ブロックは次を実行します。

  • ブラック ボックス HDL を Questa 内でシミュレーションするのに必要な VHDL と Verilog を追加で構築します。
  • Simulink シミュレーション開始時に Questa のセッションを起動します。
  • Simulink と Questa 間の通信を仲介します。
  • ブラック ボックス HDL のコンパイル時にエラーが検出された場合にレポートします。
  • シミュレーションが完了すると、適切な場合に Questa を終了します。
注記: Questa ブロックでサポートされるのは、Questa ツールのシンボリック基数のみです。シンボリック基数では、Questa で列挙型の実際の値が表示され、またオブジェクトの値がほかの基数形式に適した表現に変換されます。シンボリック基数の詳細は、Questa の資料を参照してください。

ブロック パラメーター

Simulink モデルでブロックのアイコンをダブルクリックすると、[Block Parameters] ダイアログ ボックスが開きます。

Basic タブ
Basic タブには、次のパラメーターがあります。
Run co-simulation in directory

Questa を起動するディレクトリを指定します。ディレクトリは、必要であれば作成されます。ブラック ボックス ファイルおよび Model Composer で協調シミュレーション用に作成される補助ファイルは、すべてこのディレクトリにコピーされます。既存のファイルは、メッセージなしで上書きされます。ディレクトリは、絶対パスまたは相対パスで指定できます。相対パスは、Simulink の .mdl ファイルのあるディレクトリを基準に解釈されます。

Open waveform viewer

Questa の波形ウィンドウを自動的に開き、標準的な信号のセットを表示します。表示される信号には、すべてのブラック ボックスのすべての入出力と、Model Composer から供給されるすべてのクロック信号とクロック イネーブル信号が含まれます。補助 Tcl スクリプトを使用すると、信号表示をカスタマイズできます。スクリプトを指定するには、[Add Custom Scripts] をクリックし、Script to Run After vsim フィールドにスクリプト名 (例: myscript.do) を入力します。

Leave Questa open at end of simulation

Simulink シミュレーションが終了した後も、Questa セッションを開いたままにします。

Skip compilation (use previous results)

Questa のコンパイル段階で、HDL 協調シミュレーションに Questa ブロックを使用しているすべてのブラック ボックスを完全にスキップします。このオプションをオンにすると、(1) Questa を実行したディレクトリの下に Questa の作業ディレクトリが含まれ、(2) その作業ディレクトリにすべてのブラック ボックス HDL の最新 Questa コンパイル結果が含まれるようになります。このオプションをオンにすると、シミュレーションの起動にかかる時間を大幅に短縮できますが、不適切な場合にオンすると、シミュレーションが実行されなかったり、実行されても誤った結果が生成される可能性があります。

Advanced タブ
Advanced タブには、次のパラメーターがあります。
Include Verilog unisim library

Questa でのシミュレーション時に Verilog UNISIM ライブラリを含めます。Questa では、Verilog UNISIM ライブラリが UNISIMS_VER にマップされている必要があります。また、このチェック ボックスをオンにすると、glbl.v モジュールがコンパイルされ、シミュレーション中に起動されます。

Add custom scripts

スクリプトとは、ここでは Questa で実行される Tcl マクロ ファイル (DO ファイル) のことです。このチェック ボックスをオンにすると、Script to Run Before Starting CompilationScript to Run in Place of "vsim"、および Script to Run after "vsim" フィールドが有効になります。このチェック ボックスをオフにすると、これらのフィールドで指定された DO ファイル スクリプトは実行されません。

Script to run before starting compilation

ブラック ボックス HDL ファイルをコンパイルする前に Questa が実行する Tcl マクロ ファイル (DO ファイル) の名前を入力します。

注記: Questa マクロ ファイル (DO ファイル) の記述方法は、 『Vitis Model Composer ユーザー ガイド』 (UG1483)Tcl and macros (DO files) セクションを参照してください。
Script to run in place of "vsim"

Questa では、ツールの制御や拡張をするためのスクリプト言語として、Tcl (ツール コマンド言語) を使用しています。Model Composer が Questa にシミュレーションの開始を指示する時点で Questa do コマンドにより実行される Questa Tcl マクロ ファイル (DO ファイル) の名前を入力します。マクロ ファイルの実行が開始してからシミュレーションを開始するには、マクロ ファイル内に vsim コマンドを配置する必要があります。

通常、このパラメーターが空白のままか、[Add custom scripts] がオフの場合、Model Composer は Questa にデフォルト コマンド vsim $toplevel -title {Model Composer Co-Simulation (from block $blockname} の実行を指示します。ここで、$toplevel はシミュレーションの最上位エンティティ名 (例: work.my_model_mti_block)、$blockname は現在の協調シミュレーションに関連する Simulink モデル内の Questa ブロック名です。問題を回避するため、ブロック名の特定の文字 (改行など) は除去されます。

このパラメーターが空白でなく、 Add custom scripts がオンの場合、Model Composer は Questa に do $* $toplevel $blockname を実行するよう指示します。ここで、$toplevel と $blockname は前述のとおり、$* はフィールドに入力された文字テキストを表します。たとえば、文字テキストが foo.do の場合、Questa は foo.do を実行します。これで、このマクロ ファイルで $toplevel$blockname をそれぞれ $1 と $2 として参照できるようになります。つまり、foo.do マクロ ファイル内の vsim $1 コマンドは vsim を topLevel で実行します。

Script to run after "vsim"

ブラック ボックスの HDL がすべて正常にコンパイルされ、Questa のシミュレーションが正常に終了した後に Questa で実行する Tcl マクロ ファイル (DO ファイル) の名前を入力します。Open Waveform Viewer チェック ボックスがオンの場合、このスクリプトが実行される前に、Model Composer が波形ビューアーを開いてカスタマイズするために通常使用するコマンドすべてを発行します。これにより、波形ビューアーを自由にカスタマイズできます (デフォルト ビューアーに信号を追加、カスタム ビューアーを作成など)。ブラック ボックスのチュートリアルに、波形ビューアーをカスタマイズする例が含まれています。

カスタム スクリプトでは通常、相対パスを使用するのが便利です。相対パスは、モデルの MDL ファイルのあるディレクトリを基準として解釈されます。[Run co-simulation in directory] フィールドの相対パスも、モデルの MDL ファイルを含むディレクトリを基準として解釈されます。このため、たとえば、[Run co-Simulation in directory] に Questa の実行ディレクトリとして ./questa を指定した場合、スクリプト定義フィールドの相対パス ../foo.do は .mdl を含むディレクトリの foo.do という名前のファイルを参照することになります。

詳細

Questa のタイム スケールは Simulink のタイム スケールと同じです。たとえば、Simulink のシミュレーション時間 1 秒は、Questa のシミュレーション時間 1 秒に対応します。これにより、2 つの設定でイベントが発生する時間を簡単に比較できます。通常、Simulink のタイム スケールが大きいと、Model Composer で HDL モデルのタイミング特性に関連する問題が発生することなくイベントをスケジュールできるので便利です。協調シミュレーション モデルでの Model Composer のイベント スケジューリングの詳細は、あまり気にする必要はありません。

次の例を使用して、より広範なポイントを説明します。

図 1. モデル例

上記のモデルを実行すると、Questa で次のような波形が表示されます。

図 2. タイム スケールの例


ここに示すタイム スケール (上記は 6 秒間隔) では、3 秒後のクロックの立ち上がりエッジと、それに対応する 2 つのブラック ボックスそれぞれを介したデータの転送が、Simulink のシミュレーションと同じように、同時に表示されます。ただし、モデルを見ると、1 つ目のブラック ボックスの出力が 2 つ目のブラック ボックスに供給されていることがわかります。このモデルでは、どちらのブラック ボックスにも組み合わせフィードスルーがあり、たとえば、入力の変化が即座に出力の変化に反映されるようになっています。3 秒のイベントの辺りを拡大すると、Model Composer が依存関係をどのように解決したかがわかります。表示される時間間隔が約 20 ms に短縮されています。

図 3. 解決された依存関係


上の図から、Model Composer がクロックの立ち上がりエッジをシフトさせて、入力値が Simulink から収集されて最初のブラック ボックスに入力される前に発生するようにしていることがわかります。その後、その値を 1 つ目のブラック ボックスに伝搬し、少し時間を置いて 2 つ目に結果を提示しています。さらに拡大すると、1 つ目のブラック ボックスの HDL モデルには伝搬遅延が含まれていますが、Model Composer が大きなタイム スケールを使用することで、効果的に抽象化していることがわかります。1 つ目のブラック ボックスを通過する実際の遅延 (調度 1 ns) は、次の図で確認できます。

図 4. 1 つ目のブラック ボックスによる遅延


ブラック ボックス コンポーネントを介してデータを伝搬する場合、Model Composer は、システム クロック周期の 1/1000 を 1us に割り当て、その後システム クロック周期の 1/100 を 5 ns に割り当てて、そのしきい値未満はデルタ遅延ステップ (たとえば Questa に run 0 ns コマンドを発行) が使用されます。HDL にタイミング情報 (例: 伝送遅延) が含まれている場合に、Simulink システム周期の設定が低すぎると、シミュレーション結果が正しく表示されないことがあります。上記のモデルでは、Simulink のシステム周期設定を 5e-7 未満にすると、エラーが発生し始めます。これが、Model Composer がブラック ボックスのデルタ遅延ステップを使用してデータを伝搬するようになるポイントです。