ARTICLE DETAIL

资讯详情

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

PADS等长走线实战:从规则建立到蛇形绕线与验证的完整流程

PADS等长走线实战:从规则建立到蛇形绕线与验证的完整流程 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 里用CtrlAltN打开网络列表按类筛选确认没有网络漏掉或串类。我踩过的坑是 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~2 mm可能只是取整误差微调即可如果差 20 mm 以上说明基准选错了或者某根线走了捷径。哪根线最短最短的那根往往是抄近路了检查它是不是少绕了某个区域或者走了内层直线。有没有线超出 Maximum Length如果为了凑长度把某根线绕超了上限说明基准线本身太长应该换基准。我遇到过一个典型案例DDR 数据组里 DQ7 怎么都绕不到目标长度检查发现它从 BGA 出来直接走内层到了颗粒路径比同组其他线短了 18 mm。解决办法不是硬绕而是把它改到和其他线同一层走路径自然就接近了。等长的前提是路径拓扑相似拓扑差太多绕线是补不回来的。5.2 空间不够时的取舍策略当绕线区域确实塞不下时有几个选择按优先级排换层把部分蛇形放到内层利用垂直空间。代价是增加过孔要保证同组换层次数一致。减小振幅但保持间距振幅可以适当减小但间距不能低于 3 倍线宽否则串扰失控。调整基准换一根更容易匹配的线做基准重新分配绕线量。放宽 Tolerance这是最后手段且必须经过时序复核确认放宽后仍在预算内。注意绝对不要为了塞进去而把蛇形段的间距压到 2 倍线宽以下。我见过一块板子因为蛇形间距太小DDR 跑 800 MHz 时误码率飙升降到 533 MHz 才稳定最后只能改板。5.3 绕完之后的验证动作绕完不等于结束。必须做三件事重新跑一遍长度检查用 PADS 的Verify Design里的 Length 检查确认所有网络都在规则范围内。手工看监视窗口容易漏。导出长度报告在 Length Monitor 里导出 CSV逐组核对最大最小值之差。这个报告也是给硬件负责人 review 的依据。目视检查蛇形质量重点看拐角是不是 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 这套等长机制不算复杂难的是把约束想清楚、把空间留够、把验证做扎实。这三件事做到位等长走线就从一个玄学问题变成了一个可重复的工程流程。
返回列表