编码样式的影响 - 2021.2 Chinese

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

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

编码样式对于函数的主要影响在于影响函数实参和接口。

如果准确调整函数实参大小,Vitis HLS 即可在整个设计中传输此信息。无需为每个变量创建任意精度类型。在以下示例中,有 2 个整数相乘,但仅后 24 位用于生成结果。

#include "ap_int.h"

ap_int<24> foo(int x, int y) {  
 int tmp;

 tmp = (x * y);
 return tmp
} 

对此代码进行综合时,可生成 32 位乘法器,输出截断至 24 位。

如果将输入大小正确调整为 12 位类型 (int12)(如下代码示例所示),则最终 RTL 使用 24 位乘法器。

#include "ap_int.h"
typedef ap_int<12> din_t;
typedef ap_int<24> dout_t;

dout_t func_sized(din_t x, din_t y) {  
 int tmp;

 tmp = (x * y);
 return tmp
}

针对 2 项函数输入使用任意精度类型即可足以确保 Vitis HLS 使用 24 位乘法器创建设计。这样即可在整个设计中传输 12 位类型。赛灵思建议您正确调整层级中所有函数实参的大小。

总而言之,从函数接口(尤其是从顶层函数接口)直接驱动变量时,即可阻止执行最优化。常见用例是使用输入作为循环索引上限。