VivadoHLS中对性能的优化是通过initiative interval的优化和latency的优化来完成。对启动间隔II最小化就是尽可能的提高输入数据之间或者输出数据之间的速率。从输入来看,优化II就是尽可能减少输入数据之间的时钟周期间隔,最大的吞吐率可以达到每个时钟周期有新的数据可以输入或者数据可以输出。
如果从单个函数设计考虑,检查函数中loop循环是否需要设置pipeline约束,用于提高循环中数据处理的吞吐率。
如果设计从函数层次关系考虑,当一个函数包含多个平行子函数的串行调用时,子函数之间存在数据传递通道时,对子函数间可以采用dataflow pipeline策略。
在开始分析vivadoHLS设计优化之前,先介绍一下HLS中对性能的两个指标,延迟和启动间隔(initiation interval)。延迟Latency和启动间隔initiation interval这两个指标一般都是针对不同的层次结构来说的,对于C/C++程序来说,它的基本层次元素就是函数function和常用到的循环结构loop,函数调用和循环嵌套具有不同的层次,如果设计中对层次元素进行约束,我们一般都需要分析这些元素是否满足了延迟和启动间隔的需求。
VivadoHLS层次设计优化1.pdf
(694.31 KB)
|