Vitis HLS简介
Vitis™HLS是一种高层次综合工具,支持将C、C++和OpenCL™函数硬连线到器件逻辑互连结构和RAM/DSP块上。
Vitis HLS可在Vitis应用加速开发流程中实现硬件内核,并使用C/C++语言代码在Vivado®Design Suite中为赛灵思器件设计开发RTL IP。
目录
1 断言
C/C++ 中的 assert 宏在 Vitis HLS 中不受支持。
使用断言可能导致用户不易察觉的意外后果, 从而导致创建出错误逻辑。根据代码复杂性, 这也可能阻碍编译器最优化。
2 编译指示
如果实参包含 m_axi INTERFACE 编译指示用于指定含 2 个或 2 个以上端口的 bundle, 则不支持此实参上同时包含 DEPENDENCE 编译指示。
void top(int *a, int *b) { // both a and b are bundled to m_axi port gmem #prgama HLS interface m_axi port=a offset=slave bundle=gmem #prgama HLS interface m_axi port=b offset=slave bundle=gmem #pragma HLS dependence variable=a false }
编译指示 INTERFACE 不再支持原先 AMD Vivado™ HLS 中支持的 ap_bus 模式。您应改为使用 m_axi 接口。
3 顶层函数实参
重要提示! AMD Vitis™ HLS 不支持在子函数内使用 INTERFACE 编译指示。
含如下 C 语言数据类型的顶层实参:
• enum 或 enum 的任意用法(结构体、 enum 的阵列指针)
• ap_int(其中 N 为 1-32768 之间的值)
• _Complex
• _Half 和 __fp16
4 HLS 视频库
适用于视频实用工具和功能的 hls_video.h 已弃用, 并替换为 Vitis 视觉库。如需了解详细信息, 请参阅 GitHub 上的将 HLS 视频库移植到 Vitis 视觉库。
5 C 语言任意精度类型
Vitis HLS 不支持 C 语言任意精度类型。 AMD 建议使用具有任意精度的 C++ 语言类型。
此外, Vitis HLS 中的 C++ 任意精度类型的最大宽度限制为 4096 位, 而不是 Vivado HLS 所支持的 32K 位。
6 C 语言构造
• 不支持指针强制转换。
• 不支持虚拟函数。
参考:《Vitis高层次综合用户指南》(UG1399)。