☰
PADS等长走线实战:从规则建立到蛇形绕线与验证的完整流程
2026/9/25 5:01:34 网站建设 项目流程

1. 等长走线到底在解决什么问题

先把话说透:等长走线不是"看起来整齐"的布线美学,它是时序约束在物理层面的兑现手段。只要你的板子上有并行总线(DDR、SDRAM、RGMII、LVDS 并行组、多路 ADC 采样线等),信号从驱动端跑到接收端的时间差就必须被控制在一个预算之内。走线长度直接决定传播延时,FR-4 上微带线大约 6~7 ps/mm,带状线约 7~8 ps/mm,长度差 10 mm 就意味着几十皮秒的偏斜。对 DDR3-1600 这种单位间隔只有 1.25 ns 的接口来说,几十皮秒已经吃掉相当比例的时序余量。

我在实际项目里见过太多"功能能跑但不稳定"的板子,最后定位下来都是某几根数据线比时钟线长了 15 mm 以上,常温下勉强工作,一到高低温循环就随机出错。所以等长走线的本质是:把一组信号的走线长度差压到设计预算内,让接收端在同一时刻看到所有位。

PADS(不管是 PADS Layout VX.2.x 还是老版本 9.5)提供了一套完整的等长控制机制,核心由三块组成:网络分类(Net Class)→ 长度规则(Length Rule)→ 实时长度监控与匹配组(Match Length Group)。很多人卡住不是因为不会点菜单,而是没搞清楚这三者的先后依赖关系——规则没建好,后面怎么调都是白费。

这篇文章我会按真实项目流程走一遍:从规则建立、差分与单端混合处理、蛇形绕线的实操手法,到绕完之后怎么验证、怎么处理"绕不进去"的死角。适合已经会用 PADS 画基本板子、但一遇到等长就发怵的工程师,也适合想把自己那套野路子规范化的人。

提示:等长是"约束驱动"的活,先有约束再布线。反过来先布完再想办法凑长度,返工量会大到让你怀疑人生。

2. 动手之前必须建立的规则体系

2.1 网络分类是等长控制的地基

PADS 里所有长度相关的规则都挂在 Net Class 上,所以第一步永远是分类。打开Setup → Net Classes,你会看到默认的 Default 类。我的习惯是按总线功能建类,比如DDR_DATA、DDR_ADDR、DDR_CTRL、RGMII、LVDS_GRP0这样,而不是按"重要/不重要"分。

为什么按功能分?因为等长的"参照物"不同。数据组通常以 DQS(数据选通)为参照,地址/命令组以时钟为参照,控制组又可能以某根特定信号为参照。如果混在一个类里,你没法给不同子组设不同的目标长度。

具体操作:在 Net Classes 对话框点Add,输入类名,然后从左侧网络列表把对应网络Add进这个类。这里有个容易忽略的点——差分对的两根线要放进同一个类,否则后面差分对内等长没法统一管理。PADS 识别差分对靠的是网络名后缀(如_P/_N、+/-)或者你在 Differential Pairs 里手工定义的配对,两者要一致。

建完类之后建议立刻做一次核对:在 Layout 里用Ctrl+Alt+N打开网络列表,按类筛选,确认没有网络漏掉或串类。我踩过的坑是 DDR 的 DQM 信号忘了归入数据组,结果绕线时它没被纳入匹配组,最后单独补绕,长度怎么都对不齐。

2.2 长度规则的参数到底怎么填

进入Setup → Design Rules → Length(不同版本路径略有差异,VX 里在 Rules 对话框的 Length 标签页)。这里要填的核心参数有三个:

  • Minimum / Maximum Length:这是绝对长度范围,不是长度差。它约束的是单根线的总长,用来防止走线过短(反射、阻抗不连续)或过长(损耗、延时超预算)。
  • Match Length:勾选后启用匹配组功能,这才是等长的关键。
  • Tolerance:允许的长度偏差,单位通常和你的设计单位一致(mil 或 mm)。

