高扇出信号线的优化策略(上)

时间:2025-08-28

在当今复杂的电子设计领域,高扇出信号线(HFN)问题成为了众多开发者面临的挑战之一。高扇出信号线指的是具有大量负载的信号线,这类信号线在实际应用中可能会引发一系列问题,严重影响设计的性能和稳定性。


高扇出信号线会占用大量的布线资源,极有可能导致布线拥塞。由于负载分散的原因,信号线的延迟也会进一步增大,从而使得在高扇出信号线上满足时序要求变得十分困难。例如,从图 1 所示的违例达 0.978 ns 的时序路径中可以看出,高扇出信号线 Net A 由 LUT 驱动,造成了 2.418 ns 的延迟。因此,对高扇出信号线进行优化,是解决此类时序路径问题的关键所在。

如何查询高扇出信号线


在设计过程中,准确识别高扇出信号线是进行优化的步。开发者可以使用 report_high_fanout_nets 命令来识别设计中的非时钟高扇出信号线。该命令具备多个选项,可用于打印有关高扇出信号线的详细信息,包括驱动程序信息、时序信息(-timing)和负载位置信息(-slr)。如果设计中存在导致 QoR 问题的高扇出信号线,建议在实现的中间步骤转储该。



另外,还可以采用以下表达式来查询高扇出信号线:
set fanout [expr {[get_property FLAT_PIN_COUNT [get_nets $Net_A] -1 }]

不同实现阶段应对高扇出信号线的方法


在设计的不同实现阶段,有多种因素会影响高扇出信号线的优化。如图 4 所示,DON'T_TOUCH 属性、KEEP HIERARCHY 属性和 MARK_DEBUG 属性会阻止执行任何 HFN 优化。其他属性如 MAX_FANOUT、CLOCK_BUFFER_TYPE 和 MAX_FANOUT_MODE 等,也都会对 HFN 优化产生影响。

综合阶段

在综合期间,MAX_FANOUT 属性可用于强制复制寄存器。该属性用于控制寄存器复制的时机,当某条信号线的扇出大于 MAX_FANOUT 值时,就会考虑对该寄存器进行复制。不过需要注意的是,无论时序如何,该属性都会被应用,所以必须谨慎使用。过量使用该属性可能会因过度复制而导致更多问题,尤其是当 HFN 位于寄存器控制信号上时。因此,建议在综合期间慎用该属性,可使用命令 set_property MAX_FANOUT [get_nets -hier] 。同时,不建议在驱动程序与负载之间设置额外的组合逻辑,因为这可能会妨碍某些复制优化操作。此外,DONT_TOUCH、KEEP_HIERARCHY 和 MARK_DEBUG 等属性可能会阻碍有益的复制操作。如需了解这些属性的更多详情,请参阅 UG901:https://docs.amd.com/r/en-US/ug901-vivado-synthesis/KEEP_HIERARCHY 。
例如,如果某条信号线的 MAX_FANOUT 属性设为 3,那么该信号线的驱动程序必须复制 2 次,如图 5 所示。同样,若有一个源,其中有 10,000 个负载分布在整个设计中,将 MAX_FANOUT 设为 1,000 来限制扇出,工具会将该源复制 10 次,并为每个复制的源分配 1,000 个负载。

逻辑优化阶段

在逻辑优化(opt_design)期间,有多种间接方式可用于控制高扇出信号线。



了解对某个设计要素进行了哪些优化是很有帮助的。OPT_MODIFIED 属性会明示对设计要素执行了哪些优化(按优化的执行顺序),同样,OPT_SKIPPED 会显示设计要素上跳过了哪些优化。在某些情况下,DONT_TOUCH 或类似属性可能阻止优化。建议搜索日志,查找有关跳过某一项优化的具体原因的更多信息。与前述属性类似,PHYS_OPT_MODIFIED 与 PHYS_OPT_SKIPPED 是用于物理优化的等效属性。如果在 opt_design 中因使用 hier_fanout_limit 选项而导致复制驱动程序,会发现 OPT_MODIFIED 属性与 HIER_FANOUT_LIMIT 相等,如图 7 所示。

上一篇:RECOM RACPRO1 系列 AC/DC DIN 导轨电源在关键工业自动化的应用
下一篇:高扇出信号线优化技巧(下)

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料