XSDB フロー - 2023.2 日本語

AI エンジン ツールおよびフロー ユーザー ガイド (UG1076)

Document ID
UG1076
Release Date
2023-12-04
Version
2023.2 日本語

XSDB フローは次のとおりです。

  1. 次の手順に従って xsdb を設定し、デバイス ハードウェアに接続します。

    アプリケーションを実行すると、デバッグおよびプロファイリング IP によってトレース データが DDR メモリに格納されます。このデータを取得して評価するには、xsdb を使用してハードウェア デバイスに接続する必要があります。通常このコマンドは、デバイスをプログラムしたり、ベアメタル アプリケーションをデバッグする場合に使用します。JTAG を介してハードウェア プラットフォームまたはデバイスにシステムを接続し、コマンド シェルで xsdb コマンドを起動して、次の一連のコマンドを実行します。

    xsdb% connect
    xsdb% ta
    xsdb% ta 1
    xsdb% source $::env(XILINX_VITIS)/scripts/vitis/util/aie_trace.tcl​
    xsdb% aietrace start -graphs mygraph -work-dir ./Work -link-summary $PROJECT/xsa.link_summary -base-address 0x900000000 -depth 0x800000 -tile-based-aie-tile-metrics "all:functions; {4,1}:{6,2}:functions_all_stalls" 
    
    # Execute the PS host application (.elf) on Linux
    ## After the application completes processing.
    xsdb% aietrace stop

    source $::env(XILINX_VITIS)/scripts/vitis/util/aie_trace.tcl コマンドによって Tcl trace コマンドが読み込まれ、xsdb 環境がセットアップされます。

  2. ハードウェアでデザインを実行して、ハードウェア イベントをトレースします。
  3. 取得したトレース データをオフロードします。
  4. このコマンドを使用して、Vitis IDE を起動し、データをインポートして解析します。
    vitis -a aie_trace_profile.run_summary
表 1. XSDB トレースのオプション
オプション 説明
start イベント トレースを開始し、DPA IP を初期化してトレース データの収集を開始します。
stop イベント トレースを停止し、DDR メモリからトレース イベント データをオフロードするように DPA IP に指示します。このコマンドは、アプリケーションが完了するまで待機する必要があります。データは、xsdb が起動された現在の作業ディレクトリの event_trace<N>.txt ファイルに書き込まれます。aie_trace_profile.run_summary ファイルも生成されます。Vitis IDE での実行サマリの表示 で説明されているように、Vitis IDE でこれらのファイルを開くことができます。
ヒント: グラフを再実行したときに、event_trace<N>.txt が削除されていなければ、既存のファイルが新しい実行結果で上書きされます。
-link-summary デザインのリンク段階で生成されるリンク サマリへのパスを指定します。このオプションは必須です。
-start-type time|iteration|kernel_event0 時間、反復、またはユーザー定義のイベントなど、さまざまなトレース遅延の手法を指定します。-start-type kernel_event0 オプションを使用するには、カーネル コードで event0() 関数を追加し、プロファイル用のコア イベント 0 を生成する必要があります。-start-type time|iteration オプションは、次に説明する -start-time および -start-iteration オプションとそれぞれ組み合わせて使用する必要があります。イベント トレースの遅延の詳細は、遅延イベント トレースの使用を参照してください。
-start-time イベント トレースの開始をどれくらい遅らせるかは、AI エンジン クロック サイクルまたは時間 (sec、ms、us または ns) で指定します。単位を指定しない場合は、AI エンジン クロック サイクルが使用されます。このオプションは、-start-type time オプションと共に使用する必要があります。
-start-iteration グラフの反復回数に基づいてイベント トレースを開始します。この方法でイベント トレースを開始するには、graph-iterator-event オプションを使用して AI エンジン デザインを再コンパイルする必要があります。このオプションは、-start-type iteration との組み合わせでのみ使用します。
-work-dir <Work Directory> 作業ディレクトリを指定します。このオプションは必須です。
-graphs <Graph Name> イベント トレースの対象となるグラフを指定します。指定しない場合は、すべてのグラフに対してトレースがデフォルトでイネーブルになります。
-base-address <address> トレース データを格納する DDR の開始アドレス。
重要: -base-address で使用される DDR メモリ アドレスは、Versal プラットフォームやアプリケーション上の OS とのメモリ競合を回避するために上位アドレスである必要があります。カスタム プラットフォームの場合は、使用する DDR メモリ容量を確認し、それに応じて対応してください。
-depth <size> DDR で使用されるメモリの長さ。このオプションは必須です。
-tile-based-aie-tile-metrics 指定されたタイルに対して、どの AI エンジン イベントを保存するかを設定します。
-graph-based-aie-tile-metrics 指定されたカーネル/グラフに対して、どの AI エンジン イベントを保存するかを設定します。
-graph-based-memory-tile-metric

注記: このオプションは、AI エンジン ML デバイスにのみ使用できます。

指定されたバッファー/グラフに対して、どのメモリ タイル メトリクスを保存するかを設定します。
-tile-based-memory-tile-metric

注記: このオプションは、AI エンジン ML デバイスにのみ使用できます。

指定されたメモリ タイルに対して、どのメモリ タイル メトリクスを保存するかを設定します。
イベントの仕様については、各オプションは基本的にすべての設定をセミコロンで区切った組み合わせの文字列となります。次に例を示します。
# Sets event trace to "functions_all_stall" for the tile range column 4 to
# 6 and row 1 to 2, and overides to "functions" for tile (4,1)
-tile-based-aie-metrics "{4,1}:{6,2}:functions_all_stalls; {4,1}:functions"

# Sets event trace to "functions" for kernel k1 in graph myGraph
-graph-based-aie-tile-metrics "myGraph:k1:functions"

# Sets event trace to "functions" for all kernels in hierarchical graph
# myGraph->subgraph1->subgraph2
-graph-based-aie-tile-metrics "myGraph.subgraph1.subgraph2:all:functions"

#Examples on Delayed event trace

# Sets event trace to "functions" for kernel k1 in graph myGraph delayed 
# by 1.5ms
-start-type time -start-time 1.5ms -graph-based-aie-tile-metrics "myGraph:k1:functions"

# Sets event trace to "functions" for kernel k1 in graph myGraph delayed
# by 10 graph iterations
-start-type iteration -start-iteration 10 -graph-based-aie-tile-metrics "myGraph:k1:functions"

# Sets event trace to "functions" for kernel k1 in graph myGraph delayed
# by user defined event
-start-type kernel_event0 -graph-based-aie-tile-metrics "myGraph:k1:functions"