デッドロックの検出 - 2023.2 日本語

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

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

AI エンジンでシミュレータがハングすることがあります。一般的な原因としては、要求されたグラフの反復回数に十分な入力データがない、ストリーム データの生成と消費の不一致、ストリームとのサイクル依存、カスケード ストリームまたは非同期ウィンドウ、ブロッキング プロトコル呼び出しの誤った順序 (非同期ウィンドウの取得、ストリームからの読み出し/書き込み) などが挙げられます。

x86 シミュレータは、--disable-stop-on-deadlock オプションが指定されない限り、デッドロックを自動的に検出します。デッドロックが検出されると、シミュレーションは停止し、デッドロック診断レポートが出力されます。

また、グラフが x86simulator_output/simulator_state_post_analysis.dot に生成されます。これは、デッドロックに関与するものが赤でハイライトされているブロック図を使用して、グラフの記述をエンコードする .dot ファイルです。このファイルを .png ファイルに変換するには、次のように dot プログラムを使用する必要があります。

dot -Tpng x86simulator_output/simulator_state_post_analysis.dot > simulator_state_post_analysis.png
重要: x86 シミュレーションにデッドロックがなくても、SystemC シミュレーションでデッドロックが発生しないわけではありません。x86 シミュレーションでは、タイミング制約とリソース制約がモデル化されないので、デッドロックの原因は少なくなります。x86 シミュレーションでデッドロックが発生した場合、SystemC シミュレーションもデッドロックが発生するので、SystemC シミュレーションを続行する前に x86 シミュレーションでデッドロックを修正すると有益です。
注記: --disable-stop-on-deadlock オプションは、ソフトウェア エミュレーションまたは外部テストベンチを使用するユース ケースではサポートされません。
デッドロックのテキストの説明は、Vitis IDE で表示できます。
図 1. [Analysis] ビューでのデッドロック診断