在 逻辑层级不多,但是延时较高的 net 中,可以使用 max_fanout 来设置扇出,
但是要注意,还要如果驱动与负载不在同一层,一定要约束到负载的input,否则不生效
并且还要在 例化负载模块时加上 (* keep_hierarchy="no" *),否则如果负载在不同的层级下,也会报如下的错误,fanout 不生效
INFO: [Synth 8-5777] Ignored max_fanout on net down_rx_cmd[0] because some of its loads are not in same hierarchy as its driver
参考ug901 Vivado Design SuiteUser Guide -- Synthesis 的 p59
一定要在 synthesis 的 log 中看到如下的 log,才算生效
INFO: [Synth 8-4618] Found max_fanout attribute set to 50 on net down_rx_cmd[0]. Fanout reduced from 382 to 48 by creating 7 replicas.
也可以用 reports -- reports high fanout 查看负载情况,或者直接查看原理图,
如果驱动reg 被用 ila 观察,则会自动加 mark_debug 和 dont_touch 属性,会使 max_fanout 不起作用,如果一定要观察此信号,可以将此信号至少打两拍,然后拉到 ila 观察,才不会影响 max_fanout 的生效
其他注意事项可以参考Vivado综合属性之MAX_FANOUT_努力不期待的博客-CSDN博客_max_fanout
关于Vivado综合属性:MAX_FANOUT_jerwey的博客-CSDN博客_max_fanout