网上关于hls的东西太少 了。写一些。
Verilog 设计考虑很多的是 存储器的使用,资源的多少。
hls 则主要考虑 算法能否 pipeline, dataflow, unroll,因此,多是用空间换时间。
还有,算法的并行化,在Verilog里多是用 模块实例化实现,以及always语句。 在hls中,没有always,所以用 函数来生成模块,以实现并行化。
但是,过小的函数会被hls自动inline, 所以还是要看综合的效果, 不行就 inline off 一下。
所以,在写C算法的时候,要尽量考虑数据的情况,而不是原来基于PC的那种高效C代码。
0314更新------------------------------
静态变量可以使用,会被综合成 寄存器, 因为要在多次计算中保持结果。
常量会综合成rom
全局变量默认综合成寄存器, 可以通过 configuration 导出成IO, 但是 xilinx不建议大规模使用 全局变量
hls支持指针,和指针数组,
Vivado HLS supports pointers to pointers for synthesis but does not support them on the
top-level interface, that is, as