Description
syn.directive.inline
removes a function as a separate entity in
the RTL hierarchy. After inlining, the function is dissolved into the calling
function, and no longer appears as a separate level of hierarchy.
In some cases, inlining a function allows operations within the function to be shared and optimized more effectively with the calling function. However, an inlined function cannot be shared or reused, so if the parent function calls the inlined function multiple times, this can increase the area and resource utilization.
By default, inlining is only performed on the next level of function hierarchy.
Syntax
syn.directive.inline=[OPTIONS] <location>
-
<location>
is the location (in the formatfunction[/label]
) where inlining is to be performed.
Options
-
off
- By default, Vitis HLS
performs inlining of smaller functions in the code. Using the
off
option disables inlining for the specified function. -
recursive
- By default, only one level of function inlining is
performed. The functions within the specified function are not inlined. The
recursive
option inlines all functions recursively within the specified function hierarchy.
Examples
The following example inlines function func_sub1
, but no sub-functions called by func_sub1
.
syn.directive.inline=func_sub1
func_sub1
, recursively down the hierarchy, excluding function func_sub2
:syn.directive.inline=recursive func_sub1
syn.directive.inline=off func_sub2