描述
指定资源分配的实例限制。
syn.directive.allocation
可限制用于实现特定函数、循环或运算的 RTL 实例和硬件资源的数量。例如,如果 C/C++ 语言源代码的 foo_sub
函数有 4 个实例,则 syn.directive.allocation
命令可以确保在最终 RTL 中 foo_sub
只有一个实例。全部 4 个实例均使用相同的 RTL 块来实现。这样即可减少函数所使用的资源量,但由于共享这些资源,故而对性能会产生负面影响。
C/C++ 语言代码中的运算(例如,加法、乘法、阵列读取和写入)均可通过 syn.directive.allocation
命令来加以限制。
语法
syn.directive.allocation=[OPTIONS] <location> <instances>
-
<location>
是位置字符串,格式为function[/label]
。 -
<instances>
是函数或运算符。该函数可以是原始 C/C++ 语言代码中未由syn.directive.allocation
命令内联或未由 Vitis HLS 自动内联的任何函数。
选项
-
limit=<integer>
-
设置要在 RTL 设计中使用的实例(类型由
type
选项定义)数量上限。 -
type=[function|operation]
- 实例类型可以是
function
(默认)或operation
。要获取受支持的运算的完整列表,请参阅 运算符配置。
示例
给定 foo_top
设计中有多个 foo
函数的实例,在 RTL 中将 foo
的实例数限制为 2。
syn.directive.allocation=limit=2 type=function foo_top foo
将 My_func
实现中使用的乘法器数限制为 1。此限制不适用于可能驻留在 My_func
的子函数中的任何乘法器。要限制任何子函数实现过程中使用的乘法器数量,请在子函数上指定分配指令,或将子函数内联到 My_func
函数中。
syn.directive.allocation=limit=1 type=operation My_func mul