Verilog代码小白
补充一个角度:从数据流和任务级并行去思考。
HLS里最高效的模型往往是数据流(Dataflow)。你可以把算法分成几个独立的阶段(比如读数据、计算、写结果),每个阶段用一个函数实现,然后用dataflow pragma连起来。这样每个阶段可以独立地、并行地运行,像一个流水线。这对提高吞吐率非常有效,而且延迟是各阶段延迟之和,也容易预估。
优化延迟的一个高级技巧是“前瞻”或“预取”。如果算法允许,可以在处理当前数据时,就把下一批需要的数据先读进来。这需要你仔细设计数据的缓冲和传递。
最后,别迷信工具的报告。一定要做协同仿真(co-simulation),用真实的测试向量去跑,看看在仿真环境下的延迟和吞吐率。有时候报告乐观,但实际仿真时因为控制逻辑或者握手问题,性能会差一些。仿真结果才是更可靠的依据。
