一、高层次综合工具转码RTL的说明
1.使用c/c++来开发FPGA,确实提高了开发的抽象层级和效率;
2.但是c/c++开发FPGA并非万能的,在实际开发中还是有很多不足和痛点的
二、HLS被诟病的问题
1.资源利用率是普遍偏高
hls生产的rtl代码为了保证功能正确会自动插入一些控制或者仲裁逻辑,这个会比写verilog的资源高很多;
hls是功能化设计,不像verilog可以作为高密度的设计;
2.性能上,设计超过400MHZ的超高频率是比较困难的
3.循环边界问题:当循环的迭代次数是运行时变量而非编译时常量时,HLS无法进行针对性优化,会生成更通用、复杂的控制逻辑,导致性能急剧下降(有案例显示延迟增加4-5倍)
4.黑盒优化失效:将子模块设为"黑盒"会阻碍HLS进行跨模块的全局优化-。而过度使用inline又可能生成无比庞大的数据流图,导致内存溢出或综合时间长达数小时-
5.细节不可控:开发者无法像手写RTL那样精确控制每一个寄存器、每一级流水线,一切依赖工具的综合与优化策略
6.编译速度慢且不支持多线程:HLS综合过程主要运行在单线程上-,对于较大设计,综合时间可能长达数小时甚至上百小时。
三、生态地图
1.工具链
2.语言支持
3.综合质量
4.调试和仿真
5.时序收敛
6.可预测性
7.库生态
8.学习曲线
9.编译时间
10.资源占用
11.代码可移植性