関数のインライン展開の動作の違い - 2023.2 日本語

Vitis 高位合成ユーザー ガイド (UG1399)

Document ID
UG1399
Release Date
2023-12-18
Version
2023.2 日本語

Vivado HLS での関数の自動インライン展開は、関数のサイズによって決まっていましたが、Vitis HLS では、自動インライン最適化は、ユーザーのプラグマ プリファレンスまたはコスト モデルによって決まります。たとえば、ループがパイプライン処理されており、このループ本体内で下位関数の呼び出しがあるとします。Vivado HLS の場合、これらの下位関数はサイズが小さいため、自動的にインライン処理されていた可能性があります。Vitis HLS では、ユーザーが II=1 のパイプライン処理を要求した場合のみ、インライン処理されます。つまり、このパイプライン処理されたループで II=1 を達成するために、これらの下位関数をインライン処理するメリットがあると Vitis HLS スケジューラが判断した場合にのみ、自動インライン処理が実行されます。

この変更により、Vitis HLSVivado HLS で達成される QoR (結果の品質) に違いがでることがあります。Vitis HLS でのこれらの違いは、Vivado HLS の以前の動作と一致するように下位関数を手動でインライン処理すると、克服できます。