尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Allegro差分等长布线:从时序原理到蛇形走线实战

Allegro差分等长布线:从时序原理到蛇形走线实战 刚入行做硬件的那会儿我一直觉得差分等长布线就是“把一对线拉得一样长”。这话听着没毛病但真到了调试阶段板子上的高速信号跑起来眼图乱成一团你用示波器探头一量发现问题恰恰出在当初“一视同仁”的等长处理上。后来重新翻开 Allegro 里的约束管理器把差分对的时序关系一条条捋明白再配合蛇形走线把长度误差补回来整块板子的信号质量才算真正稳住了。这篇文章我就围绕 Cadence Allegro 这套流程把差分等长布线从底层原理到蛇形走线的实操细节拆开讲清楚。不管你是刚接触 PCB Layout 的新人还是已经被高速信号折腾过几轮的硬件工程师这篇文章都会从“为什么必须等长”讲起再落到 Allegro 里具体怎么设约束、怎么绕蛇形线、怎么验证结果。内容偏实战都是可以直接抄作业的方法。1. 为什么明明等长了信号还是出了问题很多人在 Allegro 里把差分对的两条线拉到完全等长结果仿真或者实测仍然出现时序偏差。问题就出在大家只盯着“长度”这个物理量却忽略了更本质的“时间”维度。差分信号传输的时候接收端真正关心的是正负两条线上的电压差值也就是 V 减去 V- 到达时刻的相位关系。如果一对差分线长度有偏差这两个信号到达接收端的时间就有先有后原本干净的差模分量里会掺入共模噪声跑高速时表现为 EMI 变差、误码率上升严重的情况下接收端直接解调不出有效电平。换个好理解的说法两根线就像两个人同时出发往终点跑接收端关心的是两个人同时到达的默契程度。一个人先到了另一个人还在路上那中间这段“干等”的时间就是时序偏差Skew。差分等长布线的目标就是把这段偏差控制在信号上升沿对应的空间长度允许范围内。在工程实践里这个偏差通常有明确的量化指标比如某些高速接口要求对内等长误差控制在 ±5mil 以内对间等长误差控制在 ±10mil 甚至更严。数据来自芯片厂商的数据手册或者接口规范进行 Allegro 布线之前就要确认这些数值。还有一个容易忽略的点等长不只是物理走线长度相等还要把过孔、焊盘这些“隐藏长度”考虑进去。过孔本身就是一段有阻抗变化的传输线会引入额外的延迟。在 Allegro 里做等长计算时如果 Pin Delay 没有设置绕线长度就会有系统性偏差。2. 差分对设计的前置参数先学会看叠层和阻抗在 Allegro 里动手画蛇形线之前必须先确认一个前提差分对的物理参数是不是已经被叠层结构约束好了。很多人上来就打开 Interactive Delay Tune 去绕线忽略了最基础的线宽、线距和参考平面最后绕出来的等长线阻抗不对信号质量照样崩。差分线的特征阻抗主要由线宽、线距、介质厚度、介电常数这几个因素决定。以最常见的 100Ω 差分阻抗为例在常规 4 层板叠层下线宽大概落在 4~5mil 区间线距Edge-to-Edge大概落在 7~9mil 区间。但注意这个数值只是参考一旦叠层换了比如介质厚度变化或者板材换成 Rogers同样的线宽线距算出来的阻抗可能完全不一样。我建议所有人在建差分对之前先去跟板厂把叠层参数确认清楚然后直接用阻抗计算工具比如 Polar SI9000或者 Allegro 自带的阻抗计算模块把当前叠层下的目标线宽线距算出来。下面这张表是常见的差分阻抗目标与典型应用场景大家可以对照着看阻抗目标典型应用说明100ΩUSB 2.0、Ethernet、LVDS最常见的差分阻抗标准90ΩUSB 3.x、PCIe高速串行接口常用85Ω部分高性能 PCIe、SAS取决于芯片厂商要求120ΩRS-485、CAN工业总线场景差分阻抗对线距的敏感程度很高。线距越小两根线的耦合越强差分阻抗会下降线距越大耦合减弱差分阻抗趋近于两根单端线的阻抗值。这就和蛇形走线产生了直接矛盾绕线的时候如果间距控制不好局部区域的差分阻抗就会偏离目标值。还有一个必须提的参考平面问题。差分线无论怎么绕正负两根线的回流路径最好都在同一个完整的参考平面上。跨分割是差分走线的大忌一旦参考平面被切断回流路径被迫绕道相当于在传输路径上硬生生插入了一截感性不连续点。很多 Allegro 初学者在自动绕线之后没检查参考平面完整性结果测出来阻抗曲线在某个位置突然跳变最后定位到就是因为参考平面被走线掏空了。从铜皮优先级的角度来说Allegro 里要给差分走线所在层下方的地铜皮设置合理的优先级避免铜皮动态避让的时候把差分线下方掏空。这块细节可以直接在 Allegro 的 Shape 优先级设置里调整具体的操作方法后面我会专门讲。3. 在 Allegro 约束管理器里设置差分等长规则从零到一等长布线的核心配置都在 Allegro 的 Constraints Manager简称 CM里完成。很多新手面对这个界面会有点懵因为它把约束分成了好几大类而创建差分对、设置等长规则分散在不同页面里。这里我把完整的操作流程过一遍。3.1 创建差分对并分配到网络第一步打开 Allegro PCB Editor执行菜单Setup - Constraints - Constraints Manager进入 CM 界面后切到Electrical选项页。在左侧的Net - Routing - Differential Pair分类下找到当前设计中需要配置的差分网络。选中一对正负网络比如 USB_DM 和 USB_DP右键选择Create - Differential PairAllegro 会弹窗让你确认差分对名称和正负网络分配。这里有个细节Allegro 的差分对创建逻辑是以网络名为基准的所以你在原理图设计阶段就应该把差分网络的命名规范化比如使用USB_DM / USB_DP、PCIE_TX_P / PCIE_TX_N这种带 _P/_N 后辍的命名方式。如果命名混乱创建差分对的时候很容易把网络选错。创建完差分对后可以在左侧的Differential Pair列表里看到它们双击可以修改名称或者重新分配网络。从原理图导入网络表之后这里会自动识别大部分标准命名的差分网络但仍需要人工确认一遍。3.2 设置差分阻抗约束线宽线距接下来设置差分对的物理规则。在 CM 里切到Physical选项页找到Differential Pair约束集。对每个差分对你需要配置Line Width线宽和Gap线距。Allegro 支持给不同层设置不同的线宽线距因为内层和外层的介质厚度不同需要的物理尺寸也不一样。这时最好创建一个Physical Constraint Set物理约束集把不同层的规则统一管理起来。举个例子我的一个 8 层板项目里表层TOP/BOTTOM的 100Ω 差分对线宽是 4.5mil、线距是 8mil内层ART03/ART06因为介质厚度不同线宽要放到 4mil、线距放到 7.5mil。如果不去建约束集每个差分对手动填数字一旦叠层调整所有规则全部要跟着改工作量巨大。3.3 设置等长规则Relative Propagation Delay 是关键差分等长真正的核心约束在Electrical 选项页 - Wiring - Relative Propagation Delay里。在左侧选中需要处理的差分对右侧会出现一张表格要求输入Pin Pair、Target和Tolerance。Pin Pair 就是你要做等长计算的起点和终点通常选择差分对的源端和接收端比如芯片 A 的某个 pin 到连接器 B 的某个 pin。Allegro 的差分等长约束有两种常见模式绝对延迟直接规定整条差分路径的总延迟上限或下限比如要求整个链路的延迟控制在 700ps 到 800ps 之间。相对延迟以某一条通常是较长的信号路径为基准其他路径的相对延迟与它保持在某个范围内比如 ±10mil。对差分对来说最常用的是相对延迟模式。Target 的值可以为 0两条线长度完全一样也可以设置一个偏移量比如人为让正线比负线长 5mil用来补偿芯片内部的固有时差。这个偏移量要看芯片数据手册没有统一标准。设置完 Target 和 Tolerance 之后Allegro 会在布线过程中实时计算当前 Skew 值并以数值形式显示在右下角的状态栏里。绕完线之后鼠标悬停在差分线上也会弹出实时的长度和延迟信息。提示任何等长规则设置之后请务必确认Tolerance 的单位。Allegro 里可以切换 mil 和 mm一个 5mil 的误差如果被当成 5mm 设置对高速信号来说就是灾难性的偏差。3.4 把规则跑起来DRC 实时检查设置完约束之后还需要确保 Allegro 的 DRC 是实时开启状态。执行Setup - Constraints - Constraints Manager在Analysis Modes里把Relative Propagation Delay选项的开关打开这样你在布线过程中就能实时看到红色/绿色的 DRC 标记不用等最后统一跑检查。等长布线最容易忽略的是DRC 的误差信息没有被标注出来。Allegro 中可以在颜色设置里打开DRC Error Markers的显示这样违反等长规则的区域会直接以圆圈标记显示绕线时一目了然。4. 蛇形走线从绕线原理到 Allegro 实操细节等长规则配好之后真正“动手”的阶段就是蛇形走线。Allegro 里执行等长绕线的工具是Route - Delay Tune老版本叫 Interactive Delay Tune快捷键通常是Shift T不同版本略有差异。4.1 蛇形线的走线形式与选择逻辑蛇形线的作用本质上是给较短的信号路径“人为加长”让它在物理长度上追平较长的那条路径。Allegro 的 Delay Tune 工具支持多种绕线样式常见的包括A 型压缩型两条平行线段紧密贴合像手风琴一样向外展开适合绕线空间非常紧张的场景。B 型方波型绕线部分是规则的矩形波形相邻波峰之间的间距均匀这是最常见的形式也是我推荐优先使用的样式。T 型塔型波形宽度从一端到另一端递增或递减适合起点和终点空间不一致的场景。从信号完整性角度讲方波型B 型的规则性是最好把控的。因为它每一段绕线的长度一致差分耦合也相对均匀寄生参数的变化更容易通过仿真验证。压缩型和塔型虽然能解决空间问题但绕线段的局部耦合会发生变化如果间距控制不好阻抗容易偏离设计目标。4.2 绕线振幅Amplitude与间距Gap的工程取值Allegro Repeat 的 Delay Tune 工具里最重要的两个参数就是Amplitude振幅和Gap间距。振幅决定了每段绕线的长度间距决定了相邻绕线之间的空隙。这两个值共同决定了蛇形线占用的面积和走线质量。我的经验是Amplitude 至少大于等于 2 倍差分线间距2×Gap否则绕线产生的耦合会干扰差分对本身的耦合导致阻抗突变。Gap 至少大于等于 3 倍线宽3×Width这是行业里最常见的经验值。小于这个间距时相邻绕线之间的寄生电容显著增大差分阻抗会下降。比如4.5mil/8mil线宽/线距的差分对Gap 至少要设 13.5mil 以上Amplitude 至少要设 16mil 以上。实际我一般把 Gap 放在 4 倍线宽左右也就是 18~20milAmplitude 放在 20~25mil绕出来的蛇形线在仿真里阻抗曲线最平整。4.3 在 Allegro 中执行蛇形绕线的完整操作选择Route - Delay Tune后鼠标靠近需要补偿的差分线Allegro 会自动识别并进入绕线模式。这时你可以通过键盘输入或者右键菜单调整参数Tab 键在绕线长度不足和超过目标值之间切换动态预览。右键 - Parameters可以精确输入 Amplitude、Gap 数值。空格键确认当前的绕线路径右击选择Done或按F6完成绕线。绕线过程中要注意观察右下角的Skew 数值它会实时显示当前多绕了多长。每次绕完一个波峰Skew 会逐渐减小直到接近 Target 允许的 Tolerance 范围。我个人习惯是先把 Delay Tune 的 Gap 和 Amplitude 设置好然后沿着差分线方向拖动鼠标让 Allegro 自动生成一系列等间距的波形。不要在绕线过程中频繁调整参数不然整段蛇形线的形状会变得非常难看后续走线检查也不方便。绕完之后按Shift T关闭 Delay Tune 模式。这时可以对蛇形线区域做一次走线整理可以用Route - Gloss - Parameters里的Line Smoothing功能把一些细小的锐角过度修顺但注意不要让 Gloss 把蛇形线的等距特性破坏掉。4.4 蛇形绕线的最短长度限制与信号上升沿约束这里要补充一个很多人不知道的细节蛇形线并不是“越长越好”它有一个物理上限。信号在传输介质中的传播速度大约是光速的 60%~70%差分信号在板材中的传播速度取决于介电常数。以 FR4 常见介电常数约 4.2 计算信号传播速度大约为 5000mil/ns 左右。当一个信号的上升沿是 100ps 时对应的空间长度就是 500mil 左右。如果要求蛇形绕线的总长度不超过信号上升沿空间长度的 1/4经验值那么 100ps 上升沿的信号蛇形绕线总长不应超过 125mil。绕线过长信号的反射和串扰会明显增加绕线部分的损耗也会影响信号质量。所以在布线阶段就要评估绕线长度需求。如果对内等长误差已经达到几百 mil而绕线空间又非常紧张那首先要反推叠层或者走线路径设计是否合理而不是硬着头皮绕超长蛇形线。5. 走线之外的关键细节过孔、焊盘与参考平面完整性差分等长布线不仅仅是“线上功夫”过孔、焊盘、参考平面这些“线下功夫”同样会决定最终信号质量。5.1 过孔带来的长度补偿与阻抗不连续Allegro 在等长计算时默认只计算走线长度不会自动把过孔延迟折算进来。如果一个差分对在源端和接收端之间的路径上打了 2 个过孔而另一个差分对打了 4 个过孔那么即使它们在 Allegro 里的走线长度完全一致实际物理长度和信号到达时间也会有明显差异。处理方法是在使用 CM 做等长约束前先检查有没有启用 Pin Delay。如果芯片数据手册里给了封装引脚的内部延迟值可以在 CM 的Pin Delay页面里设置把这些额外的延迟也纳入等长计算中。对于过孔本身常见的做法是给过孔设置额外的长度补偿。比如一个 8mil 厚的过孔对应的时间延迟约 1ps 出头在高速设计中可以忽略但当走线距离达到几十英寸级别时累计误差就不能无视了。我在实际项目中通常会让 Allegro 的等长计算模式选择Include Pin Delay同时给过孔区域加一个手动补偿值确保最终结果准确。5.2 参考平面的完整性与铜皮优先级差分线下方必须有连续的参考平面这是老生常谈但真正做起来约束很多。Allegro 里铜皮Shape的优先级设置会影响动态铜皮避让时对走线区域的侵蚀。如果铜皮优先级设置不当动态铜皮可能在某些区域“掏空”差分线下方导致参考平面不连续。在 Allegro 里选中铜皮后右键Assign to Net - GND并检查Shape Properties里的Priorities。高优先级会使得铜皮在与其他铜皮重叠时优先保留低优先级则会被避让。通常建议参考平面所在的铜皮优先级设为最高避免信号层的走线在避让时被其他铜皮切割。实际操作时我会把走线层的 GND 铜皮优先级调成 0最高其他动态铜皮优先级调成 1 或者更低。这样做的效果是当差分线走过某个区域时周围动态铜皮会避让走线但走线下方的 GND 铜皮不会被掏空参考平面始终是完整的。注意Allegro 的铜皮优先级设置在不同版本里的入口略有差异但核心原则一致参考平面永远要排在优先保留的位置。5.3 绕线池塘多个差分对扎堆时的避让策略当 PCB 上存在多组差分走线且它们的等长补偿量都很大的时候很容易出现“绕线池塘”现象就是多个蛇形绕线区域挤在同一块地方。这种情况带来的问题有两个一是相邻差分对之间的串扰明显增大二是蛇形线区域占用了其他信号的布线通道导致走线拥挤甚至引发不必要的绕线。我的处理经验是在布线规划阶段就错开不同差分对的绕线区域让蛇形线的展开方向尽量分散。如果两对差分线平行经过一个狭窄区域可以提前在一对线上做补偿另一对线到空间宽裕的地方再补。这个策略看起来简单但需要提前规划走线通道等绕完线再调整就很费劲了。6. 绕线完成后的验证手段与常见错误快速排查等长绕线完成后内容还不算结束。最终是否满足设计要求必须通过 Allegro 的检查工具验证一遍再结合仿真手段确认信号质量。6.1 用 DRC 和报告功能做等长验证绕线完成后执行Manufacture - Design Rule Check确保Relative Propagation Delay选项勾选运行 DRC。如果约束设置正确且绕线长度落在容差范围内DRC 应该不会报错。如果 DRC 爆出等长错误在 Allegro 的Display - Highlight里选中违反约束的网络错误位置会高亮显示。常见的违反原因包括绕线没完全避开障碍物某段走线未按 Delay Tune 路径进行等长约束的 Pin Pair 设置不完整只约束了部分网络段Tolerance 设置过严无法用物理走线实现另外用Reports - Density Check可以生成布线密度报告配合检查绕线区的拥挤程度辅助调整绕线参数。6.2 使用 Cadence 仿真工具做信号完整性验证DRC 通过只是最低要求真正让人放心的还是跑一次仿真。Cadence 环境下可以用Allegro Sigrity比如 Sigrity SpeedXP或Cadence 的 PDN Analyzer做差分信号完整性分析。常用验证方法是提取绕线完成后的差分网络 S 参数观察其差分回波损耗和插入损耗是否满足芯片厂商的规范。如果仿真结果不理想优先检查蛇形线区域是不是出现了阻抗突变。可以对比绕线前后的 TDR 阻抗曲线看看阻抗波谷是不是出现在蛇形线附近。6.3 关于 auto gloss 工具的小心使用技巧Allegro 的Route - Gloss - Auto Gloss是个自动修线工具能优化走线平滑度、缩短走线总长。但用在这个场景要非常小心它可能会把蛇形绕线区域里的波形“拉直”导致等长约束直接不满足。我在实际项目中这样操作完成蛇形绕线后先用File - Backup保存一个备份文件再跑 auto gloss。如果 gloss 之后 DRC 报错用备份文件恢复再手动微调绕线。不要因为嫌麻烦忽略备份我有一次懒得备份auto gloss 跑完直接把大量绕线拉直了重新绕的代价远比备份大得多。6.4 与 PCB 工厂沟通时反馈绕线相关的注意事项最后一点是很多人容易忽略的蛇形线绕完后板厂的蚀刻精度也对最终阻抗有影响。如果蛇形线的间距接近加工极限板厂在加工时可能会把间距偏小导致阻抗下降。每次送板前最好在制板说明文件里注明关键差分区域的线宽线距要求并要求板厂提供阻抗测试报告。如果板厂反馈阻抗测试值偏低优先检查和目标阻抗对应的线距是不是做偏了而不是先怀疑叠层。7. 个人实操中的几条经验总结把差分等长布线独立成章来写是因为它确实是高速 PCB 设计里最容易被低估的一块。等长布线不是“拉线拉到一样长”的表面功夫而是信号时序、阻抗连续性、参考平面管理三者交互作用的结果。我自己做项目时会强制自己按照下面这个顺序走一遍基本不会出大问题先确认芯片手册里的等长误差指标和 Pin Delay不靠拍脑袋猜容差。叠层和阻抗参数提前找板厂确认算出目标线宽线距再设置约束。在 CM 里建好差分对和物理约束集把线宽线距和相对延迟规则一次配齐。布线时先做好关键差分对的通道规划预留绕线空间。绕蛇形线时盯住两个参数间距别小于 3 倍线宽振幅别小于 2 倍线距。绕完线别急着送板先跑 DRC再看仿真波形最后和板厂确认阻抗。这套流程看着繁琐但每一步都在降低后面调试阶段的不确定性。很多工程师在仿真或者实测阶段焦虑地找原因回头一看问题往往出在这些早期设计流程里。希望这篇文章能帮你在 Cadence Allegro 里把差分等长布线真正做实少走弯路。
返回列表