典型的な開発フローでの手順は次のとおりです。
- システム全体が機能的に正しく動作するかを検証するためにシステムのソフトウェア エミュレーションを実行する 注記: これには、HLS コンポーネントで C シミュレーションを実行することや、AI エンジン コンポーネントを検証するために
x86simulator
を実行することも含まれます。 - AI エンジン シミュレータで AI エンジン カーネルとグラフがアプリケーションのパフォーマンス要件を満たしているかどうかを検証
- デザインのタイミングを検証するためのシステムのハードウェア エミュレーション注記: これには、HLS コンポーネントで C/RTL 協調シミュレーションを実行することや、AI エンジン コンポーネントを検証するために
aiesimulator
を実行することも含まれます。 - ハードウェアでのテストおよびデバッグ
ハードウェア実行の実行中は、プラットフォームやアクセラレータ カードの物理デバイス上でシステム デザインが実行されます。ただし、エミュレーション ターゲットの実行は、x86 プロセッサでは仮想システム上で実行され、エンベデッド プロセッサ上では QEMU 環境で実行されます。ソフトウェアおよびハードウェア エミュレーションのターゲットには、XRT でランタイムで読み込まれる独自のドライバーがターゲット別にあります。このため、ランタイム中にターゲット モードを変更すると、再コンパイルしないで同じ CPU バイナリをそのまま実行できます。
XRT は XCL_EMULATION_MODE
環境変数の値に基づいてターゲット別のドライバーを読み込み、ハードウェアのエミュレーション モデルを使用してアプリケーション インターフェイスを作成します。XCL_EMULATION_MODE
に指定できる値は sw_emu
および hw_emu
です。XCL_EMULATION_MODE
が設定されていない場合、 XRT はハードウェア ドライバーを読み込みます。
XCL_EMULATION_MODE
を設定する必要があります。
xrt.ini ファイルを使用しても、エミュレーションに適用可能なさまざまなオプションを設定できます。xrt.ini ファイル に説明するように、xrt.ini にはエミュレーション用の [Emulation]
セクションがあります。
AI エンジンを含むシステムのエミュレーションは、次の操作をする際に便利です。
- 限られた既知のデータ セットを使用してシステムの初期動作を確認
- GDB を使用した PS、PL、ADF グラフの機能統合とデバッグ
- Python または C++ を使用した外部トラフィック ジェネレーターを含むシステムのテスト
- RTL カーネル用の C ベース モデルを使用したシステムの実行
-
Work/options にある x86.options ファイルまたは
aiesimulator_output
ディレクトリにある aiesim_options.txt を使って AI エンジン のシミュレーション オプションを適用
ソフトウェア エミュレーションで実行するホスト コードを記述する際は、すべてのバッファー オブジェクト (xrtBO
) を xrtBOSync
API 呼び出しと同期します。データ駆動型 PL カーネルを複数回実行するには、ソフトウェア アプリケーションの while (1)
ループ内で実行します。
ソフトウェアまたはハードウェア エミュレーションが起動したら、使用されるシミュレータに従って、AI エンジン コンポーネントのオプションを指定できます。これらのオプションは、 -x86-sim-options
を使用して launch_sw_emu.sh スクリプトから指定することも、-aie-sim-options
を使用して launch_hw_emu.sh スクリプトから指定することもできます。詳細は、
『AI エンジン ツールおよびフロー ユーザー ガイド』 (UG1076) のAI エンジン シミュレータ オプションの再利用を参照してください。
エミュレーション環境が起動し、Linux プロンプトが表示されたら、QEMU 環境で次の環境変数を設定し、ホスト アプリケーションが動作するようにします。これらは、ハードウェア上で実行する場合にも設定する必要があります。
export XILINX_XRT=/usr
export LD_LIBRARY_PATH=/mnt/sd*1:
export XCL_EMULATION_MODE=hw_emu