作为FPGA开发者,在项目中使用‘HLS(高层次综合)’工具将C++算法转换为RTL,在实际工程中主要会遇到哪些‘陷阱’?如何保证结果的质量和性能?
学校课题尝试用Vitis HLS做了一个图像滤波的加速器,感觉开发速度确实比手写RTL快,但最终资源的利用率和时序感觉不如直接写RTL可控。想请教有经验的工程师,在将HLS用于实际产品开发时,有哪些常见的坑?比如接口协议、循环展开、数据依赖、最终时序收敛等。在什么场景下适合用HLS,什么场景下必须回归手写RTL?有没有一套验证HLS输出代码质量的最佳实践?