上期内容:图解Vivado HLS设计流程
面向C/C++的HLS设计在转化成RTL代码时,Vivado HLS会生成相应的综合报告。通常在报告中会看到这样的一些指标,例如:Latency、II(IterationInterval)、Loop Latency和Loop Interation Interval。往往这些指标成为设计的优化目标,例如,有些设计需要降低Latency,有些设计需要改善II。因此,了解这些指标的含义就显得非常重要。
为便于说明,我们以带有for循环的算法描述为例,这并不失一般性,毕竟很多场合都需要用到for循环。这里假定for循环边界为3即循环变量i的可取值为0~3。整个设计的性能指标如下图所示。
不难看出,Latency描述的是从输入到该输入对应的输出所需要的时钟周期;而Loop Latency反应的则是for循环由输入到输出所需要的时钟周期。Trip Count就是循环次数,在这里Trip Count为4。从图中可以看出每次for循环的Latency为3,所以Loop Latency也就是单次for循环Latency与TripCount的乘积。II反应了整个设计的吞吐率,它表征的是当前输入与允许的下一次输入的时钟周期间隔,在这里该值为14;类似的,Loop II则是当前循环与下一次循环输入之间的时钟周期间隔。
从上图也可以看出,这些指标都是以时钟周期为单位衡量的,同时,这些指标与其在RTL设计中的含义是完全一致的。
如果文章对你有收获,欢迎转发~