Tolerance 怎么定?这是最考验经验的地方。我的算法是:先算时序预算,再留 30% 余量给制造和仿真误差。举个例子,某并行接口的建立时间余量是 200 ps,扣除接收端建立时间、时钟抖动、串扰影响后,留给走线偏斜的预算假设是 100 ps。FR-4 微带线按 6.5 ps/mm 算,100 ps 对应约 15 mm。那么 Tolerance 设 15 mm 就是理论上限,实际我会设 10 mm 甚至 8 mm,把余量留给绕线时的取整误差和层间介质差异。

注意:Tolerance 不是越小越好。设成 1 mil 这种极端值,你会发现根本绕不出来,因为过孔、焊盘、器件引脚本身的长度差异就已经超过这个值了。规则要可执行,不是拿来好看的。

另外,长度计算基准要统一。PADS 默认从焊盘中心算起,但如果你用了多个过孔换层,过孔本身的长度(板厚方向)也会被计入。对于 1.6 mm 板厚、8 层板,一个过孔贡献约 1.6 mm 的"长度",如果一组线换层次数不一致,这个差异必须提前考虑进去。我的做法是尽量让同一匹配组走同一层,实在要换层就保证换层次数相同。

2.3 匹配组的建立与参照信号选择

规则填完后,回到 Layout,选中属于同一匹配组的所有网络(可以框选或用 Net Class 批量选),右键Properties,在 Length 标签里勾选Match Length Group,给这个组起个名字,比如DDR_DATA_BYTE0。

参照信号的选择有个原则:选组内最关键、最不容易改的那根。数据组一般选 DQS,因为 DQS 是采样基准;地址组选时钟;如果组内没有天然基准,就选走线路径最"直"、最不需要绕的那根作为基准,让其他线去凑它。

这里有个反直觉的点:基准线不一定要最长。很多人以为"以最长的为基准,其他都加长",其实反过来更省空间——以最短或中等长度的线为基准,让需要加长的线去绕,这样绕线区域更集中,也更容易控制。当然前提是基准线本身满足 Minimum Length。

建组之后,PADS 会在布线时实时显示每根线的当前长度和与目标的差值。这个实时反馈是等长效率的关键,后面会细说怎么用。

3. 蛇形绕线的实操手法与参数控制

3.1 什么时候开始绕:先通后绕还是边布边绕

我的建议是先完成所有非等长网络的布线,把等长组留到最后集中处理。原因很实际:等长组往往集中在 CPU 到 DDR 这类区域,如果先绕了蛇形,后面其他信号要穿过这片区域时,蛇形线会变成障碍,逼着你重新绕。先让普通信号走完,等长组的通道确定了,再一次性绕到位。

但"最后处理"不等于"最后才想"。在布局阶段就要给等长组预留足够的绕线空间。经验值是:需要绕的长度差 × 1.5 的横向空间。比如一组线最大长度差是 20 mm,蛇形绕线的振幅假设 1 mm,那么每绕一个"U"大约消耗 2 mm 长度、占用 1 mm 宽度,20 mm 需要约 10 个 U,横向占用 10 mm 左右。这个空间要在布局时就留出来,否则后期只能靠增加振幅或减小间距来硬塞,而这两者都有电气代价。

3.2 蛇形线的三个关键参数

绕蛇形不是随便画波浪线,三个参数直接决定信号质量:

参数含义推荐值影响
振幅(Amplitude)蛇形凸起的高度≥ 3 倍线宽太小会导致线间耦合过强
间距(Gap)相邻蛇形段的边到边距离≥ 4 倍线宽太小引入串扰和阻抗变化
拐角方式直角/45度/圆弧45度或圆弧直角造成阻抗突变和EMI

以常见的 4 mil 线宽为例,振幅至少 12 mil,间距至少 16 mil。我见过为了省空间把间距压到 2 倍线宽的,结果眼图闭合得厉害,因为相邻段之间的容性耦合把上升沿拖慢了。

PADS 里绕蛇形有两种方式:手工绕和自动绕(Auto Route 里的 Length 功能)。手工绕用Add Route配合Ctrl+点击打拐点,适合小范围精调;自动绕适合大批量,但自动绕出来的形状往往不够优化,需要手工修。

