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

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

Document ID
UG1393
Release Date
2022-05-25
Version
2022.1 日本語

ハードウェア エミュレーションで使用されるのは概算モデルなので、エミュレーションされたシステムの動作にハードウェアのものと一致しないものがあることがあります。次のリストは、ハードウェア エミュレーション中にアプリケーションが予測どおりの結果にならない場合によくある問題を示しています。

  1. ホスト アプリケーションを確認して、異なるカーネル実行間のイベントの依存関係が正しく取得されたかどうかを確認します。このような問題があると、予期しない動作を引き起こす可能性があります。また、アプリケーションがハードウェアではパスすることはできても、アプリケーションに論理的なバグがある場合は、わずかに異なる条件でハードウェア上で問題が発生する可能性があります。
  2. RTL カーネルを使用している場合は、アプリケーションをデバッグ モードで実行し、カーネル内のシミュレーションで X (駆動されていない値) がないことを確認します。これは、ハードウェアでは動作するが、予測不可能な動作になって、シミュレーションではエラーになる可能性のあるコードであることを示します。HLS で生成されたカーネルの場合は、すべての変数が適切な値に初期化されていることを確認してください。
  3. カーネルがハードウェア エミュレーションで処理するデータ量が少なく、エミュレーションが妥当な時間内で完了できるようになっていることを確認します。こうしておかないと、アプリケーションが永久に実行されているか、ハングしているように見えることがあります。この場合、ハードウェア エミュレーションでアプリケーションを実行するときは、ホストアプリケーション コンソールで INFO: [Vitis-EM 22] メッセージを探し、グローバル メモリに対して読み書きされるデータ量が増加していることを確認します。
    1. RD/WR データが増加している場合は、アプリケーションとハードウェア実行が進行中であることを示します。アプリケーションはハングしませんが、完了するまでにかなり時間がかかります。これは、データ サイズが大きいか、カーネルが非効率的な方法でメモリの読み取り/書き込みを実行していることが原因である可能性があります。アプリケーションとカーネルを最適化する必要があります。
    2. RD/WR データが連続して増加しない場合、シミュレーションが実行されていても、ハードウェアのどこか (カーネル内か残りのプラットフォーム) にデッドロックがあることを示しています。カーネルの境界の AXI トランザクション、インターコネクト (例: sdx_memss)、およびその他の場所で、不完全なトランザクションがあるかどうか、またはカーネルによってトランザクションが生成されているかどうかを確認します。
  4. ハードウェア エミュレーションを波形モードで実行し、タイムライン トレースで確認します。カーネルが AXI4-Lite インターフェイス上のトラフィックを監視するか、カーネルからの出力割り込みを監視して、カーネルが開始されて終了したかどうかを確認します。
  5. xrt.ini ファイル[Emulation] セクションを確認し、アプリケーションまたはカーネルの問題を絞り込むのに役立つ適切な設定を有効にします。