関数に含めるループ ネストは 1 つのみにする - 2019.2 Japanese

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

Document ID
UG1393
Release Date
2020-02-28
Version
2019.2 Japanese

原則的には、関数に順次ループが含まれる場合、これらのループは HLS コンパイラで生成されたハードウェア インプリメンテーションで順次実行されます。順次実行はスループットを低下させるので、通常は望ましくありません。

ただし、これらの順次ループを順次関数に挿入すると、HLS コンパイラでデータフロー最適化を適用し、各タスクをパイプライン処理してオーバーラップして実行するインプリメンテーションを生成できるようになります。データフロー最適化の詳細は、 『Vivado Design Suite ユーザー ガイド: 高位合成』 (UG902: 英語版日本語版)このセクションを参照してください。

この分割では、順次ループを個別の関数に含めます。理想的には、最下位の計算ブロックに完全にネストされたループを 1 つのみ含めるようにします。ループの詳細は、 『Vivado Design Suite ユーザー ガイド: 高位合成』 (UG902: 英語版日本語版)このセクションを参照してください。