Behavior Differences in Inlining of Functions - 2023.2 English

Vitis High-Level Synthesis User Guide (UG1399)

Document ID
Release Date
2023.2 English

Automatic inlining of functions in Vivado HLS was governed by the size of the function. However, in Vitis HLS the automatic inlining optimization is driven by user pragma preferences or by a cost model. For example, consider the case of a loop that is being pipelined, and calls to sub-functions are being made inside this loop body. In Vivado HLS, these sub-functions may have been automatically inlined due to their small size. In Vitis HLS they will only be inlined if the user requests a pipeline of II=1. So the automatic inlining will only occur if the Vitis HLS scheduler determines that there is a benefit to inlining these sub-functions to achieve II=1 in this pipelined loop.

Due to this change you may see differences in the QoR achieved by Vitis HLS and Vivado HLS. You can overcome these differences in Vitis HLS by manually inlining the sub-functions to match the prior behavior of Vivado HLS.