HLS高层次综合设计技巧--HLS作为FPGA设计存在的缺陷 一、高层次综合设计缺陷之代码的可综合性1.不支持递归函数的设计为什么不支持递归函数因为递归函数的动态特性这个是和FPGA综合设计的静态硬件结构的物理限制是相违背的2.不支持动态分配内存malloc和new这些标准库是无法支持的3.STL标准模块库几乎不可支持4.无法支持系统函数5.双重指针**要特别注意6.vivado hls是外发在设计钟实现latch锁存器的7.全局变量的使用需非常谨慎可能引发不可预测的竞争和综合问题8.数组大小为1时行为异常可能导致比预期更差的延迟和资源消耗-9.函数边界阻碍全局优化默认将子函数视为黑盒无法进行跨函数边界的优化10.循环携带依赖误报HLS可能错误地报告循环间存在依赖关系阻止优化11.依赖指令Dependence使用不当引发问题滥用#pragma HLS DEPENDENCE可能导致RTL仿真挂起二、应该合理的理解HLS1.vivado hls不是一个代码转换器而是一套硬件开发环境2.vivado hls设计必须采用硬件设计的思维来编写c代码3.既要关注算法逻辑和功能的正确性也要关注时序面积资源和功耗4.vivado hls代码默认是顺序执行的所以你需要通过指令优化来指导工具进行并行化优化