set_directive_allocation - 2024.1 简体中文

Vitis 高层次综合用户指南 (UG1399)

Document ID
UG1399
Release Date
2024-07-03
Version
2024.1 简体中文

描述

指定资源分配的实例限制。

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