0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

高扇出信号线优化技巧(上)

XILINX开发者社区 ? 来源:XILINX开发者社区 ? 2025-08-28 10:45 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

本文作者:AMD 工程师 Vanaja Undevalli

概述

高扇出信号线 (HFN) 是具有大量负载的信号线。作为用户,您可能遇到过高扇出信号线相关问题,因为将所有负载都连接到 HFN 的驱动程序需要使用大量布线资源,并有可能导致布线拥塞。鉴于负载分散,导致进一步增大信号线延迟,因此在高扇出信号线上也可能难以满足时序。

9b8f2536-7cec-11f0-a18e-92fbcf53809c.png

图 1:违例达 0.978 ns 的时序路径

通过观察数据路径即可发现,高扇出信号线 Net A 是由 LUT 驱动,它造成了 2.418 ns 延迟。优化此高扇出信号线有助于解决此时序路径问题。

如何查询高扇出信号线

您可使用 report_high_fanout_nets 命令来识别设计中的非时钟高扇出信号线。此命令有多个选项可用于打印有关高扇出信号线的详细信息,包括驱动程序信息、时序信息 (-timing) 和负载位置信息 (-slr)。如需获取这些选项的完整列表,请参阅 UG906:

https://docs.amd.com/r/zh-CN/ug906-vivado-design-analysis

如果您的设计中具有导致 QoR 问题的高扇出信号线,那么强烈建议您在实现的中间步骤转储该报告。

9ba646b2-7cec-11f0-a18e-92fbcf53809c.png

图 2:“report_high_fanout_nets -histogram”的结果

9bb79caa-7cec-11f0-a18e-92fbcf53809c.png

图 3:“report_high_fanout_nets –timing”的结果

查询高扇出信号线的另一种方法是采用以下表达式:

