前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Vivado综合属性:MAX_FANOUT

Vivado综合属性:MAX_FANOUT

作者头像
Lauren的FPGA
发布2019-10-31 14:11:36
3.5K0
发布2019-10-31 14:11:36
举报
文章被收录于专栏:Lauren的FPGA

高扇出信号可能会因为布线拥塞而导致时序问题,常用的方法是通过寄存器复制以降低扇出,这可通过综合属性MAX_FANOUT实现。

MAX_FANOUT可应用于RTL代码中,也可以应用于XDC中,如下图所示。此外,MAX_FANOUT优先级高于-fanout_limit,且可作用于控制信号。

在使用MAX_FANOUT时可能会出现MAX_FANOUT不生效,可能的原因之一是其作用对象与负载不在同一层次,如下图所示。触发器在inst_0模块中,inst_0与inst_1在同一层次,但负载在inst_1下的三个模块inst_10、inst_11和inst_12中。

此时,一个可行的方法是将触发器搬移到相应的层次下再用MAX_FANOUT,如下图所示。

这里就不得不提到-flatten_hierarchy对MAX_FANOUT的影响。如下表所示。

MAX_FANOUT可作用于Xilinx IP内部信号,但未必会生效。这是因为IP本身会有一些保护属性,使得层次保留,造成触发器与负载不在同一层次下。此时,可使用如下方法。

另外,当MAX_FANOUT作用于bus中的某一位时,如下图所示,会造成其他位对应的寄存器也被复制。在这里rx_data_reg[0]~rx_data_reg[3]均被复制,这可能是不期望的。

为此,可采用如下方法。创建临时信号,将要使用MAX_FANOUT的信号和不使用MAX_FANOUT的信号隔离。

在RTL代码中使用MAX_FANOUT。

或在XDC中使用MAX_FANOUT。

通常,复制后的寄存器名字带有字符串rep。例如:

uart_rx_i0/uart_rx_ctl_i0/rx_data_reg[3]_rep

uart_rx_i0/uart_rx_ctl_i0/rx_data_reg[3]_rep__0

据此,可帮助查找已复制的寄存器。

结论

-MAX_FANOUT可有效帮助降低扇出,但需要确保待复制寄存器与负载在同一层次下

-对于IP,MAX_FANOUT未必生效,此时可借助phys_opt_design中的选项达到复制目的

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

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

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

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

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