最终转换的是HDL,也就是说HDL干不了的HLS肯定干不了,HDL能干的HLS也不一定能成。HLS与HDL相比,使用C/C++来设计电路,并可以自动添加流水、循环(部分)展开等操作。
- C仿真是验证的C文件的语法正确性?C综合的输出文件是HDL文件吗?然后后续步骤就是常规HDL设计流程了?
-C仿真是算法层面的验证, C test bench验证的是C设计的正确性而非和C设计文件一起转换成HDL和相应的tb文件之后再进行验证(这一过程也存在),这样使得验证速度提升,时序等正确性由HLS工具来保证。 - directive为何如此命名,看起来是一个很重要的东西,但没有get到其重点在哪?(对常规HLS生成的HDL进行人为干涉)通过directive可以修改哪些内容,directive的设计是想人为弥补自动生成的不足,主要是修改接口,但即使有directive还是无法匹敌HDL,欠缺在哪呢?如何修改?会有单独的文件形式保存吗?(directive.tcl文件,保存的内容和vivado在命令行窗口输入的脚本命令很像)
- C的Coding style如何影响最终性能,为何会说HLS性能不如HDL,是具体在哪里有不足?
乘法器消耗的资源比加法器多,因此需在C语言算法层面就尽可能减少乘法的使用。
递归算法不支持,原因在于无法综合成固定的电路出来,同理动态存储空间分配也不行。
需要loop merge, 默认是没有并行的,仍按照高级语言顺序执行,但在两个loop的循环边界不同或其中至少一个是变量的时候,不适用loop merge。循环边界可以是变量,该变