描述
移除 RTL 层级中作为独立实体的函数。完成内联后,函数将消隐到调用函数内,不再显示为层级的独立层次。
重要: 内联函数时也会将应用于该函数的所有编译指示或指令消隐掉。在 Vitis HLS 中,忽略应用于内联函数的任意编译指示或指令。
在某些情况下,将函数内联即可使函数内的运算以更有效的方式与调用函数进行共享和最优化。但内联函数无法共享或复用,因此如果父函数多次调用内联函数,则可能导致增加面积和资源利用率。
默认情况下,仅在函数层级的下一个层次上执行内联。
语法
set_directive_inline [OPTIONS] <location>
-
<location>
是要执行内联的位置(格式为function[/label]
)。
选项
-
-off
- 默认情况下,Vitis HLS 会在代码中为较小的函数执行内联。通过使用
-off
选项则可为指定函数禁用内联。 -
-recursive
- 默认情况下,仅执行一级函数内联。所指定的函数内部包含的函数则不进行内联。
-recursive
选项会在指定函数层级内按递归方式内联所有函数。重要: 在数据流区域中执行函数递归内联可能导致该区域内的单个函数不满足数据流的条件。在此情况下,会忽略INLINE -recursive
编译指示或指令。
示例
以下示例可内联 func_sub1
函数,但 func_sub1
不调用任何子函数。
set_directive_inline func_sub1
此示例会按递归方式向下内联
func_sub1
函数(func_sub2
函数除外):set_directive_inline -recursive func_sub1
set_directive_inline -off func_sub2