syn.directive.inline - syn.directive.inline - 2026.1 English - UG1702

Vitis Reference Guide (UG1702)

Document ID
UG1702
Release Date
2026-06-23
Version
2026.1 English

Description

syn.directive.inline removes a function as a separate entity in the RTL hierarchy. After inlining, the function dissolves into the calling function and no longer appears as a separate level of hierarchy.

Important: Inlining a child function dissolves its pragmas, and Vitis HLS ignores any directives applied in the child context.

In some cases, inlining a function allows the calling function to share and optimize operations more effectively. 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 format function[/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, the tool inlines only one function level and does not inline functions within the specified function. 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
This example inlines function func_sub1, recursively down the hierarchy, excluding function func_sub2:
syn.directive.inline=recursive func_sub1
syn.directive.inline=off func_sub2