2026年,想入门学习AMD(Xilinx)的Vitis HLS进行算法硬件加速,对于有C/C++和FPGA基础但没接触过HLS的工程师,有哪些常见的从软件思维到硬件思维转换的‘坑’?如何评估一个算法是否适合用HLS实现?
我有一定的C/C++编程经验和传统的Verilog FPGA开发基础,现在想学习Vitis HLS来提高算法硬件实现的效率。但看了一些教程,感觉HLS虽然写起来像软件,但优化思路和硬件息息相关,直接照搬软件代码往往性能很差。想请教有经验的工程师,在初学HLS时,最容易在哪些地方犯错(比如循环的展开与流水、数组映射到存储资源、接口协议选择)?另外,如何判断一个算法(比如图像处理的某个算子)是适合用HLS快速实现,还是必须手写RTL才能达到性能要求?希望得到一些实战经验分享。