Vivado HLS指令 - pragma HLS pipeline

﹥>﹥吖頭↗ 提交于 2019-11-27 05:04:40

优化指令pragma HLS pipeline的作用是缩短C函数或C循环之内的指令触发间隔(initial interval,II)。

在不使用该指令的情况下,函数或循环默认的指令触发间隔II为N;使用该指令后,编译器将将对II进行优化,默认将其缩短为1。用户也可以在优化指令中指定期望的II值。

下图(转自Xilinx官网)展示了使用优化指令前后设计所具有的时序。图A显示,默认情况下,循环在每次执行时消耗3个时钟周期,完成3次循环至少需要等待8个时钟周期;而图B显示使用优化指令以后,RD/CMP/WR可以并发按流水线方式执行,3次循环的触发间隔缩短为1,因此执行相同程序只需要4个时钟周期。

如果Vivado HLS编译器不能将II优化为指定值,那么会在默认情况下把II优化到最小。

指令语法

#pragma HLS pipeline II=<int> enable_flush rewind

II = <int> 设定期望的流水线程序触发间隔II;默认值为1。

enable_flush (可选)如果流水线输入不有效,则清空流水线。

rewind (可选)使多次循环执行形成流水线,多次循环之间不产生时间间隔,如下图所示。在这种情况下,循环之前的代码段将:

1)作为初始化;2)仅被执行1次;3)不能包含if-else。

示例

对foo函数进行流水线优化,设定II=1。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!