ハードウェア エミュレーションでのデバッグ手法 - 2023.2 日本語

Vitis 統合ソフトウェア プラットフォームの資料: アプリケーション アクセラレーション開発 (UG1393)

Document ID
UG1393
Release Date
2023-12-13
Version
2023.2 日本語

次の表は、ハードウェア エミュレーションにおけるさまざまな状況をデバッグするための具体的な手法を示したものです。

表 1. ハードウェア エミュレーションでのデバッグ テクニック
デバッグ フォーカス 説明 手順
x86 ホスト (XRT) xrt.ini を更新すると、詳細な XRT ログを有効にできます。

次を xrt.ini ファイルに追加します。更新された xrt.ini を使用してテスト ケースを実行します。生成された xrt_hal.log を確認します。

[runtime]hal_log=xrt_hal.log
AI エンジン、NOC、CIPS のような SystemC モデルでの AXI トラフィック

ホスト トランザクションは、sim_qdma SystemC モジュールを介して配線されます。これらのトランザクションは、ログ ファイルにダンプできます。PL も SystemC であれば、PL トランザクションでもそこで表示できます。

PL が RTL の場合、PL 境界を波形で表示できます。

xrt.ini に次を追加します。

[Emulation]xtlm_aximm_log=true xtlm_axis_log=true

xsc_report.log ファイルを表示します。

DDR メモリ コンテンツの表示

DDR モデルは、その内容をバイナリ ファイルに保存します。シミュレーションを実行するフォルダー (package.hw_emu/sim/behav_waveform/xsim dir) で、次のような名前のファイルを探します。各バイナリ ファイルは、DDR メモリの特定のオフセットにある領域に該当します。

qemu-memory-_ddr@0x00000000 または qemu-memory-_mem_0xc080000000@0xc080000000ULL

DDR/LPDDR のメモリ内容をバイナリ形式で表現したファイルです。

QEMU と NOC_DDR モデルとの間にバックドア接続があります。このため、波形にトランザクションが表示されることはなく、ログを表示することもできません。共有メモリは直接更新されます。メモリの内容を表示するには、ユーザーが直接メモリの内容をダンプします。

メモリの内容は、次の例のように、hexdump コマンドで確認できます。

hexdump qemu-memory-_mem_0x60000000000@0x60000000000ULL -s 0x80000000 -n 4096 -v -e '1/4 "%02X" "\n"' > dump_600.log
PS (QEMU) ファームウェアやソフトウェアの実行時に、Arm APU が問題に直面することがあります。これらの機能を使用した PS のさまざまなトランザクションやステートの詳細が表示されます。
  1. QEMU を実行しているシェルで ENABLE_RP_LOGS=true 変数を設定します。sim/behav_waveform/xsim/qemu_rp.log という名前のログ ファイルを探してください。これには、PS からその他のペリフェラル (DDR 以外) へのトランザクションが含まれます。
  2. package.hw_emu/qemu_output.log で出力を確認します。これには、STDOUT (UART) への PS 出力が含まれます。PLM やほかの SW の実行中にエラーが発生した場合は、その内容がここに取り込まれます。エラーの詳細 (CDO アドレス、U-Boot ステージなど) を見て、どの CDO がエラーを引き起こしているのかを絞り込みます。
  3. QEMU ログを独自の xterm ウィンドウに直接表示する launch_hw_emu.sh -enable_debug モードを実行します。
AI エンジン PDI は PS から AI エンジン に高速モードでダウンロードされるため、トランザクションを波形で確認することはできません。ユーザーは、AI エンジン AXI インターフェイスでのすべてのトランザクションのログを有効にできます。AXI インターフェイスごとにファイルが分かれています。
  1. setenv ENABLE_AIE_DBG_TRACE をオンにします。シミュレーション フォルダー内のトランザクション ログ (aie_log/S00_AXI.txt ファイル) を表示します。
  2. -aie-sim-options オプションを launch_hw_emu.sh コマンド ラインに追加して、AI エンジン VCD ダンプを有効にし、Vitis アナライザーに内容を表示します。AI エンジン-sim-options ファイルの詳細は、UG1076 を参照してください。これらは、aiesimhw_emuの間で共通です。
  3. AI エンジン シミュレーション オプションを有効にするためのファイル (aie_sim_config.txt) を作成します。
    1. このファイルに "AIE_DEBUG_AXIMM=True" を追加します。
    2. このファイルを起動エミュレーターのコマンド ラインで渡します。
       ./package.hw_emu/launch_hw_emu.sh -aie-sim-options <Absolute path to the options .txt file>
DC フローでの波形のダンプ (バッチ モード)

デザインが -g オプションでリンクされており、Xsim GUI モードで少なくとも一度はデザインを実行し、必要な .wcfg ファイルを保存し、関連する信号のリストを保存していることを確認してください。

波形をダンプし、保存した .wcfg ファイルと一緒に xsim で開きます。

xrt.ini オプションで次のオプションを更新します。

[Emulation]
user_pre_sim_script=<use pre sim script absolute path>
信号ダンプを有効にするには、プリシミュレーション スクリプトが必要です。
log_wave -r *