前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何对Block RAM使用Retiming(1)

如何对Block RAM使用Retiming(1)

作者头像
Lauren的FPGA
发布2024-04-18 15:50:59
810
发布2024-04-18 15:50:59
举报
文章被收录于专栏:Lauren的FPGALauren的FPGA

对于逻辑级数较大的路径,常用的时序收敛的方法之一就是采用Retiming(中文翻译为重定时)。Retiming到底是怎么回事呢?我们可以通过下图理解。图中通过搬移触发器的位置减小了关键路径的逻辑级数。无论是把触发器向前搬移还是向后搬移,搬移后整个路径的Latency和搬移前的Latency保持一致。可以看到Retiming的前提是相邻路径有可供搬移的触发器,换言之,相邻路径的时序裕量较为“富余”,从这些“富余”中拿出一部分给时序较为紧张的路径。这样,时序紧张的路径其逻辑级数降低了,而相邻的时序“富余”的路径逻辑级数增加了,达到整体逻辑级数的平衡。

Vivado提供了多种方法实现Retiming。在综合选项设置界面提供了-retiming,如下图所示。在这里,它是一个全局选项,作用于设计中的所有模块。除此之外,Vivado还提供了模块级综合技术,可针对关键模块使用Retiming,此时需要借助属性BLOCK_SYNTH.RETIMING实现。显然,这个综合属性是针对指定模块的,所以这是一种更精细的设置方法。实践证明往往全局选项-retiming加上模块级Retiming能获得更好的效果。

上述两种方法人工干预度都较低,如果用户能够判定哪些路径上的触发器可搬移以改善相邻路径的时序,那么就可以使用Vivado提供的综合属性RETIMING_BACKWARD或RETIMING_FORWARD,直接将其作用于指定的触发器。另外,在PSIP阶段还可以使用属性PSIP_RETIMING_BACKWARD或PSIP_RETIMING_FORWARD实现Retiming。对用户而言,这一过程还是有一定难度的,好在Vivado提供了另外一种方式就是QoR建议,有时该报告就会包含Retiming的相关设置,如下图所示。这样用户只需将该建议添加到工程中直接使用即可。

此外,phys_opt_design还提供了-directive AddRetime,既可在布局之后执行也可在布线之后执行。本质是是因为phys_opt_design提供了选项-retime。

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

本文分享自 FPGA技术驿站 微信公众号,前往查看

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

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

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