前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >HLS中如何控制流水程度

HLS中如何控制流水程度

作者头像
Lauren的FPGA
发布2020-05-28 22:42:13
发布2020-05-28 22:42:13
1.7K0
举报
文章被收录于专栏:Lauren的FPGALauren的FPGA

Vivado HLS会自动决定函数内部操作的流水级数,但用户也可以通过其他方法控制流水程度。

方法1:在RESOURCE中修改Latency

RESOURCE是HLS中的一种Directive,用于指定操作需要用什么资源实现,例如,可以将数组映射为RAM_1P_BRAM,即单端口RAM,且该RAM采用Block RAM实现;类似的还有RAM_2P_LUTRAM、RAM_2P_URAM等。再例如,可以将加法操作映射为AddSub_DSP,这样加法就会用DSP48实现。在RESOURCE的界面中,有一个选项Latency,如下图所示。一旦设定Latency的具体数值,Vivado HLS会遵循该值以确定流水程度。

方法2:直接使用pragma HLS Latency

Vivado HLS提供了一个pragma HLSLatency,可作用于函数、循环或区域(由花括弧界定)。可设定Latency的最小值或最大值或者两者同时设定,该值对应时钟周期数。当作用于函数时,该值决定了计算所有输出所需要的时钟周期个数;当作用于循环时,循环完成所有迭代所需要的时钟周期个数(不是单次循环所需要的时钟周期个数)。如下图所示,可定义期望Latency的最小值(min)和最大值(max)。Vivado HLS总是尽可能地将设计的Latency降到最低。如果实际的Latency正好大于min而小于max,那么综合结果就满足了这个约束的要求;如果实际的Latency比min还要小,那么Vivado HLS会增加Latency以满足约束规定的min的要求;如果实际的Latency比max还要大,那么Vivado HLS会尝试达到max,但如果未能满足max的要求,则会发出警告。

方法3:通过config_core在全局设置

可以在Solution Settings添加命令config_core来设定core的Latency,如下图所示。这里的core可以是DSP48或Block RAM。当作用于Block RAM时,要求对应的数组使用了RESOURCE以明确指定Block RAM的配置方式。换言之,该命令不支持VivadoHLS自动推断的Block RAM(未使用RESOURCE)。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-05-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Lauren的FPGA 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档