我的流程是:先用自动绕把长度拉到接近目标(比如差 2~3 mm),再手工微调最后一段。这样效率和质量兼顾。

3.3 实时长度监控怎么用才高效

PADS 在布线状态下,状态栏会显示当前网络的长度。但更实用的是View → Length Monitor(或按快捷键调出长度监视窗口),它能把整个匹配组的所有网络长度、目标长度、差值列成一张表,实时刷新。

我的用法是:把监视窗口拖到屏幕角落,绕线时眼睛盯着差值那一列。当某根线绕到差值接近 0 时停手,换下一根。这里有个技巧——不要追求每根线都精确到 0,因为绕线过程中你很难精确控制每一段的长度,追求绝对相等会浪费大量时间。只要所有线都落在 Tolerance 范围内,且组内最大最小值之差小于 Tolerance 的两倍,就算合格。

提示:长度监视窗口的刷新有延迟,绕完一段后停一下再看,别一边快速拖动一边读数字,容易误判。

还有一个细节:过孔和焊盘的长度贡献。PADS 默认会把过孔计入长度,但有些版本的默认设置里焊盘内的引脚长度不计。如果你的匹配组里有器件引脚长度差异较大的情况(比如 BGA 和 QFN 混用),要在规则里确认长度计算方式是否一致,必要时手工补偿。

4. 差分对与单端混合场景的处理

4.1 差分对内等长和差分对间等长是两回事

这是最容易混淆的地方。差分对内等长(P 和 N 两根线长度相等)解决的是共模抑制问题,长度差会导致差分信号转换成共模信号,辐射和抗干扰能力都变差。差分对间等长(多对差分线之间长度匹配)解决的是多通道时序问题,比如多路 LVDS 需要同时到达。

PADS 里这两者的设置入口不同:对内等长在Differential Pairs规则里设 Tolerance;对间等长则要把多对差分线放进同一个 Match Length Group,用 Length 规则管。

对内等长的 Tolerance 通常设得很小,5~10 mil 是常见值,因为差分对内偏斜直接吃时序余量。对间等长可以宽松些,看具体接口要求。

4.2 差分对绕蛇形的特殊注意事项

差分对绕蛇形时,P 和 N 必须同步绕,保持等间距。如果只绕一根,两根线的间距就变了,差分阻抗立刻失配。PADS 的差分对布线模式(选中差分对后布线)会自动保持两根线同步,绕蛇形时也是成对绕,这点比手工分别绕靠谱得多。

但成对绕有个副作用:内侧线和外侧线的实际长度不同。绕一个 U 形时,外侧线比内侧线长,这个差异在多个 U 累积后会变得可观。PADS 会在长度监视里分别显示 P 和 N 的长度,你要盯着这个差值,如果超过对内 Tolerance,就需要在某个位置做相位补偿——通常是让短的那根单独多绕一个小凸起。

我的经验是:每绕 3~4 个 U 就检查一次对内差值,不要等全部绕完再看。因为绕到最后发现对内偏斜超标,返工要拆掉一大片。

4.3 单端信号混在差分组里的处理

有些接口是"差分时钟 + 单端数据"的组合,比如某些 RGMII 变体。这种情况下,单端数据线要和差分时钟做等长,但差分时钟本身又有对内等长要求。处理顺序是:先保证差分对内等长,再把差分对作为一个整体和单端线做组间等长。

在 PADS 里,你可以把差分对的两根线都加入单端匹配组,但要注意长度计算——差分对的长度取 P 和 N 的平均值还是各自计算?PADS 默认各自计算,所以组间匹配时要以差分对中较长的那根为参照,否则短的那根会拖后腿。

5. 绕不进去时的排查链路

5.1 从"差多少"倒推"哪里出了问题"

绕线卡住时,不要盲目加大振幅。先看长度监视窗口,确认三件事:

  1. 差值是多少:如果差值只有 1~2 mm,可能只是取整误差,微调即可;如果差 20 mm 以上,说明基准选错了或者某根线走了捷径。
  2. 哪根线最短:最短的那根往往是"抄近路"了,检查它是不是少绕了某个区域,或者走了内层直线。
  3. 有没有线超出 Maximum Length:如果为了凑长度把某根线绕超了上限,说明基准线本身太长,应该换基准。

