GTM-Wizard には次の機能が含まれます。
- PAM4 信号を使用したデザイン、GTM_DUAL デザインおよび自動生成バイパス モジュール (
xil_dut_bypass
) をインスタンシエートするデザインの検出。 - バイパス モジュールをインスタンシエートする必要があるデザインの単純なサニティ チェック。
- XSim の波形ビューアーで PAM4 信号を表示するメカニズム。
- エクスポート シミュレーション フローのバイパス モジュールを生成する方法を提供。
このチュートリアルでは、PAM4 信号を使用する GTM-Wizard のサンプル デザインを生成します。これを生成する手順は、次のとおりです。
- ソース/制約ファイルを追加せずに、Vivado 2023.1 でプロジェクトを作成します。 をクリックします。
- 次の図のように、Default Part ページで Virtex UltraScale+ 58G を選択し、パーツを選択して Next をクリックします。
- サマリ レポートを確認して、Finish をクリックします。
-
Project
Manager → IP
Catalog をクリックし、
gtm_wizard
を検索して Virtex UltraScale+ FPGAs Transceivers Wizard をダブルクリックします。
- デフォルト設定で OK をクリックし、Generate Output
Product ダイアログ ボックスで Skip をクリックします。
-
Sources ウィンドウで、生成された XCI ファイルを右クリックし、Open IP Example Design をクリックして、ディレクトリを指定します。
この段階では、シミュレーションを実行可能なサンプル例があります。
シミュレーションに進む前に、PAM4 の視点からいくつか説明します。
-
xil_dut_bypass
モジュール定義はツールで実行時に生成され、GTM_DUAL への階層参照を含みます。
- この
xil_dut_bypass
モジュールの生成は、Configure Design for Hierarchical Access オプションで制御できます (デフォルトでオン)。
注記: 以前の動作に戻す場合は、Configure Design for Hierarchical Access チェック ボックスをオフにします。デザインが作成されると、
launch_simulation
またはexport_simulation
.のいずれかまで実行できます。
- launch_simulation
-
-
Run Behavioral Simulation をクリックします。これで Vivado シミュレータを使用してシミュレーションが実行されます。
- スナップショットが作成されて読み込まれると、シミュレーションは 1000 ns 後に停止します。では、xil_dut_bypass の定義について説明します。Scope ウィンドウで xil_dut_bypass をダブルクリックして、ソース コードを表示します。トップ モジュールからリーフ レベル インスタンスまでの階層参照に注目してください。
-
xil_dut_bypass を右クリックして波形に追加します。
- Restart をクリックし、すべてを実行します。
- シミュレーションが完了したら、波形内の xil_dut_bypass のすべての信号を区切って、Waveform Style を右クリックして Analog を選択します。
- 波形スタイルのアナログ設定に移動し、次のように値を変更し、波形を改善します。
- 信号のアナログ値を観察します。
注記: サードパーティのシミュレータを使用して同じデザインを実行する場合は、 『Vivado Design Suite ユーザー ガイド: ロジック シミュレーション』 (UG900) を参照してください。
-
Run Behavioral Simulation をクリックします。これで Vivado シミュレータを使用してシミュレーションが実行されます。
- export_simulation
- 次に、export_simulation の 2 つのフローを示します。
- 生成された xil_dut_bypass を使用してシミュレーションをエクスポート
-
- Vivado IDE で
export_simulation -simulator xsim -generate_hier_access
コマンドを実行します。これにより、<your_local_path>/export_sim/xsim にスクリプトが生成されます。
- 生成された vlog.prj で、
xil_dut_bypass.sv
を確認します。これは、launch_simulation が生成され、それがプロジェクトの一部として追加されたためです。
-
gtm_wizard_ultrascale_0_example_top_sim.sh
を実行すると、シミュレーションが実行されます。GUI モードで実行する場合は、else 部分の xsim コマンドに-gui
を追加します。 - launch_simulation の手順 3 から 7 に従うと、launch_simulation と同じ波形と出力を確認できるようになります。
- Vivado IDE で
- xil_dut_bypass を使用しない export_simulation
-
-
gtm_wizard_ultrascale_0_example_top_sim.sh -gen_bypass
を実行します。 - デルタ時間単位分のシミュレーションが実行され、ログ ファイルに階層パスが生成されます。
- 生成された simulate.log で
xilinx_hier_bypass_ports:gtm_wizard_ultrascale_0_example_top_sim.u_e….
の部分を記録します。 - Vivado Tcl コンソールで
generate_hier_access -log ./simulate.log
を実行してxil_dut_bypass.sv
を生成します。 - 現在のディレクトリに生成された
xil_dut_bypass.sv
を確認します。 - この
xil_dut_bypass.sv
をsv xil_defaultlib ./xil_dut_bypass.sv
のように vlog.prj に追加します。 -
gtm_wizard_ultrascale_0_example_top_sim.sh
を実行すると、シミュレーションが実行されます。GUI モードで実行する場合は、else 部分の xsim コマンドに-gui
を追加します。
- launch_simulation の手順 3 から 7 に従うと、launch_simulation と同じ波形と出力を確認できるようになります。
-
- vivado 以外のプロジェクト用の xil_dut_bypass の生成
-
- デザイン (<design>.prj) のコンパイル順を作成します。
- XSim シミュレータ ツールを実行してシミュレータ ログ ファイルを生成します。
-
xelab -prj <design>.prj -top <testbench-top>
. -
xsim -R <testbench-top> --testplusarg GEN_BYPASS
.
-
- 生成された
<simulator>.log
ファイルに階層パス情報を含むxilinx_hier_bypass_ports
という文字列が含まれていることを確認します。次に例を示します。xilinx_hier_bypass_ports:tb.dut_i.gtmWiz_00.gtm_i in:integer:in1:in_var1 in:integer:in2:in_var2 out:integer:out1:out_var1 out:integer:out2:out_var2
- GitHub から
generate_hier_access.tcl
ユーティリティをダウンロードします。wget https://raw.githubusercontent.com/Xilinx/XilinxTclStore/2020.1-dev/tclapp/xilinx/projutils/generate_hier_access.tcl
-
generate_hier_access.tcl
を実行して、階層アクセス シミュレーションのソースを生成します。-
# /usr/bin/tclsh
. -
source generate_hier_access.tcl
. -
generate_hier_access -bypass dut_bypass -testbench <module> -directory <path> -log <simulator>.log
.適切な接続を使用して、テストベンチにこのdut_bypass
をインスタンシエートします。
-
- <design>.prj に
<path>/dut_bypass.sv
を追加します。 - シミュレータ ツールを実行し、<design>.prj のデザインをシミュレーションします。