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