原則的には、関数に順次ループが含まれる場合、これらのループは HLS コンパイラで生成されたハードウェア インプリメンテーションで順次実行されます。順次実行はスループットを低下させるので、通常は望ましくありません。
ただし、これらの順次ループを順次関数に挿入すると、HLS コンパイラでデータフロー最適化を適用し、各タスクをパイプライン処理してオーバーラップして実行するインプリメンテーションを生成できるようになります。データフロー最適化の詳細は、 『Vivado Design Suite ユーザー ガイド: 高位合成』 (UG902: 英語版、日本語版) のこのセクションを参照してください。
この分割では、順次ループを個別の関数に含めます。理想的には、最下位の計算ブロックに完全にネストされたループを 1 つのみ含めるようにします。ループの詳細は、 『Vivado Design Suite ユーザー ガイド: 高位合成』 (UG902: 英語版、日本語版) のこのセクションを参照してください。