トレース

Versal アダプティブ SoC AI エンジン アーキテクチャ マニュアル (AM009)

Document ID
AM009
Release Date
2023-08-18
Revision
1.3 日本語

AI エンジン タイルからは 2 つのトレース ストリームが出力されます。1 つは AI エンジンから、もう 1 つはメモリ モジュールから出力されます。いずれのストリームも、タイルのストリーム スイッチに接続されます。AI エンジン タイルの各 AI エンジン モジュールとメモリ モジュール、および AI エンジン PL インターフェイス タイル (アレイ インターフェイス タイルの種類 参照) の AI エンジン プログラマブル ロジック (PL) モジュールには、トレース ユニットがあります。これらのトレース ユニットは、次のモードで動作できます。

  • AI エンジン モード
    • イベント タイム
    • イベント PC
    • 実行トレース
  • AI エンジン メモリ モジュール モード
    • イベント タイム
  • AI エンジン PL モジュール モード
    • イベント タイム

トレースは、トレース ユニットから AXI4-Stream 経由で AI エンジン パケット交換ストリーム パケットとして出力されます。パケット サイズは 8x32 ビットで、1 ワードのヘッダーと 7 ワードのデータを含みます。アレイの AXI4-Stream スイッチは、パケット ヘッダーに含まれる情報を使用して、転送可能な任意の AI エンジン デスティネーションへパケットを転送します。これには、AI エンジン タイル DMA 経由で AI エンジン ローカル データ メモリへ、AI エンジン アレイ インターフェイス DMA 経由で 外部 DDR メモリへ、AI エンジンから PL への AXI4-Stream 経由でブロック RAM または URAM へ、などの転送が含まれます。

イベント タイム モードは、独立した番号付きの最大 8 つのイベントをサイクルごとに追跡します。追跡したイベントのステートの変化を記録するために、トレース フレームが作成されます。これらのフレームが出力バッファー内で収集され、AI エンジン パケット交換ストリーム パケットが作成されます。複数のフレームを 1 つの 32 ビット ストリーム ワードにパックできますが、32 ビット境界をまたぐことはできません (32 ビット アライメントのためにフィラー フレームが使用される)。

イベント PC モードでは、監視対象の 8 つのイベントのうち 1 つ以上がアサートされたサイクルで、トレース フレームが生成されます。トレース フレームは、AI エンジンの現在のプログラム カウンター (PC) 値、および監視対象の 8 つのイベントの現在の値を記録します。これらのフレームが出力バッファー内で収集され、AI エンジン パケット交換ストリーム パケットが作成されます。

AI エンジンのトレース ユニットは、実行トレース モードで動作できます。トレース ユニットは、オフライン デバッガーがプログラム実行フローを再構築するのに必要な最小限の情報を AXI4-Stream 経由でリアルタイムに送信します。これは、オフライン デバッガーが ELF にアクセスできることを前提条件としています。この情報には、次のものが含まれます。

  • 直接分岐 (条件分岐および無条件分岐)
  • すべての間接分岐
  • ゼロ オーバーヘッド ループ LC

AI エンジンはパケット ベースの実行トレースを生成します。これは、32 ビット幅の実行トレース インターフェイスを介して送信できます。次の図に、AI エンジン タイルのトレース ハードウェアの論理構成を示します。タイルから出力される 2 つのトレース ストリームは、内部でイベント ロジック、コンフィギュレーション レジスタ、ブロードキャスト イベント、およびトレース バッファーに接続されます。

注記: これら 2 つのモジュールの動作モードの違いは、図には表示していません。
図 1. AI エンジン トレース ハードウェアの論理構成

イベント トレース用のトレース ストリームを制御するために、トレースを開始および停止する 32 ビット trace_control0/1 レジスタがあります。また、トレースに追加される内部イベント番号をプログラムするための trace_event0/1 レジスタもあります。各レジスタの詳細は、 『Versal アダプティブ SoC AI エンジン レジスタ リファレンス』 (AM015) を参照してください。