次のような複数のソースからのストール ロジックにより、AI エンジンの実行がストールすることがあります。
- 外部メモリ マップド AXI4 マスター
- 外部 AXI4 マスター (PS など) が、特定の AI エンジンに対してストール信号を発行することがあります。
- ロック モジュール
- AI エンジンは、ハードウェア同期のためロックにアクセスできます。ロックを取得するときにコアがロックを取得しない場合、ロックが解除されるまで AI エンジンがストールします。
- EMPTY または FULL AXI4-Stream インターフェイス
- AI エンジンは、空の入力 FIFO から読み出そうとしたり、フルの出力 FIFO に書き込もうとしたりすると、ストールします。
- データ メモリ競合
- メモリのストールは、2 つの異なる AI エンジン間、または 1 つの AI エンジンが 1 つのメモリ バンクにアクセスしようとしたとき (同じサイクルで同じメモリ バンクにロードおよびストアを実行するなど) に発生することがあります。
- イベント ユニットからのイベント動作
- AI エンジンは、イベント ユニットからのイベント動作よりストールすることがあります。
AI エンジンがストールすると、プログラム メモリ インターフェイスを含む AI エンジンへのすべてのメモリ インターフェイスがストールします。ストールの原因が修正されると、ストールは解決します。
IDE では、AI エンジン シミュレーションからの VCD トレースを使用して、ストール ステータスの概要をメトリクスで表示するストール解析を実行できます。これは、ストールの発生場所と可能な原因を検出するのにも役立ちます。
IDE でのストール解析には、AI エンジン シミュレータを --online
-wdb -text
オプションを指定して実行し、バックグラウンドでイベント トレース情報を生成することをお勧めします。
aiesimulator --pkg-dir=./Work --online -wdb -text
注記: 解析に VCD ファイルが必要な場合は、代わりに AI エンジン シミュレータの
--dump-vcd
オプションを使用できます。IDE で VCD ファイルからイベント トレースを生成するには時間がかかります。特にデザインが大きい場合、その時間は無視できなくなります。そのため、vcdanalyze
を AI エンジン シミュレータと共に使用して、IDE で AI エンジン ストール解析を実行するためのイベント トレースを準備することをお勧めします。aiesimulator --pkg-dir=./Work --dump-vcd foo
vcdanalyze --vcd=foo.vcd --wdb --text
注記: vcdanalyze の
--outdir
オプションを使用して出力データをデフォルト以外のディレクトリに配置しないでください。IDE を起動して AI エンジン シミュレーション結果を表示する手順は、Vitis IDE での実行サマリの表示 を参照してください。
vitis -a ./aiesimulator_output/default.aierun_summary
Vitis IDE をハードウェア エミュレーションで使用して AI エンジン ストール解析を実行するには、次の追加設定が必要です。
- 次の内容を含むシミュレータ オプション ファイル (
sim_options.txt
など) を記述します。AIE_PKG_DIR=<ABSOLUTE_PRJ_PATH>/Work AIE_DUMP_VCD=foo
- 次のオプションを指定してハードウェア エミュレーションを起動します。
./launch_hw_emu.sh -aie-sim-options <ABSOLUTE_PATH_TO>/sim_options.txt
- (オプション)
vcdanalyze
を実行します。cd ./sim/behav_waveform/xsim/; vcdanalyze --pkg-dir=../../../Work --vcd=foo.vcd --wdb –text
-
Vitis IDE を起動します。
vitis -a ./sim/behav_waveform/xsim/default.aierun_summary