《电子技术应用》
您所在的位置:首页 > 可编程逻辑 > 其他 > FPGA教学——Vitis HLS 2022.1新特性: performance pragma

FPGA教学——Vitis HLS 2022.1新特性: performance pragma

2022-08-18
作者: LaurenGao
来源: FPGA技术驿站
关键词: FPGA Vitis HLS

  Vitis HLS 2022.1新增了一个pragma名为performance,其施加对象是指定函数或循环。如果是循环,要求循环边界是固定常数,若循环边界是变量,则需要通过pragma TRIPCOUNT指定其取值范围。

以循环为例,使用performance时要指定循环的target_ti(transaction interval)。这里target_ti和II(initial interval)以及Tripcount的关系可表示为:

target_ti = ii x Tripcount

换言之

target_ti = Fclk / Operations per second

它实际上反映了循环或函数的吞吐率。

在performance的作用下,Vitis HLS会尝试通过自动添加PIPELINE、UNROLL或ARRAY_PARTITION等pragma来达到target_ti所定义的值,但并不能确保一定可以满足最终的性能要求。我们来看一个案例。在这个案例中我们对三个函数中的for循环添加了PERFORMANCE pragma,如下图中的橙色方框所示。

微信截图_20220818142515.png

  Vitis HLS生成的报告如下,可以看到并不是所有的PERFORMANCE都达成,只有第13行的PERFORMANCE最终生效,工具会根据此约束自动推断出UNROLL和PIPELINE两个pragma。同时在报告中也能看出这两条pragma的作用对象。这也不难理解,对于嵌套的for循环,一旦外层for循环被施加了PIPELINE,那么内存for循环将自动被展开(也就是被施加了UNROLL)。另外两个PERFORMANCE并没有生效,工具在报告中以警告的形式显示出来。没有达成的原因是PIPELINE的II无法达成,毕竟II直接影响到target_ti。

微信图片_20220818142528.png

  从这个案例中我们可以看出,PERFORMANCE其实是一种自动化的方式或者说智能地去选择施加什么样的pragma以达到目标吞吐率。

 更多信息可以来这里获取==>>电子技术应用-AET<<

微信图片_20210517164139.jpg

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。