syn.directive.allocation - 2023.2 简体中文

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

Document ID
UG1399
Release Date
2023-12-18
Version
2023.2 简体中文

描述

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

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

另请参阅