前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >如何优化高扇出net?

如何优化高扇出net?

作者头像
Lauren的FPGA
发布2019-10-30 21:44:15
发布2019-10-30 21:44:15
2.5K0
举报
文章被收录于专栏:Lauren的FPGA

从UFDM角度讲,优化高扇出net应尽可能在设计初期完成,而且,在设计初期也较容易去做。高扇出net带来的显著问题是由于负载过多,导致某些路径的线延迟过大,从而出现时序违例;有时还会造成布线拥塞。

首先,要找到这些高扇出的net。这需要打开综合后或者Implementation任意阶段的DCP。执行如下命令:

这里,选项-load_types是可选的,其目的是显示net的类型,例如,是复位/置位还是时钟使能,如下图所示。

此外,这个命令还提供了一个选项-slr,这是针对SSI这类多die器件,可以显示每个die中高扇出的net。该命令显示出的高扇出net,我们需要关注这几个方面:

(1)Driver Type是什么?如果是LUT,那么是否可以替换为FF,因为工具仅支持寄存器复制

(2)判定高扇出是否构成时序收敛的瓶颈,这需要结合时序报告一起来检查

(3)该net是全局的还是局部的?比如,是全局时钟使能信号还是某些DSP或BRAM的使能信号

(4)对于多die器件,还要看这些net是否跨die

在综合阶段降低扇出

在综合阶段可以通过属性MAX_FANOUT降低扇出,但使用该属性时要谨慎一些。对于全局复位或全局使能信号,并不建议使用该属性,这会造成大量的寄存器复制,而且有些复制并不是最优的。通常,建议对局部高扇出net使用该属性,同时确保时序违例确实是因为高扇出引起的。这时要注意,有时扇出为50就被认为扇出高了,而有时扇出为500仍被认为是合理的,可接受的,这是从时序角度考虑的。另外,report_qor_suggestions命令会给出一些建议,有时这些建议就包括通过MAX_FANOUT降低扇出。所以,如果不明确到底把扇出讲到多少,可直接使用report_qor_suggestions给的结果。(MAX_FANOUT的具体使用方法可参考ug902)。

对于全局复位信号,可采用如下图(图片来源:Figure 3-19, ug949, V2019.1)所示的复位树方式降低扇出。这里要注意,对于等效寄存器要使用KEEP属性以防止综合时被优化掉。

扇出的高低可参考如下表格进行初步判定,表格来源:Figure 3-1, ug949, V2019.1。

在opt_design阶段降低扇出

opt_design阶段提供了一个选项-hier_fanout_limit,这是一种模块级别的优化扇出的方法。其目的是对于某个层级,如果发现某个net的扇出超过指定数值,则对其进行寄存器复制,以使最终的扇出小于等于该指定数值,同时,复制的寄存器和该net也在同一层次。该选项的使用方法如下图所示。

在place_design阶段降低扇出

首先要针对Vivado的版本查一下place_design有没有这样两个选项之一:-fanout_opt和-no_fanout_opt。最新版本中,有选项-no_fanout_opt,表明默认情形下,place_design会做扇出优化,如果不希望工具做此类优化,可添加选项-no_fanout_opt;之前的版本中可能会有选项-fanout_opt,如果需要做扇出优化就必须把这个选项添加进来。无论是-fanout_opt还是-no_fanout_opt都可以和-directive结合使用。

在phys_opt_design阶段降低扇出

phys_opt_design的很多Directive都可进行扇出优化。除此之外,选项-force_replication_on_nets还可以对指定的net进行复制。

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

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

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

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

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