set_directive_function_instantiate - 2021.2 Chinese

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

Document ID
UG1399
Release Date
2021-12-15
Version
2021.2 Chinese

描述

默认情况下:

  • 函数在 RTL 中作为独立层级块保留。
  • 同一层级上的任一函数的所有实例都使用相同 RTL 实现(块)。

set_directive_function_instantiate 命令用于为函数的每个实例创建唯一的 RTL 实现,允许对每个实例进行最优化。

默认情况下,以下代码可为全部 3 个实例的 foo_sub 函数生成单一 RTL 实现。

char foo_sub(char inval, char incr)
{
  return inval + incr;
}
void foo(char inval1, char inval2, char inval3,
  char *outval1, char *outval2, char * outval3)
{
  *outval1 = foo_sub(inval1, 1);
  *outval2 = foo_sub(inval2, 2);
  *outval3 = foo_sub(inval3, 3);
}

按如下示例部分所示使用指令可生成 3 个版本的 foo_sub 函数,每个版本都独立针对 incr 变量进行最优化。

语法

set_directive_function_instantiate <location> <variable>
  • <location> 即生成函数的唯一实例的位置(格式为 function[/label])。
  • <variable> <string> 用于指定将哪个函数实参 <string> 指定为常量。

选项

此命令不含任何选项。

示例

对于以上所示示例代码,以下 Tcl(或置于 foo_sub 函数中的编译指示)支持对 foo_sub 函数的每个实例进行与 incr 输入相关的独立最优化。

set_directive_function_instantiate foo_sub incr