システムがデッドロック状態の場合、デザイン内に FIFO を追加することでこの問題を解決できることがあります。単純なシステムであれば、デザインから FIFO のサイズを推測し、スタティックな解析を手動で実行できます。ただし、main_init()
、main()
、および kernel
の開始時に何クロック サイクルが費やされるかは正確には把握できません。
このツールは、AI エンジン シミュレーションからこれら FIFO の長さを計算します。フラグ --evaluate-fifo-depth
を使用すると、aiecompiler
を用いてグラフをコンパイルできます。このオプションによって、関連するすべてのパスに無限の FIFO が生成されます。
コードをコンパイルしたら、
aiesimulator
を使用して標準の AI エンジン シミュレーションを実行します。シミュレーションの初期に、次の警告メッセージが表示されます。[CRITICAL WARNING]: Design was compiled with --evaluate-fifo-depth option, before deploying the design on hardware compile without --evaluate-fifo-depth option.
- Vitis Unified IDE を開き、シミュレーションの
run_summary
を開きます。 -
Estimated FIFO
の列を参照し、fifo_depth
制約を使用して推奨される数の FIFO を特定のネットに適用します。
注記: この機能は AI エンジン ML デザインでは利用できません。
図 1. Vitis Unified IDE
推測される FIFO の深さは、
Estimated FIFO (Words)
の列に表示されます。これらの値をグラフで使用し、次の構文を用いて指定した長さの FIFO を挿入できます。fifo_depth(net) = value;
ここのネット (net) は、FIFO を挿入する接続です。