set fanout [expr {[get_property FLAT_PIN_COUNT [get_nets $Net_A] -1 }]

如何在不同实现阶段应对高扇出信号线

9bc75316-7cec-11f0-a18e-92fbcf53809c.png

图 4:此图呈现了在实现的不同部分中影响高扇出信号线优化的命令选项和属性。

DON'T_TOUCH 属性、KEEP HIERARCHY 属性和 MARK_DEBUG 属性会阻止执行任何 HFN 优化。其他属性包括 MAX_FANOUT、CLOCK_BUFFER_TYPE 和 MAX_FANOUT_MODE,这些属性全都会影响 HFN 优化。

综合

MAX_FANOUT

在综合期间,您可使用 MAX_FANOUT 属性来强制复制寄存器。该属性用于控制发生寄存器复制的时机。如果某条信号线的扇出大于 MAX_FANOUT 值,就会考虑对该寄存器进行复制。请注意,无论时序如何,都会应用该属性,因此务必谨慎使用,过量使用会因过度复制而导致更多问题(当 HFN 位于寄存器控制信号上时尤其如此)。建议在综合期间慎用该属性。

set_property MAX_FANOUT [get_nets -hier ]

建议不要在驱动程序与负载之间设置额外的组合逻辑,否则会妨碍某些复制优化操作。

有些属性可能会阻碍执行此类有益的复制操作,其中包括:

DONT_TOUCH:阻止在设计元素上发生任何修改或复制

KEEP_HIERARCHY:指示工具在复制期间保留层级(如果 HFN 驱动程序及其负载位于同一模块内,则会阻止复制)

MARK_DEBUG:禁止呈现某条信号线以供调试

如需了解有关这些属性的更多详情,请参阅 UG901:

https://docs.amd.com/r/en-US/ug901-vivado-synthesis/KEEP_HIERARCHY

以下是一个简单的示例。如果该信号线的 MAX_FANOUT 属性设为 3,则该信号线的驱动程序必须复制 2 次,如下所示:

9bd643d0-7cec-11f0-a18e-92fbcf53809c.png

图 5:通过复制源寄存器来减少扇出的简单示例。

同样,如果有个源,其中有 10,000 负载分布在整个设计中,并且您通过将 MAX_FANOUT 设为 1,000 来限制扇出,那么,该工具会将该源复制 10 次,然后为复制的每个源分配 1,000 负载。

逻辑优化

在逻辑优化 (opt_design) 期间,有多种间接的方式可用于控制高扇出信号线。以下部分选项可能有用:

BUFG 插入

默认在逻辑优化中,会在满足某些要求的高扇出控制信号线上插入 BUFG 或 BUFG_FABRIC 时钟缓冲器(在 Versal 架构中)。这是很有效的,因为全局时钟布线资源可以减少互连结构布线上的拥塞,从而帮助缓解时序问题。

非时钟信号线的扇出必须大于 25k 才符合此条件。 使用 BUFG 插入时,该工具较为保守,对于 Ultrascale+/Versal,限制是 24 个 BUFG(此限制不包括 BUFG_GT)

用户指定的 BUFG 插入

如果信号线没有插入 BUFG,您可以通过 CLOCK_BUFFER_TYPE 属性强制执行 BUFG 插入。该工具会为任何指定的信号线添加 BUFG/BUFG_FABRIC,并且不会将其计入先前提及的限值 24,前提是有走线可用。

9be38f68-7cec-11f0-a18e-92fbcf53809c.png

BUFG 负载拆分

在某些情况下,插入 BUFG 的过程中会拆分时钟网络,使其分别驱动组合负载与时序负载。发生拆分时,时序负载由 BUFG 驱动,组合负载则由原始驱动程序来驱动。针对 opt_design 插入的 BUFG 和用户插入的 BUFG 都会发生此拆分操作。当 BUFG 输出信号线驱动组合负载与非时钟时序负载(例如,高扇出复位)时,预计会发生负载拆分。

层级复制

用户还可通过该工具使用 -hier_fanout_limit 选项根据高扇出信号线的逻辑层级来复制该信号线的驱动程序。该工具会在层级内查找,如果发现驱动程序所驱动的负载超出指定限值,那么该工具就会复制驱动程序。

这有助于缓解高扇出信号线所导致的拥塞。这是一种基于规则的复制,无法感知时序,因此建议谨慎使用。

注释:为 -hier_fanout_limit 选项指定的最小限值为 512。

9bee77ac-7cec-11f0-a18e-92fbcf53809c.png

图 6:扇出为 60,000 的信号线

当 -hier_fanout_limit 设为 1000 时,HFN 驱动程序会复制 59 次,每次复制的驱动程序都会驱动 1000 个负载。

您可使用以下命令实现此目的:

opt_design -hier_fanout_limit 1000

了解对某个设计要素进行了哪些优化是很有帮助的。OPT_MODIFIED 属性会明示对设计要素执行了哪些优化(按优化的执行顺序)。同样,OPT_SKIPPED 会显示设计要素上跳过了哪些优化。在某些情况下,DONT_TOUCH 或类似属性可能阻止优化。建议搜索日志,查找有关跳过某一项优化的具体原因的更多信息。与前述属性类似,PHYS_OPT_MODIFIED 与 PHYS_OPT_SKIPPED 是用于物理优化的等效属性。

9bfdede0-7cec-11f0-a18e-92fbcf53809c.png

图 7:含 opt_design 选项与对应 OPT_MODIFIED 值的表

如果您在 opt_design 中遇到因使用 hier_fanout_limit 选项而导致复制的驱动程序,那么您会发现 OPT_MODIFIED 属性与 HIER_FANOUT_LIMIT 相等。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 负载
    +关注

    关注

    2

    文章

    628

    浏览量

    35419
  • 寄存器
    +关注

    关注

    31

    文章

    5460

    浏览量

    125718
  • 信号线
    +关注

    关注

    2

    文章

    183

    浏览量

    21989
  • 时序
    +关注

    关注

    5

    文章

    401

    浏览量

    38233

原文标题:开发者分享|高扇出信号线优化技巧(上)

文章出处:【微信号:gh_2d1c7e2d540e,微信公众号:XILINX开发者社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    扇出信号线优化技巧(下)

    该属性会将每个驱动程序的扇出限制告知工具,并通过指示布局器了解扇出限制来指引该工具对扇出的负载进行分配。此属性可同时应用于 FF 与 LUT 驱动程序。当 MAX_FANOUT 值小
    的头像 发表于 08-28 10:47 ?248次阅读
    <b class='flag-5'>高</b><b class='flag-5'>扇出</b><b class='flag-5'>信号线</b><b class='flag-5'>优化</b>技巧(下)

    如何在模拟电路PCB板做好信号线的布局走线

    有一个公认的准则就是在所有模拟电路印制电路板中,信号线应尽可能的短,这是因为信号线越长,电路中的感应和电容捐合就越多,这是不希望看到的。现实情况是,不可能将所有的信号线都做成最短,因而,布线时首先要考虑的就是最容易产生干扰的
    的头像 发表于 07-17 08:57 ?1.3w次阅读

    音频信号线的工作原理和制作要求

    音频信号线的工作原理和制作要求 音频信号线是如何工作的?从传输信号的本质讲音频信号线有两种不同的类型。第一种叫做互连
    发表于 03-31 10:12 ?1.3w次阅读

    Altium Designer信号线束的使用

    使用Altium Designer进行原理图设计时,好多人不知道信号线束如何使用,此文详细介绍如何使用信号线
    发表于 12-09 15:19 ?0次下载

    信号线和电源线的区别

    信号线和电源线最大的区别就是信号线传输模拟信号或是数字信号,电源线用来传输电流。
    的头像 发表于 05-17 15:11 ?7w次阅读

    信号线是怎么传输的

    信号线的概念比数据线宽泛,信号包括语音、数据、图像等,传输这些信号线都叫信号线,电话线本身就是
    的头像 发表于 05-17 15:14 ?1.5w次阅读

    信号线有哪些

    我们可将信号线分为强信号线、弱信号线和标准信号线.强信号线是指音箱与功放之间的连接线,这类线往往
    的头像 发表于 05-17 15:20 ?1.5w次阅读

    digilent信号线组件介绍

    Analog Discovery信号线组件,或称Flywire,是与Analog Discovery产品原装信号线相同的组件。
    的头像 发表于 11-26 11:08 ?1876次阅读
    digilent<b class='flag-5'>信号线</b>组件介绍

    音频信号线最佳长度多少合适

    音箱信号线的最佳长度选择原则是:越短越好;下面对音箱信号线的传输机理描述一下。
    发表于 06-26 17:29 ?1.8w次阅读

    信号线和屏蔽线的区别 屏蔽线可以当信号线用吗?

    信号线和屏蔽线是电子和通信领域中常用的两种电缆类型,它们在传输信号和数据方面各有特点和用途。
    的头像 发表于 04-09 18:09 ?6091次阅读

    差分信号线与单端信号线的区别

    差分信号线与单端信号线是电子通信领域中两种常见的信号传输方式。它们各自具有独特的特性和应用场景。
    的头像 发表于 04-10 17:02 ?1977次阅读

    信号线是什么线

    信号线主要是指在电气控制电路中用于传递传感信息与控制信息的线路。以下是对信号线的详细解释: 一、定义与功能 定义:信号线是用来传输由音源(信号源)所产生的各种
    的头像 发表于 11-01 10:05 ?3681次阅读

    差分信号线的选择与处理

    和失真。 常见的差分信号传输线的阻抗通常为50欧姆或100欧姆,具体取决于应用需求和标准规范。 带宽 : 差分信号线的带宽应足够宽,以支持所需的高速数据传输。 选择具有带宽的
    的头像 发表于 12-25 18:05 ?1679次阅读

    信号线和光纤线的区别是什么

    信号线和光纤线是两种完全不同的传输介质,它们在传输原理、结构特性、性能表现及应用场景均有显著差异。以下从五个核心维度为您详细对比: 1、传输原理: 信号线:通过电
    的头像 发表于 03-25 10:09 ?832次阅读

    信号线和屏蔽线有什么区别

    信号线和屏蔽线是电子系统中常用的两种线缆,它们在功能、结构、应用场景等方面存在显著差异。以下是两者的详细对比: 1. 功能与作用 信号线 功能:传输电信号或数据,用于设备之间的信息交互
    的头像 发表于 04-24 10:05 ?1027次阅读
    <b class='flag-5'>信号线</b>和屏蔽<b class='flag-5'>线</b>有什么区别