我遇到过一个典型案例:DDR 数据组里 DQ7 怎么都绕不到目标长度,检查发现它从 BGA 出来直接走内层到了颗粒,路径比同组其他线短了 18 mm。解决办法不是硬绕,而是把它改到和其他线同一层走,路径自然就接近了。等长的前提是路径拓扑相似,拓扑差太多,绕线是补不回来的。

5.2 空间不够时的取舍策略

当绕线区域确实塞不下时,有几个选择,按优先级排:

  • 换层:把部分蛇形放到内层,利用垂直空间。代价是增加过孔,要保证同组换层次数一致。
  • 减小振幅但保持间距:振幅可以适当减小,但间距不能低于 3 倍线宽,否则串扰失控。
  • 调整基准:换一根更容易匹配的线做基准,重新分配绕线量。
  • 放宽 Tolerance:这是最后手段,且必须经过时序复核,确认放宽后仍在预算内。

注意:绝对不要为了塞进去而把蛇形段的间距压到 2 倍线宽以下。我见过一块板子因为蛇形间距太小,DDR 跑 800 MHz 时误码率飙升,降到 533 MHz 才稳定,最后只能改板。

5.3 绕完之后的验证动作

绕完不等于结束。必须做三件事:

  1. 重新跑一遍长度检查:用 PADS 的Verify Design里的 Length 检查,确认所有网络都在规则范围内。手工看监视窗口容易漏。
  2. 导出长度报告:在 Length Monitor 里导出 CSV,逐组核对最大最小值之差。这个报告也是给硬件负责人 review 的依据。
  3. 目视检查蛇形质量:重点看拐角是不是 45 度、间距是否均匀、有没有意外的锐角或短截线(stub)。短截线是等长绕线的大忌,会引入反射。

我个人的习惯是绕完一组就立刻验证一组,不要全部绕完再统一查。因为问题往往是成组出现的,早发现早改,返工成本低。

6. 几个让我少走弯路的实操习惯

第一个习惯是给每个匹配组建一个独立的绕线区域。在 Layout 里用 2D Line 在禁止布线层画个框,标注组名和长度差,绕线时只在这个区域内操作。这样既避免蛇形线散落各处,也方便后期 review 时快速定位。

第二个习惯是长度单位统一用 mil。虽然国内很多项目用 mm,但 PADS 的很多默认规则和器件库是以 mil 为基准的,混用容易在换算时出错。我一般设计时用 mm 布局,等长规则里切到 mil,心里有个换算表:1 mm ≈ 39.37 mil。

第三个习惯是保留一份"绕线前"的版本。等长绕线是个反复调整的过程,有时候绕到一半发现基准选错了,需要推倒重来。如果没存版本,就得手工拆掉所有蛇形,非常痛苦。我通常在开始绕线前用File → Save As存一个_pre_length后缀的版本,绕线过程中每隔一段时间再存一个带时间戳的版本。

第四个习惯是把等长规则写进设计说明文档。哪个组、目标长度、Tolerance、参照信号、换层要求,全部列清楚。这块板子可能半年后要改版,或者交给同事维护,没有文档的话,规则全靠记忆,迟早出问题。

最后一个,也是我觉得最重要的:等长是手段不是目的。我见过有人把不相干的信号也强行等长,纯粹因为"看起来专业"。等长只对有时序关系的信号组有意义,对独立的控制信号、电源、模拟信号做等长,除了浪费布线资源没有任何好处。搞清楚哪些需要等长、哪些不需要,比会绕蛇形更重要。

实际项目里,等长走线的质量往往在调试阶段才真正暴露。常温下跑得通的板子,到了高低温或者长时间老化时出问题,回头查长度报告,十有八九能找到某组线的偏斜超标。所以我的态度一直是:规则阶段多花一小时,调试阶段少熬三个通宵。PADS 这套等长机制不算复杂,难的是把约束想清楚、把空间留够、把验证做扎实。这三件事做到位,等长走线就从一个"玄学问题"变成了一个可重复的工程流程。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询