ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Altium Designer等长设计:Signal Length与Routed Length的核心差异

Altium Designer等长设计:Signal Length与Routed Length的核心差异 做高速板这些年我见过太多人在等长这件事上栽跟头。明明规则设了、蛇形也拉了DRC一跑还是满屏报错。多数时候问题不在手感而在没搞清 Altium Designer 里两个最基本的长度概念Signal Length 和 Routed Length。这俩名字看着像双胞胎实际算的东西完全不是一回事。等长规则判定、蛇形调节、DRC 检查背后用的全是 Signal Length可很多人在交互调整时盯着的却是 Routed Length最后自然对不上账。这篇文章想跟你把这件事彻底聊透两个长度怎么来的、等长目标值怎么定、蛇形工具怎么用才不翻车顺带把 AD 22 版里跟等长相关的几个值得升级的新特性也过一遍。不管你是刚接触高速布线的新手还是被 DDR 等长折磨过的老手这篇都值得花几分钟看下去。1. 先搞懂 Signal Length 和 Routed Length 到底差在哪1.1 两个名字相似含义却完全不同先说 Routed Length。在 Altium Designer 里它指的是当前网络上所有已布线走线图元Track 线段和 Arc 圆弧的几何长度总和。说白了就是铜箔走线在平面上从起点画到终点总共拉了多少长度。这里面不包含过孔也不包含焊盘延伸纯粹是走线图元的几何长度之和。而 Signal Length 则完全不同。它描述的是电信号从驱动引脚到接收引脚实际经过的完整导体路径总长。在 AD 的计算里Signal Length 走线长度 过孔贡献 焊盘延伸。打个比方Routed Length 像是地图上高速公路的里程数Signal Length 才是你开车实际从匝道进、隧道穿、出口出之后跑的完整路程。信号经过过孔时要沿着镀铜孔壁从一层走到另一层这段垂直方向的导体路径Routed Length 完全不care但 Signal Length 会老老实实算进去。所以当你选中一个网络在 Properties 面板里看到这两个数字不一样时别以为软件出了问题。恰恰相反它们本来就应该不一样差多少主要取决于过孔数量和焊盘结构。尤其是多层板、盲埋孔多的设计这个差值可能非常夸张。1.2 为什么等长判定必须用 Signal Length高速信号的等长本质上是等时间延迟而信号在走线、过孔、焊盘中传播都存在延迟且延迟与导体长度直接相关。既然过孔里的那段铜壁信号确实要穿过去那它的长度就必须计入延迟预算。这就是为什么 AD 的 Matched Length 等长规则、XSignals 长度计算以及交互式长度调整工具里显示的目标长度通通以 Signal Length 为准。举一个实际计算例子。一块 1.6mm 板厚的常规四层板一个普通通孔过孔信号从顶层穿到底层过孔内部镀铜筒的路径长度大约就是 1.6mm再加上顶底两层焊盘的延伸量一个过孔对 Signal Length 的贡献通常在 1.8mm 到 2.2mm 左右具体跟焊盘尺寸和孔径有关。假设某一组等长网络里有 8 个网络其中一个网络走了 6 个过孔另一个只走了 2 个过孔光过孔贡献的差值就可能超过 8mm。对于 DDR 这一类要求等长误差控制在 ±25mil约 0.6mm甚至更严的信号组来说这个差异足以让整组等长彻底报废。所以你如果只盯着 Routed Length 去拉蛇形把所有网络都拉到走线几何长度一致结果一跑 DRC 照样报错。这不是软件抽风是你在用错误的标尺衡量正确的事情。1.3 长度数据在 AD 里到底去哪里看在 AD 里查看这两个长度的入口有好几个我按使用频率给你排一下最常用的是 PCB 面板的 Nets 模式打开 PCB 面板切换到 Nets 视图列表里会显示每个网络的名称、Routed Length、Signal Length。默认可能没有全部显示需要右键列表标题栏选择 Select Columns把 Signal Length 勾上。选中某个网络、走线或过孔后Properties 面板里会有 Length 区域里面同时列出 Routed Length 和 Signal Length还能看到当前选中的走线片段的长度用起来非常直观。在布线过程中按 ShiftH 切换 Heads Up 显示光标旁会实时显示当前走线累计长度这个累计长度在你布线的当下其实就是走线几何长度相当于 Routed Length 的实时版。但从等长角度看布完以后必须回到 Signal Length 做最终确认。建议每次做等长检查之前先在 PCB 面板里把 Signal Length 列排序扫一眼这组网络的最大值和最小值心里先有个底。这一步花不了十秒钟但能帮你避免很多无意义的蛇形微调。2. 等长规则设置先算清目标值再谈蛇形2.1 建立网络类或 XSignal别在单条网络上较劲等长从来不是把每个网络拉得一样长这么简单它是一组网络之间的相对关系。所以在 Altium Designer 里你首先要做的事不是拉线而是把这组网络圈成一个整体让规则能作用于整组。最基础的做法是网络类Net Class。在 PCB 编辑界面按 D、C 打开 Design Classes 面板在 Net Classes 下新建一个类比如 DDR_DQ_0_7然后把 DQ0 到 DQ7 这 8 根网络全部拖进去。接下来写规则的时候直接选择这个 Net Class 就行。网络类的优点是简单直接适合数据线这一类相对规整的信号组。但如果你处理的是带 T 点分支、菊花链拓扑、或者一个驱动端接多个负载的复杂链路我强烈建议你改用 XSignal。XSignal 在 AD 18 之后逐步完善到了 AD 22 已经相当成熟。它可以把一个完整的逻辑信号路径定义为一个对象不管中间经过了几个物理网络、几个过孔、几个连接器都被纳入同一条 XSignal 的 Signal Length 计算里。举个例子CPU 到 DDR 颗粒的地址线中间经过排阻、过孔、可能还有 T 点物理网络上被拆成了好几段如果用普通网络类做等长你只能在每个物理段上分别做约束拓扑复杂时非常痛苦。用 XSignal整条路径作为一个长度对象参与等长效率和准确性完全不是一个级别。2.2 目标长度怎么定才不是拍脑袋很多新手做等长规则时会直接在 Matched Length 规则里填一个自己觉得差不多的整数比如 1000mil。这个做法我不推荐因为你拍脑袋填的数值可能跟实际布线空间完全脱节最后逼着蛇形拉出一大片板子反而更难布。我常用的做法是先松后紧先把容差设得很宽比如 ±50mil甚至 ±100mil先把线完整布通。布完后打开 PCB 面板看这一组网络的 Signal Length 分布找到最大值、最小值和平均值。如果最大值和最小值的差很小直接取中间值作为目标长度再逐步收紧容差。如果差值很大先别设规则优先通过调整布线拓扑把基线拉近再进入蛇形阶段。至于真正的目标值还是得回到芯片手册和时序计算。比如 DDR3 设计里地址控制组往往要求相对时钟 CK 的等长保持在一定窗口内具体数值每个芯片厂商都不一样有的要求 ±50mil有的要求 ±100mil必须以数据手册为准。这里我只是举个例子说明差值量级做实际项目千万别照搬一个数字就拿去用。2.3 Matched Length 规则的参数细节在 AD 里设置等长规则的路径是 Design → Rules → High Speed → Matched Length。这个规则支持两种约束方式一种是直接设定最小长度和最大长度容差通过这两个值的差值体现另一种是设置一个目标长度加容差窗口这种我用的更多因为蛇形调整工具可以直接以这个目标值为基准。实操注意容差栏的填写直接影响最终 DRC 判定。规则里每一行的 Tolerance你可以理解为硬性窗口。我的建议是正式投板前的最终 DRC 用真实需求容差但在布线过程中做阶段性检查时可以把容差临时收紧到更严一半的值比如实际要求 ±25mil检查时设成 ±12mil这样等长余量更大温度、工艺偏差也能兜住。等检查通过了再改回实际值。注意Matched Length 规则里的长度基准默认就是 Signal Length。如果你在某个旧版本工程里看到长度对不上、规则却不报错多半是规则被改成了用某条特定网络的长度做基准检查一下规则面板里的 Length 下拉框。3. 蛇形等长的实操从工具到参数3.1 用 Interactive Length Tuning别手撸蛇形每次看到有人用一堆 45 度斜线段手动拼蛇形我都替他们捏把汗。Altium Designer 提供了一整套交互式长度调整工具从菜单 Route → Interactive Length Tuning 进入默认快捷键是 T R老版本是 T 字母组合具体以你装的版本为准。启动后鼠标指针会变成一个特殊的形状点中一条已经布好的走线往后拖动就会自动生成蛇形段。这个工具的核心价值在于所有蛇形参数都是可以约束的你拖的时候工具会实时计算当前长度与目标长度的差值在你拖到位的那一刻自动停止增长。这不是画着画着再改而是拉到正好就收效率完全不一样。我用这个工具接手的项目里经常遇到有人嫌它太智能反而控制不住其实是你没按对 Tab 键把参数设好。下面就把关键参数一个一个说清楚。3.2 Tab 键里的关键参数一次设对启动 Interactive Length Tuning 后按 Tab 键打开属性面板里面有四组参数直接决定蛇形质量Target Length目标长度这是最重要的一个值。可以直接填写你在 Matched Length 规则里设置的目标长度也可以选择 Use Rule让工具自动读取规则值。我一般选择 Use Rule这样规则改了工具会跟着变少一层维护成本。Max Amplitude最大振幅振幅就是蛇形凸起的高度也就是蛇形拱起来的幅度。振幅越大每折贡献的长度越多但占用的布线空间也越大。具体设多少取决于你当前这一层的可用空间。Gap蛇形间距相邻蛇形段之间的间距。这个值必须大于等于当前层的最小间距规则而且从信号完整性角度讲我建议至少做到 3 倍线宽以上。举例如果线宽是 5milGap 至少设成 15mil。间距太小蛇形段之间就是一对平行耦合线串扰会在不知不觉中吃掉你的时序裕量。Style蛇形样式AD 提供 90 度折角、45 度折角、圆弧形等几种样式。90 度折角在射频或高速场合容易引起阻抗不连续能少用就少用45 度和圆弧形是主流选择。另外在调整过程中按住 Shift 空格键可以切换不同的蛇形样式不用每次都打开属性面板。这一个快捷键我几乎每天都会按几下。3.3 蛇形的摆放位置和绕线策略工具只能帮你把蛇形摆出来摆在哪、怎么摆还是得靠脑子。我踩过几次坑之后总结出下面几个可复用的经验蛇形段尽量靠近驱动端或者接收端的出线区域不要在走线中间段硬塞蛇形。这样做的考虑是放在两端可以让蛇形段对走线中途的参考平面跨缝影响最小。如果中间段正好跨越了电源平面分割区再叠加蛇形耦合风险成倍增加。优先选择布线密度低、空间富余的层来做等长调整尤其是 BGA 出线少的区域。外层有器件和焊盘占地方内层干净用内层做蛇形是更稳的选择。但内层走线要注意参考平面完整性蛇形段下方最好有完整的地平面。当目标长度比实际长度多出很多、需要大量蛇形时不要只在一个位置堆蛇形而是分段分散放。一段蛇形太长不仅占空间还会形成很长的平行走线区耦合噪声会积累。均匀分成两到三段每段不长信号质量和布局难度都更容易控制。3.4 蛇形绕线的空间不够怎么办这是实际项目中几乎绕不开的问题。长度差太多蛇形放不下新手最喜欢干的事就是把 Gap 调小、振幅调大硬塞。我不反对调参数但有两个前提Gap 绝不能小于 3 倍线宽振幅也不能大到在叠层上形成显著的返回路径不连续。如果空间真的不够我的解决路径按优先级排序先改拓扑让走线整体绕远一点。比如某根地址线可以从板边绕一圈再回来先把基础长度拉上去蛇形只做小范围修正。拆分蛇形段分散到这条信号路径的不同位置。注意每个蛇形段都要满足间距和耦合要求别拆到某一小段里又变成一个超长平行区。换层绕线。换层会引入过孔过孔本身给 Signal Length 增加长度而且每个过孔的量相对固定。如果一组网络里各个网络过孔数量不一致换层会进一步拉大长度差所以换层之前必须重新统计过孔贡献。我见过很多人卡在蛇形放不下这个问题上好几天其实多数时候是路径规划阶段没考虑长度预算。如果一开始布局布线时就有意识地让关键信号组走同一种拓扑路径后面等长调整的工作量能少一半以上。4. 22 版新特性里值得花时间搞懂的几个点4.1 属性面板与长度信息的可视化增强AD 222022 版在 UI 和交互上做了一轮相当明显的升级其中跟我日常等长工作关系最紧密的是 Properties 面板对长度信息的呈现方式。在之前的版本里选中一段走线想同时看 Routed Length 和 Signal Length往往要翻好几个层级21 版虽然也有了但面板布局比较局促。22 版里选中网络或走线后长度相关的信息直接在属性面板的 Length 区域集中展示Routed Length、Signal Length、当前选中片段长度都清清楚楚而且单位切换非常顺手可以直接在 mil 和 mm 之间切换。这个看似不起眼的变化实际用起来效率提升很大尤其是在对着十来个网络一个个改蛇形的时候不用再频繁去 PCB 面板里翻列了。4.2 交互式长度调整的顺滑度提升22 版对交互式长度调整Interactive Length Tuning的底层计算做了一些优化。我用同样的 8 层板工程做过对比21 版在拖动蛇形、尤其是当你把鼠标移动速度放快时蛇形段偶尔会出现跟手但不稳定的抖动撤销重来几次容易把附近的走线也带乱。22 版在这块的稳定性明显更好拖动时长度数值刷新更跟手撤销行为也更可预期。另外22 版对圆弧形蛇形的控制更精细了可以直接约束圆弧半径。以前做圆弧蛇形主要靠手感现在可以输入确定半径值对需要精确控制阻抗连续性的场景很有价值。我在做 PCIe 这类对阻抗一致性更敏感的信号时会优先选择圆弧样式并设置固定半径。4.3 XSignals 生态的完善AD 22 对 XSignals 的完善是我觉得最值得升级的理由之一。起因是我在做一个 DDR4 设计时地址线组经过排阻、多个过孔和一段环形走线用普通网络类做等长非常痛苦规则套了一层又一层还是容易漏。后来切到 XSignals 方案通过向导把源引脚到负载引脚的完整路径定义成 XSignal等长规则直接建立在 XSignal 上Signal Length 自动把过孔、连接器等要素全部算进去省了非常多手动核对时间。22 版里 XSignals 向导的体验比之前版本更顺畅拓扑解析更准确尤其是在处理多负载、带 Stub 的复杂拓扑时新增的向导步骤会明确引导你把 Stub 归属到哪一段信号路径避免误算。对于常规 DDR3/DDR4、eMMC、Flash 中间有缓冲器或电平转换芯片的链路这一条我认为是刚需。4.4 规则管理器和小细节的体验改进22 版在规则管理器的交互上也有不少细节优化比如 Matched Length 规则里修改容差后DRC 的反馈更快不用每次跑全量规则才能看到结果高 DPI 缩放的支持也更好4K 屏下画蛇形那种精细缩放操作更跟手。还有一点很多人没注意到22 版在使用 OutJob 输出文档时长度报告相关的输出项更丰富了可以直接把当前 PCB 的长度统计写进生产文档对于需要归档等长报告的项目非常方便。虽然这不算核心新功能但走一遍流程就会发现这些细节才是真正影响日常体验的地方。5. 常见问题与排查技巧实录5.1 DRC 明明显示长度一样为什么还报等长违规这个我用亲身经历告诉你百分之八九十是因为你在交互长度调整面板里看的是 Routed Length而 DRC 判定用的是 Signal Length。尤其是走线过程中过孔数量不一致的网络Routed Length 拉平了Signal Length 却差着一大截。排查方法很简单打开 PCB 面板把 Signal Length 列显示出来按这一列排序一眼就能看出哪些网络虚胖——Routed Length 不大Signal Length 却明显偏大这类网络通常就是过孔特别多的。处理方式以 Signal Length 为准重新做蛇形调整。5.2 蛇形加了半天长度反而变短了这种情况我也遇到过。第一次用 Interactive Length Tuning 时我拖了半天蛇形左下角长度数值突然往回缩后来发现原因在于我不小心选中了走线的端点往外根本不是在加蛇形而是把整条走线拖拽重新布线了原来的路径被拉直长度当然变短。建议做两件事第一进入 Length Tuning 模式后鼠标一旦变成蛇形光标再开始拖动第二如果出现反常缩短立刻按 Backspace 撤销重新进入调整模式不要硬拖。5.3 蛇形 Gap 一调小DRC 就报间距错误这里涉及规则优先级的问题。交互式长度调整工具里的 Gap 参数本意是让工具按规则自动吸合到一个安全值。但如果你用的是自定义 Gap而它小于当前层的 Clearance 约束DRC 必然报错。解决路径有两个把蛇形 Gap 改成不小于当前层 Clearance 规则的数值检查 Clearance 规则里是否对特定 Net Class 或 Layer 设了更大的间距值这种情况容易被忽略因为默认规则和网络类规则优先级不同工具不一定能自动感知到所有层叠约束。5.4 过孔数量不一致Signal Length 怎么都对不上这是多层板设计的经典难题。一组等长网络里如果有的走顶层换底层跑了 4 个过孔有的只跑了 1 个Signal Length 天然就相差好几毫米蛇形怎么补救都不划算。我的实践方案有两个方向一是尽量在布线阶段就统一组内网络的过孔数量二是实在无法统一时用 XSignal 管理让过孔贡献自动纳入 Signal Length 计算至少保证规则判定是准确的再针对个别网络单独补长度。5.5 快速对照Signal Length 和 Routed Length 怎么选对比维度Signal LengthRouted Length计算内容走线 过孔 焊盘延伸仅走线图元几何长度是否包含过孔包含不包含DRC 等长判定依据是否交互长度调整显示是目标依据非目标依据适用场景高速信号等长、时序分析布线长度估算、走线统计多层板差异比 Routed Length 明显偏大偏小不反映真实路径5.6 我的避坑清单直接抄作业建规则时先松后紧。布线阶段用宽松容差布完再收紧到真实需求值避免布线过程中被 DRC 误伤。每一组等长布完立刻跑一次性 DRC不要攒到最后。最后全板一起跑几十个报警根本分不清哪个对应哪个网络。蛇形做得再多也要给蛇形段留出地孔位置。关键的 RF 或高速组相邻蛇形之间如果空间允许打几个地孔隔离比单纯靠拉开间距更稳。过孔贡献是等长的大变量前期布局就要想好哪一层走哪组网络尽量减少中途换层。团队多人协作时尽量统一 AD 版本。我经历过老版本工程在 22 版打开后某些长度属性显示异常的情况升级前记得备份打开后跑一遍 DRC 确认数据完整。最后再分享一点个人体会等长调整这件事工具只负责把蛇形摆得整齐、算得精准真正决定成败的是前期的网络分类、过孔规划和层级设计。我每次拿到一块新板都会在布线刚开始就顺手把等长网络组和过孔策略定下来后面几乎不会在蛇形阶段翻车。希望这篇文章能帮你把这两把尺子用好哪天你看到自己的 Signal Length 列表整整齐齐排成一条直线那种舒服劲儿懂的都懂。
返回列表