AD等长线设置全攻略:从规则建立到交互式布线实操
发布时间:2026/10/7 14:13:03 锦皓数字建站

1. 等长线到底在解决什么问题做PCB设计的人早晚都会碰到“等长”这个词。尤其是跑DDR、USB、HDMI、PCIe、以太网这类高速接口的时候布线阶段最绕不开的一项工作就是拉等长。我在AD里做等长线设置前前后后也有七八年了从早期手工数着格点绕蛇形线到后来熟练用AD的交互式等长布线和规则管理中间踩过不少坑也总结了不少能直接用的方法。先说清楚一个基本问题为什么PCB里的等长线这么重要为什么不直接保证每根线尽量短就行等长的本质是“时序对齐”。信号在PCB走线里传输是有速度的大约6mil/ps左右FR4板材、内层走线大约按5.6~6.5mil/ps估算。如果一组并行信号线长度差异太大信号到达接收端的时间就不一致。对于并行总线接收端靠时钟沿来采样数据数据线必须先于时钟有效沿到达并稳定一段时间这就是建立时间时钟有效沿之后数据还要保持一段时间这就是保持时间。只要某一根信号线比时钟线短一大截或者长一大截就会导致建立时间或保持时间裕量不足跑到一定频率后就随机出错表现就是系统不稳定、偶发死机、数据错乱非常难查。所以等长线不是“为了好看”而是为了保证同组信号在同一个时间窗口内被可靠采样。AD的等长线设置本质就是通过软件规则把“允许的长度差范围”限定住然后借助交互式布线工具把蛇形线、波浪线绕出来把物理长度修到目标范围里。这里有一个很容易被忽略的点等长并不等于“越短越好”而是“该等长的必须等长该短的不要硬拉”。比如DDR3/DDR4里地址线、控制线以CLK为基准等长数据线DQ以对应的DQS为基准等长时钟线本身还要做差分对内等长。这三类等长的基准不同目标长度也不同。如果无脑把所有线拉成一个长度反而会把时钟和数据的时序关系打乱。提示在做AD等长设置前先搞清楚你的设计里有几组需要等长的网络每组以哪个网络为基准允许的误差是多少。这个不搞清楚后面所有规则和布线都白做。从AD操作本身来说等长线设置涉及三大块网络分类Class、布线规则MatchedLength或Relative Delay、交互式等长布线Interactive Length Tuning。这三块互相配合少哪环都不顺手。接下来我把整个流程拆开讲。2. 等长之前的准备工作网络分类与XSignals很多人一上来就打开Rule里找“等长”选项其实这是顺序反了。AD里做等长第一步应该是把需要等长的网络归好类否则规则对象都没法选清楚。2.1 为什么必须建Class而不是一根根去选AD的规则里MatchedLength的适用范围Where The Object Matches虽然可以直接选网络也可以写表达式但一组DDR数据线有16根甚至20根地址线十几根如果每个规则都去勾选网络列表后续改起来极其痛苦。等长不是一次性的工作DRC验证、改板、调整拓扑时都会反复用到规则网络分类清晰后面一切操作都能直接引用类名。我通常在原理图导入PCB后先把网络分成几个类DDR_DATA0到DDR_DATA15、DQS0/DQS0#、DQM0等归为“DDR_DQ0”组地址线、控制线归为“DDR_ADD”组时钟对CLK0/CLK0#归为“DDR_CLK”组如果是多片DDR颗粒每个片子的数据线还要单独一组同时注意DQS和DQ的关系AD里打开PCB面板快捷键PCB在面板顶部的下拉框里选择“Nets”然后选中一组网络右键选择“Create Class from Selected Nets”AD会自动生成一个网络类。也可以直接在Design - Classes打开类管理器去新建。这里我推荐在类管理器里手动建因为可以写注释、设置颜色后续在PCB视图里高亮显示特定类别的网络非常方便。类管理器的快捷键是按DC。2.2 XSignalsDDR等长的正确打开方式如果你只建Class就开始拉等长会遇到一个很现实的麻烦DDR颗粒的地址线通常有分支一根地址线从控制器到颗粒A再到颗粒B或者经过排阻上拉最后形成多段网络。AD默认的等长计算是按整个网络的物理总长度来算的但DDR的等长要求往往不是“整根总长度”而是“控制器到每个颗粒的走线长度”匹配。这就引出了AD里一个非常核心的概念XSignals。XSignals允许你把一个带分支的信号通路定义成一个对象AD会按照你指定的信号路径Signal Path来计算长度甚至可以生成XNet包含源端、中间器件、终端的完整路径。在AD20及以后版本做DDR等长强烈建议用XSignals。操作方法不算复杂在原理图或PCB里选中需要定义的信号比如一个地址网络A0它从CPU出发经过电阻R1到DDR颗粒U1和U2。在PCB界面下点击Design - XSignals - Create XSignalsAD会提示你选择源端和终端器件。选定后AD自动生成这个信号通路同时会生成对应的XNet。创建好XSignals后类管理器里会出现XSignals分类你可以把相关的XSignal再归类比如所有的地址XSignal组成“X_DDR_ADD”。这样在等长规则里你直接选这个XSignal类AD计算长度时就会按信号完整路径计算而不是按物理网络长度的总和后者会把分支重复计入非常误导。注意XSignals不是所有设计都必须要建。如果只是普通的两片芯片之间的并行总线没有复杂的中间器件和分支直接按网络类做等长就够了。但DDR这类多点多颗粒拓扑建XSignals能省下大量排查分支长度的时间。2.3 设置颜色与高亮拉线时不迷路等长布线时一大痛点就是肉眼不好分辨哪些线属于同一组。我自己习惯在类管理器里给每个Class设置一个独特的颜色然后在布线时按快捷键ShiftS切换单层显示再配合[]键或Ctrl左键点击高亮网络就能很直观地看到哪根线短了、哪根线已经达标。这个设置看起来不起眼实际效率提升巨大。尤其当你面对12根甚至32根并行线的时候靠网络名一个个去配对根本不现实颜色分组能让你一眼看清“这片线是一个组”。3. 等长规则怎么建MatchedLength还是Relative Delay准备工作做完接下来就是规则的核心部分。AD里跟等长相关的规则主要有两个MatchedLength绝对长度匹配和Relative Delay相对延迟匹配。它们解决的问题略有不同适用场景也不一样。3.1 MatchedLength规则的设置方法MatchedLength的意思是“给一组网络规定一个相同的长度范围”也就是所有网络的实际走线长度都在一个最小值和最大值之间。这个规则最适合“同一组线都以某个共同目标长度为基准”的场景比如地址线组要求全部在1000mil到1100mil之间不管哪根线短了还是长了都得修到这个区间里。设置路径Design - Rules - High Speed - MatchedLength右键新建规则。在Where The Object Matches里选到之前建好的网络类然后设置三个关键参数Tolerance容差范围比如±50mil或±25mil这决定了DRC允许的长度差上限Min / Max整体长度的上下限如果不填MaxAD会以组内最长网络为准或者以约束里的基准长度为准Matched Length目标长度可选填实际使用中我通常只设置Tolerance然后在交互式等长布线时用目标长度来同步调整。比如数据线DQS的参考长度是1200mil那我就在规则里把Tolerance设为±20mil然后逐根拉线拉到接近1200mil就算达标。DRC会实时显示每根线相对目标的偏差绿色是达标红色就是违规。这里有个坑要提一下MatchedLength的Tolerance只是“组内最大最小长度差”并不是“每根线与目标长度的差”。如果你不填Matched LengthAD会以组内最长或最短的线作为隐含基准。我见过有人设置Tolerance为20mil但有一根线特别长其他线都没问题结果DRC不报错原因是组内最长的线被当成了基准。所以稳妥起见在规则里显式填入目标长度或者等长时勾选“目标长度”来自动设定别让基准被某根异常线绑架。3.2 Relative Delay规则与差分对等长Relative Delay适用于“长度要跟随另一组网络”的情况典型场景就是DDR中的DQ与DQS、地址线与CLK或者差分对内P和N的等长。它不设定绝对长度而是设一个“相对偏移值”比如这个网络相对基准网络可以短50mil或长50mil。设置路径Design - Rules - High Speed - Relative Delay。这个方法在差分对内应用最普遍。差分走线要求P和N长度尽量一致但实际绕线过程中会有过孔、弯折、引脚出入线的差异所以需要以其中一根为基准另一根去跟随。差分对等长的一个细节值得单独说。AD里差分对布线时如果开启“Tune差分对”功能工具会自动让P和N的长度匹配同时保持间距恒定。如果你在差分对规则里已经设置了Max Uncoupled Length最大非耦合长度等长设置时还要注意蛇形绕线只允许在耦合区域内进行不要让P和N在蛇形线里分开绕否则会破坏差分阻抗。经验差分对内等长优先用Mitered夹角绕线而不是圆弧绕线。AD的差分等长模式里可以选Style为Mitered with Corners这样绕出来的蛇形线转角是45度比圆弧线更适合差分信号的阻抗连续性。3.3 目标长度怎么算从时序到物理长度等长规则里最让人头疼的就是“目标长度到底设多少”。这个不能拍脑袋要从时序要求反推。高频接口的时序裕量怎么换算成物理长度我一般用这个经验公式信号在PCB走线中的传播延迟约85ps/inchFR4外层到100ps/inch内层也就是大约6mil/ps。如果数据手册要求DQS到DQ的偏斜不超过50ps那换算成走线长度就是不超过300mil的差距。当然这只是线延迟的差异实际还要考虑封装延迟、时钟抖动等因素但PCB设计阶段按这个比例做长度预算基本够用。举一个具体例子。DDR3-1600的时钟频率800MHz一个时钟周期是1250ps。数据突发传输中DQS的边沿对齐到数据的中心时序上要求DQS与DQ之间的偏斜控制在约0.25个时钟周期以内也就是约312ps。按照6mil/ps换算DQS与DQ的走线长度差应控制在约1870mil以内。但这是极限值实际工程中要留裕量所以一般会做到500mil以内甚至更低。如果你设计的是更高速的接口比如PCIe或USB3.0差分对内偏斜要求通常在5~15mil以内差分对之间的偏斜要求相对宽松一点但也要结合具体协议规范来定。我通常的流程是翻手册找出接口的时序参数Setup/Hold Time、Skew要求计算允许的长度偏差折算成AD规则里的Tolerance或Relative Delay参数再按50%~70%的裕量收紧避免工艺误差、板材差异导致最终超出规格没有时序参数的就参考同类成熟设计的常用值。比如DDR2地址线对CLK的等长经验值控制在±250mil以内DDR3控制线对CLK通常±250mil数据线对DQS则做到±50mil以内。这些值不是标准答案但作为起步值足够了。4. 交互式等长布线实操从拉线到收尾规则建好只是第一步真正费时间的是把线一根根拉到位。AD的交互式等长布线工具用好了效率能差好几倍。这一节我把从进入拉线模式到最终优化的完整过程拆开讲。4.1 进入交互式等长布线在PCB界面下用交互式布线快捷键CtrlW或P- Interactive Routing先走完基础连接不必一次到位。基础线走完后再选择需要做等长的网络点击菜单Route - Interactive Length Tuning也可以直接按快捷键ShiftR切换或者用工具栏里的“绕线”图标。进入等长布线模式后你会看到光标附近出现一个可调节的“蛇形线”预览框。这时候不需要直接拖拽而是先按Tab键打开属性面板把绕线参数设置好。面板里的关键参数如下Target Length目标长度可以勾选“From Rules”就是直接从规则里读取Tolerance容差跟随规则Style绕线样式有Mitered折角、Mitered with Corners圆角折线、Arc圆弧、Arc with corners含圆角的圆弧等Amplitude蛇形幅度也就是蛇形的宽度Gap蛇形线之间的间距这个必须满足最小间距规则一般设为线宽的2~3倍Max Amplitude最大蛇形幅度这里最大的坑就是Gap和Amplitude两个参数。Gap如果太小串扰会明显增大Amplitude如果太大蛇形部分会占据大量板面而且相位偏移可能过大。我给一个起步值线宽5mil的走线做等长时蛇形Gap设10~15milAmplitude设15~25mil。DDR3/DDR4数据线的等长绕线幅度不建议超过40mil太大反而会引入额外的共模转换和EMI问题。4.2 动手绕线三种风格怎么选AD里最常用的绕线风格有三种我分别说下适用场景。第一种是Mitered折线型。这种风格绕出来的蛇形线是45度折角转弯半径最小也是我最常用的。它适合普通并行总线的等长比如地址线、数据线。优点是计算精确占用的空间相对规则缺点是高频信号在折角处阻抗变化略大但等长线本来就是低速/中速信号为主所以问题不大。第二种是Arc圆弧型。纯圆弧会让信号路径更平滑阻抗连续性更好适合对信号质量要求更高的接口。缺点是同等长度修正量下占用面积更大而且AD在圆弧模式下布局密集度不高很多板子空间不够就只能用折线。第三种是Mitered with Corners圆角折线它在折角处加了一个小圆角过渡算是前面两种的折中方案。我一般用在差分对等长里既不会太占面积又比纯折线的信号质量稍好一点。对于差分对内等长AD还有一种以“长度”而不是“时间”为单位的模式注意单位要一致不要混。实际操作中鼠标从走线中间开始拖动蛇形线AD实时显示当前长度与目标长度的偏差比如短了56mil就会显示-56mil。你一边拖一边看数值直到绿色达标标记出现。若发现幅度不够继续往外拉幅度太大往回缩或按快捷键改成多个波峰。AD支持等长线多次绕线在一条线上绕两段甚至更多段每段蛇形线各自独立这样可以分散长度偏差避免在一块区域集中绕出巨大的蛇形。操作细节绕线时按住Shift键可以正交/45度切换按住空格键可以旋转绕线方向X或Y键可以在蛇形线上下开口方向之间切换。这些快捷键在大量绕线时非常省操作建议提前练熟。4.3 多根线快速对齐的思路拉多根等长线的效率提升关键思路是“基准线法”。选定一组信号中现在最长的那根作为基准或者规则指定的参考网络先把基准线尽可能直、尽可能短地布完然后其他线都以“超出基准线多少”来做调整而不是每根线都从零开始对目标长度。实际步骤是这样把组内最长的那根线布好作为基准长度在目标长度里把基准长度填进去比如2300mil其他线逐个进入等长布线模式目标长度自动设为2300mil短的线补蛇形长的那根保持不变全部完成后跑一遍DRC检查MatchedLength规则是否全部通过这个方法的好处是每次只关注一根线的增量绕线的量基本都是“补差”不容易出现绕多了又得回退的情况。对新手来说记住一个原则先布长线再补短线。如果先把短线都布成一样短再拿长线去绕往往会遇到空间不够、绕线窜位的问题。4.4 空间不够时怎么压缩绕线板子空间永远不够用这是PCB设计界的铁律。等长绕线过程中最常见的窘境是线短了但周围全是走线蛇形幅度一大就撞到旁边的网络。我的处理顺序是第一缩小蛇形Gap。只要Gap满足最小间距规则线间距规则在Clearance里设置可以把Gap压到略大于线宽比如5~8mil。这能让同样长度的修正量占用的宽度更小。第二增加蛇形波峰数量。在Control面板里可以把单段蛇形拆成两段、三段多段小振幅的蛇形比单段大振幅的更容易塞进狭窄空间。第三局部调整走线路径。如果蛇形无论如何都塞不进去说明这个区域的布线密度已经不健康了我会把附近的走线重新规划让等长线有一段相对空旷的通道而不是硬挤。硬挤出来的绕线往往间距不够DRC甚至会报跟其他网络的间距冲突反而增加后续返工量。第四把蛇形线放进内层。外层空间紧张时可以考虑打两个过孔把线走到内层绕内层通道通常更干净。但要注意换层会增加过孔损耗和信号反射所以这个方法仅在必要时用且过孔附近要留回流地过孔。4.5 用PCB面板和列表快速核对长度绕完线以后逐个目测检查不现实我都是直接通过数据来核。AD有两种快速核对方式。第一种是PCB面板的Net列表Dual显示时能看到网络的物理长度值Physical Length和延迟值Delay。选中一组Class后面板下方会列出每个网络的长度我习惯在这里扫一遍看是否都在目标范围内。第二种是用“Length Tuning”的交互结果。AD的等长布线完成后布线拐点会保留“修改记录”选中某一根蛇形线后按Tab可以再次调整。我经常用的是PCB列表PCB List配合过滤器筛选出所有带绕线的Track查看它们的长度属性快速定位偏差过大的网络。还有一个值得一提的功能AD20及以上版本支持“PCB Filter”面板可以直接用算式筛选网络比如InNetClass(DDR_DQ0) and Length 2200mil所有长度不够的线瞬间高亮。这个方法之前我很少用后来发现排查“到底哪根线还没拉到数”时效率极高。5. 常见问题与排查技巧实录关于等长线设置大部分问题其实都有规律可循。下面这些是我在项目里反复遇到过的情况整理成速查形式方便大家对照。问题现象根本原因解决办法DRC一直报MatchedLength违规但每根线看起来都一样长规则里没有显式填目标长度导致隐含基准漂移在规则里填上明确的Matched Length让所有线对齐同一个基准绕线时蛇形线撞到旁边网络Gap已经调到很小仍然报警蛇形线起始和结束位置的转弯点太靠近相邻走线把蛇形线的起始点往空旷位置移动或调整Amplitude让整个蛇形整体偏移差分对内等长绕线后DRC报Uncoupled Length违规在非耦合区域内做了绕线P/N在蛇形段分开了改用差分对等长模式设置Max Uncoupled Length规则并让蛇形线保持在耦合区拉好的等长线在重新铺铜后被DRC报错铺铜改变了网络的参考路径或蛇形线间距被铺铜挤压铺铜前先锁定等长线Locked再设置铺铜与走线的间距规则铺铜后重新DRCAD不识别某组网络的等长关系网络不属于同一个Class或XSignal路径定义错误检查Class包含了所有需要等长的网络必要时重建XSignals蛇形线太多板面EMI变差绕线幅度过大、过密形成大的环路天线缩短蛇形幅度用多段小蛇形代替单段大蛇形尽量保持相邻蛇形间距均匀等长绕线时线宽突然变化在Rules里设置了Neck Down颈部收紧规则绕线时AD自动启用窄线宽等长线所在网络不要设置NeckDown或者把NeckDown的适用条件排除等长网络完成后DRC通过但实际贴片后信号不稳定只做了静态等长没有考虑串扰、回流路径和参考平面连续性等长不是唯一指标检查走线参考平面是否连续、地过孔是否足够、蛇形区与旁路网络的间距是否足够5.1 为什么DRC通过但实际时序仍然有问题等长只是PCB时序可靠性的一个维度它管的是“线长度”管不了“信号质量”。我见过很多人觉得等长做到位了板子时序就一定OK这是一个误解。信号质量层面的问题比如反射、振铃、串扰往往比长度偏差更容易造成系统跑飞。等长线中蛇形绕线集中的区域相邻蛇形段之间的耦合非常强如果Gap太小这里的串扰甚至会抵消掉你辛辛苦苦拉等长带来的时序收益。走线跨分割参考平面也会让回路电感剧增导致信号边沿变缓实际时序裕量进一步缩小。所以真正到位的做法是等长做到规则值之后还要回头看这几点这组高速线是否全程有连续参考平面没有跨分割蛇形线的Gap是否足够至少是线宽的2倍换层过孔附近有没有成对的地过孔走线离板边、其他高速线、晶振/电感等干扰源是否足够远5.2 等长绕线后线的阻抗会不会变这也是个高频疑问。很多人担心蛇形线部分线间距变近导致阻抗变化。这个担心有一定道理蛇形线相邻段之间的耦合会改变局部的有效阻抗。但幅度通常并不大因为蛇形段的间距一般远大于线宽耦合系数不高。真正要注意的是蛇形线起点和终点附近的“急转弯”转弯半径过小会造成局部阻抗异常。我的经验是AD的Mitered模式中折角处如果出现明显的阻抗突变可以通过增大折角处的圆弧半径来缓解。成本上没有任何额外损耗只是绕线好看一点但对信号反射确实有正面影响。5.3 多层板里的等长与过孔延迟这里补充一个容易被新手忽略的问题过孔本身也有延迟。当你把所有走线都做到了等长但有一根线多打了两个过孔它的实际延迟就偏大了。一个过孔的等效传输延迟大约在10~30ps换算成长度大概是60~180mil。在高频设计中如果等长容差非常严格过孔数量不同会导致实际时序差异超规格。AD在计算网络长度时可以通过规则里的“Include Pad/Via Length”选项把过孔长度折算进去。我通常在DDR设计中会勾选此项同时在拓扑规划阶段尽量让同组信号的过孔数量一致。如果你的板子层数很多、走线换层频繁这一点尤其关键。6. 关于等长设置的几个进阶经验当你已经能熟练操作AD的等长线设置之后有几个更深入的点是我自己在实际项目中慢慢总结出来的写出来供大家参考。第一等长规则不要只建一个大的。有人把整片DDR所有信号都放进一个MatchLength规则这是不对的。数据线组、地址线组、控制线组相互之间的等长基准不一样规则也应该分开。同一个规则里网络越多目标基准越容易混淆排查时效率也越低。建议按功能分组每组单独一个规则。第二绕线时考虑“蛇形线的方向”。蛇形线在板上的摆放方向会影响串扰和EMI。相邻的蛇形线如果平行摆放且波形重叠相互耦合会比较严重。我一般在同一区域内做多组蛇形线时会让相邻组的蛇形错开半个周期视觉效果上也更整齐电气上耦合也小一些。第三自动绕线不是万能的。AD有自动完成等长的功能在Interactive Length Tuning的属性面板里可以设置“Balance”相关参数让它自动搜索合适的绕线路径。但对复杂板子自动绕线往往绕得比较密集而且它会优先占用大面积空间容易把布局打乱。我通常只用半自动手工控制蛇形的大致幅度和位置靠AD微调长度而不是让它全自动飞线。第四等长也不是越“平均”越好。曾经调试一块板子时遇到过一个现象——所有数据线都对DQS等长到±20mil了但跑DDR3测试还是一直有偶发位错误。后来排查发现DQS本身到时钟CLK的等长约束不满足导致读操作时DQS与CLK的相位关系漂了。这说明等长是一个整体系统DQ对DQS、DQS对CLK、CLK对地址控制线每一层都要对好只做好某一层关系是不够的。第五DRC不是终点仿真校验更稳。AD的DRC只能验证“长度/延迟”是否在规则范围内验证不了信号实际到达接收端的时序。如果项目级别比较重要我会把等长后的PCB网络用HyperLynx或Sigrity做一次快速时序仿真至少确认建立/保持时间裕量是正值。对于中小项目用经验和规则值做保守控制一般也够了。最后AD等长线的设置本质上是一个把时序约束翻译成物理约束再用软件工具和布线技巧去落实的过程。工具操作不难难的是理解哪些线要对齐、对齐到什么程度、在空间和信号质量之间怎么妥协。希望大家在看这篇实操分享之后能少走一些我当年走过的弯路。
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。