各 AIE-ML タイルからは 2 つのトレース ストリームが出力されます。1 つは AIE-ML から、もう 1 つはメモリ モジュールから出力されます。いずれのストリームも、タイルのストリーム スイッチに接続されます。AIE-ML タイルの各 AIE-ML モジュールとメモリ モジュール、および AIE-ML PL インターフェイス タイル (アレイ インターフェイス タイルの種類参照) の AIE-ML プログラマブル ロジック (PL) モジュールには、トレース ユニットがあります。これらのトレース ユニットは、次のモードで動作できます。
-
AIE-ML モード
- イベント タイム
- イベント PC
- 実行トレース
-
AIE-ML メモリ モジュール モード
- イベント タイム
-
AIE-ML PL モジュール モード
- イベント タイム
トレースは、トレース ユニットから AXI4-Stream 経由で AIE-ML パケット交換ストリーム パケットとして出力されます。パケット サイズは 8x32 ビットで、1 ワードのヘッダーと 7 ワードのデータを含みます。アレイの AXI4-Stream スイッチは、パケット ヘッダーに含まれる情報を使用して、転送可能な任意の AIE-ML デスティネーションへパケットを転送します。これには、AIE-ML タイル DMA 経由で AIE-ML ローカル データ メモリへ、AIE-ML アレイ インターフェイス DMA 経由で 外部 DDR メモリへ、AIE-ML から PL への AXI4-Stream 経由でブロック RAM または URAM へ、などの転送が含まれます。
イベント タイム モードは、独立した番号付きの最大 8 つのイベントをサイクルごとに追跡します。追跡したイベントのステートの変化を記録するために、トレース フレームが作成されます。これらのフレームが出力バッファー内で収集され、AIE-ML パケット交換ストリーム パケットが作成されます。複数のフレームを 1 つの 32 ビット ストリーム ワードにパックできますが、32 ビット境界をまたぐことはできません (32 ビット アライメントのためにフィラー フレームが使用される)。
イベント PC モードでは、監視対象の 8 つのイベントのうち 1 つ以上がアサートされたサイクルで、トレース フレームが生成されます。トレース フレームは、AIE-ML の現在のプログラム カウンター (PC) 値、および監視対象の 8 つのイベントの現在の値を記録します。これらのフレームが出力バッファー内で収集され、AIE-ML パケット交換ストリーム パケットが作成されます。
AIE-ML のトレース ユニットは、実行トレース モードで動作できます。トレース ユニットは、オフライン デバッガーがプログラム実行フローを再構築するのに必要な最小限の情報を AXI4-Stream 経由でリアルタイムに送信します。これは、オフライン デバッガーが ELF にアクセスできることを前提条件としています。この情報には、次のものが含まれます。
- 直接分岐 (条件分岐および無条件分岐)
- すべての間接分岐
- ゼロ オーバーヘッド ループ LC
AIE-ML はパケット ベースの実行トレースを生成します。これは、32 ビット幅の実行トレース インターフェイスを介して送信できます。次の図に、AIE-ML タイルのトレース ハードウェアの論理構成を示します。タイルから出力される 2 つのトレース ストリームは、内部でイベント ロジック、コンフィギュレーション レジスタ、ブロードキャスト イベント、およびトレース バッファーに接続されます。
イベント トレース用のトレース ストリームを制御するために、トレースを開始および停止する 32 ビット trace_control0/1
レジスタがあります。また、トレースに追加される内部イベント番号をプログラムするための trace_event0/1
レジスタもあります。