ARTICLE DETAIL

资讯详情

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

Allegro 17.4差分等长线设计:从原理到实战的完整指南

Allegro 17.4差分等长线设计:从原理到实战的完整指南 1. 差分等长线到底在解决什么问题1.1 从信号完整性说起差分等长线这个词刚入行的朋友听起来可能觉得是个“高级操作”其实它要解决的核心问题非常朴素让两条差分信号在同一时刻到达接收端。差分信号传输的原理是用两根线传输一对极性相反的信号接收端通过比较两根线上的电压差来判断逻辑“0”或“1”。这种传输方式的好处是共模噪声会被抵消掉——外界干扰同时耦合到两根线上接收端做减法时干扰就没了。但这里有个前提干扰必须是“同时”到达两根线的。如果两根线的长度不一致信号到达接收端的时间就有先后这个时间差会让共模噪声转化成差模噪声直接吃掉信号的裕量。在Allegro 17.4里做差分对设计最常遇到的场景就是USB、HDMI、PCIe、SATA、LVDS这类接口。这些接口的速率从几百Mbps到几Gbps不等对应的信号上升沿已经短到几十皮秒级别。在这种速率下PCB上每毫米的走线延迟大约是6到7皮秒一根5毫米的长度偏差就能带来30多皮秒的时序偏移足以让眼图闭合。1.2 差分对和等长线的关系很多人会把“差分对”和“等长线”混为一谈其实这是两个不同层面的约束。差分对约束管的是两根线之间的耦合关系线间距要保持恒定、线宽要一致、两根线要尽量靠近走。这解决的是阻抗一致性和共模抑制的问题。等长约束管的是时序匹配不仅差分对内部两根线要等长这叫“对内等长”或“相位匹配”多组差分对之间也要等长这叫“对间等长”或“组间等长”。比如HDMI有四组TMDS差分对这四组之间的长度偏差要控制在一定范围内否则四路信号到达的时间不一致画面就会出问题。在Allegro 17.4的Constraint Manager里这两类约束是分开管理的。差分对的物理规则线宽、间距在“Physical”约束里设等长规则在“Relative Propagation Delay”约束里设。搞清楚这个分类后面配置约束的时候才不会晕。1.3 什么情况下必须做等长不是所有差分线都需要严格等长。判断标准很简单看信号的上升沿时间和走线延迟的关系。如果信号的上升沿时间远大于走线延迟差比如上升沿1纳秒长度差对应的延迟只有10皮秒那等不等长影响不大。但如果是高速信号上升沿只有100皮秒甚至更短那长度差就必须严格控制。实际项目中我一般按这个经验值来定信号类型典型速率对内等长容差对间等长容差USB 2.0480Mbps±5mil不要求USB 3.05Gbps±3mil±5milHDMI 1.43.4Gbps±5mil±10milPCIe Gen38Gbps±2mil±5milSATA 3.06Gbps±3mil±5milDDR4 DQS1600MHz±5mil±10mil这些数值不是死规矩具体要看芯片手册的要求。有些芯片厂商会给得很宽松有些则非常严格。我一般会先翻芯片的Layout Guide里面通常有明确的等长要求。如果手册没写就按上面的经验值先做着留够裕量。2. 原理图阶段就要埋好的伏笔2.1 差分对的命名规范很多人觉得等长是在PCB阶段才需要考虑的事其实原理图阶段就要开始准备了。最关键的一步是差分对的命名。Allegro识别差分对的方式有两种一种是通过网络名的命名规则自动识别另一种是手动在Constraint Manager里指定。自动识别靠的是网络名的后缀比如_P和_N、和-、_H和_L。如果你在原理图里把差分对命名成USB_DP和USB_DMAllegro默认是认不出来的因为它的默认规则里DP/DM不是标准后缀。我一般会在原理图阶段就统一命名规范比如USB3_TX_P/USB3_TX_NHDMI0_TMDS0_P/HDMI0_TMDS0_NPCIE_RX_P/PCIE_RX_N这样导入PCB后Allegro能自动识别出差分对省去手动创建的麻烦。如果项目里已经有固定的命名习惯改不了那就在Constraint Manager里手动创建差分对也不费事就是多一道工序。注意命名的时候要确保_P和_N是网络名的最后两个字符中间不要插其他东西。比如USB3_TX_P_1这种命名Allegro可能就识别不出来了。2.2 在原理图里标注等长要求原理图不只是画连接关系它还是设计意图的载体。我习惯在原理图里把差分对的等长要求标注出来用Note或者Text的方式写在对应网络旁边。这样做的好处是后面做PCB的人可能是别人也可能是几个月后的自己一眼就能看到哪些线需要等长、容差是多少。具体做法是在OrCAD Capture里选中差分对网络右键添加属性或者直接在原理图空白处放一个Text标注。内容大概写清楚哪几组线需要等长、对内容差多少、对间容差多少、参考层是什么。这个习惯看起来多余但实际项目中能省很多沟通成本。特别是多人协作的项目硬件工程师和Layout工程师之间的信息传递全靠这些标注。2.3 引脚分配的对称性检查差分对的引脚分配也有讲究。理想情况下差分对的两个信号应该从芯片的相邻引脚出来这样走线最容易保持对称。但实际项目中芯片引脚定义往往不是那么理想有时候差分对的两个信号隔了好几个引脚甚至在不同的BANK里。在原理图阶段就要检查这个问题。如果发现差分对的引脚分配不对称要么跟芯片厂商确认能不能调整引脚功能要么在PCB阶段用绕线来补偿。前者是治本后者是治标。我遇到过一个案例某款FPGA的PCIe差分对TX_P在BANK 1TX_N在BANK 2中间隔了十几个引脚。这种分配方式导致PCB走线时必须从两个方向绕过来很难做到等长。后来跟厂商FAE沟通换了一个BANK的引脚分配才解决。3. Constraint Manager里的核心配置3.1 差分对约束的创建流程Allegro 17.4的Constraint Manager是整個等长设计的核心工具。打开方式有两种菜单栏Setup Constraints Constraint Manager或者在工具栏点那个像表格一样的图标。进去之后左侧是约束分类树右侧是具体的约束表格。差分对相关的约束主要在两个地方Physical约束管线宽、间距、过孔这些物理参数Relative Propagation Delay约束管等长创建差分对的步骤在Physical约束里找到Differential Pair这一栏如果原理图命名规范差分对已经自动识别出来了直接就能看到如果没有自动识别在Objects菜单里选Create Differential Pair手动指定哪两个网络是一对设置差分对的线宽和间距。线宽和间距要根据阻抗要求来算一般差分阻抗100欧姆的话线宽5mil、间距7mil左右具体要看层叠结构这里有个细节Allegro 17.4里差分对的线宽设置是分Primary和Secondary的。Primary是正常走线的线宽Secondary是绕线或者进入焊盘区域时的线宽。一般Secondary会比Primary小一点方便在密集区域走线。3.2 等长规则的设置方法等长规则在Relative Propagation Delay里设置。这个约束的类型叫Delta: Pair意思是差分对内部的相位匹配。设置步骤在Relative Propagation Delay里找到对应的差分对在Delta: Pair这一列填入容差值比如5mil如果需要多组差分对之间等长还要设置Delta: Group把这几组差分对归到一个Match Group里这里解释一下Delta: Pair和Delta: Group的区别Delta: Pair管的是差分对内部P和N之间的长度差Delta: Group管的是同一个Match Group里各组差分对之间的长度差举个例子HDMI有四组TMDS差分对每组内部P和N要等长Delta: Pair四组之间也要等长Delta: Group。所以需要先创建一个Match Group把这四组差分对加进去然后设置组内的等长容差。3.3 层叠结构与阻抗计算等长规则设好之后还要确认层叠结构。差分阻抗跟层叠密切相关线宽和间距的取值都要基于层叠来算。Allegro 17.4里查看和编辑层叠的入口是Setup Cross-section。在这里可以看到每一层的厚度、介电常数、铜厚等参数。差分阻抗的计算可以用Allegro自带的计算器也可以用手算或者第三方工具。我一般用Polar SI9000来算差分阻抗把层叠参数输进去调整线宽和间距直到阻抗接近100欧姆。然后把算出来的线宽和间距填回Constraint Manager。这里有个经验算阻抗的时候要留裕量。PCB厂商的工艺能力有波动介电常数和铜厚不可能完全精确。我一般会把阻抗控制在95到105欧姆之间不要卡着100欧姆做。参数典型值说明差分阻抗100Ω ±10%USB/HDMI/PCIe常见要求线宽4-6mil根据层叠调整间距6-8mil根据层叠调整参考层距离3-5mil越近阻抗越容易控制4. PCB布局布线的实操过程4.1 布局阶段的差分对规划布局阶段就要开始考虑差分对的走向。我的习惯是先把差分对相关的器件摆好然后在脑子里过一遍走线路径看看有没有明显的障碍。差分对布局的几个原则差分对的收发器件尽量靠近缩短走线距离差分对走线路径上不要有电源模块、晶振、继电器这类干扰源如果差分对要穿过连接器连接器的引脚定义要跟差分对的P/N对应布局完成后我会用Allegro的Show Element工具检查一下差分对的飞线看看有没有交叉或者绕远的情况。如果飞线交叉严重说明布局需要调整。4.2 差分对走线的具体操作Allegro 17.4里走差分对用的是Add Connect命令但需要先激活差分对模式。操作方式菜单Route Connect或者工具栏点走线图标在Options面板里找到Differential Pair选项勾选在Find面板里选择Net然后点选差分对的其中一个网络Allegro会自动把另一根也选中开始走线Allegro会自动保持两根线的间距走差分对的时候有几个关键点第一保持间距恒定。Allegro默认会按照Constraint Manager里设的间距走但如果遇到障碍物需要绕行间距可能会变。这时候要手动调整尽量保持间距一致。第二过孔的处理。差分对换层的时候两个过孔要尽量靠近最好对称放置。过孔之间的距离会影响差分阻抗一般建议两个过孔的中心距在30到40mil之间。另外换层过孔旁边要加回流地过孔给返回电流提供路径。第三避免直角和锐角。差分对走线用45度角或者圆弧不要用90度直角。直角会导致阻抗突变影响信号质量。第四远离其他信号。差分对跟其他信号之间要保持至少3倍线宽的间距跟其他差分对之间保持至少5倍线宽的间距。如果空间紧张至少也要保证2倍线宽。4.3 等长绕线的技巧走完线之后如果长度不满足等长要求就需要绕线。Allegro 17.4提供了自动绕线功能在Route Delay Tune里。但自动绕线不一定好看也不一定最优我一般会手动绕。绕线的形状有几种蛇形绕线、锯齿绕线、螺旋绕线。最常用的是蛇形绕线因为它的阻抗变化相对平缓。蛇形绕线的参数绕线幅度Amplitude一般取3到5倍线宽绕线间距Gap一般取4到6倍线宽绕线段长度每段绕线的长度要一致绕线的时候要注意绕线区域要远离其他信号避免耦合绕线不要集中在某一个区域分散开可以减少串扰绕线的拐角用圆弧或者45度角我一般会先用Allegro的Delay Tune自动绕一版然后手动调整不理想的地方。自动绕线的好处是快坏处是有时候绕出来的形状很丑而且可能不满足间距要求。提示绕线完成后一定要用Show Element工具检查每根线的实际长度确认满足等长要求。Allegro的等长检查有时候会有误差手动确认一遍更放心。4.4 等长结果的验证走线和绕线完成后需要验证等长结果。Allegro 17.4提供了几种验证方式第一种在Constraint Manager里看。打开Constraint Manager在Relative Propagation Delay里满足约束的会显示绿色不满足的显示红色。这种方式最直观但只能看个大概。第二种用Report功能。菜单Tools Reports选择Relative Propagation Delay报告会生成一个详细的长度对比表。这个报告里能看到每根线的实际长度、目标长度、偏差值。第三种用Skill脚本。如果项目比较大差分对很多可以写个Skill脚本自动检查所有差分对的等长情况输出一个汇总表。这个稍微有点门槛但一次写好之后能反复用。我一般用第二种方式生成报告后逐项检查。如果发现偏差超标的回到PCB里调整绕线然后再生成报告确认。5. 常见问题与排查技巧5.1 差分对无法自动识别问题现象原理图导入PCB后Constraint Manager里看不到差分对。排查思路检查网络名是否符合Allegro的命名规则。默认规则是_P/_N、/-、_H/_L。如果用的是DP/DM需要手动添加规则。检查原理图里差分对的网络是否真的连到了PCB。有时候原理图里改了网络名但PCB没有更新。检查Allegro的差分对识别设置。在Setup Constraints Constraint Manager里Tools Options看看Differential Pair Detection的规则是什么。解决方法如果命名规则改不了就在Constraint Manager里手动创建差分对。选中两个网络右键Create Differential Pair指定哪个是P哪个是N。5.2 等长绕线后长度反而超差问题现象绕线之后长度偏差比绕线前还大。原因分析这种情况通常是因为绕线的时候只绕了一根线另一根没绕导致两根线的长度差变大。或者绕线的幅度和间距没控制好实际绕出来的长度跟预期不符。解决方法绕线的时候要两根线一起绕保持对称。Allegro的Delay Tune支持同时绕两根线用这个功能。绕线前先算好需要补多少长度然后根据绕线参数估算需要绕几段。绕线幅度越大、间距越小单位长度内补的长度越多。绕线后立即用Show Element检查实际长度不要等全部绕完再检查。5.3 过孔导致的阻抗不连续问题现象差分对换层后信号质量变差眼图闭合。原因分析过孔会引入寄生电容和电感导致阻抗不连续。如果两个过孔的距离太远或者过孔旁边的回流地过孔没加阻抗不连续会更严重。解决方法差分对的两个过孔尽量靠近中心距控制在30到40mil。每个过孔旁边加一个回流地过孔地过孔跟信号过孔的距离在20到30mil。如果换层不可避免尽量在靠近接收端的地方换层减少阻抗不连续的影响距离。在过孔区域差分对的线宽可以适当调整补偿过孔的寄生参数。5.4 等长约束设置了但不生效问题现象在Constraint Manager里设了等长约束但走线的时候Allegro不提示长度偏差。排查思路检查约束是否应用到了正确的对象上。有时候设了约束但没分配给具体的网络。检查约束的优先级。Allegro的约束有优先级如果高优先级的约束覆盖了低优先级的等长约束可能被忽略。检查Analysis Modes里的Relative Propagation Delay是否开启。在Constraint Manager里Tools Analysis Modes确认相关选项是勾选的。解决方法在Constraint Manager里选中差分对右键Properties确认约束已经分配。如果约束没生效可以尝试重新分配或者调整优先级。5.5 常见问题速查表问题可能原因解决方法差分对未识别命名不规范手动创建或修改命名等长超差绕线不对称两根线一起绕阻抗不连续过孔太远过孔靠近加回流地孔约束不生效优先级冲突调整约束优先级长度报告不准参考层设置错误检查Cross-section设置绕线区域串扰绕线太密集分散绕线加大间距6. 一些实战中的经验体会做差分等长设计这些年踩过的坑不少有些是技术问题有些是流程问题。技术问题好解决查手册、做仿真、调参数总能找到办法。流程问题反而更麻烦因为涉及到人。我印象最深的一次是做一个HDMI项目原理图阶段没标注等长要求Layout工程师按默认规则走的线。板子回来之后测试发现画面有闪烁查了半天才发现是四组TMDS差分对之间的长度偏差太大。后来重新改板在原理图里把等长要求标得清清楚楚问题就解决了。从那以后我养成了一个习惯原理图里凡是差分对旁边必标注等长要求哪怕芯片手册没要求也标一个参考值。另一个体会是等长不是越严格越好。有些项目里Layout工程师为了满足等长要求把线绕得密密麻麻结果绕线区域串扰严重信号质量反而更差。等长容差要根据信号速率来定不要盲目追求零偏差。一般来说满足芯片手册的要求就行留一点裕量即可。还有一点Allegro的自动绕线功能要用但不要依赖。自动绕线适合快速出一版但最终还是要手动调整。特别是高速信号自动绕线的形状往往不是最优的手动调整能更好地控制阻抗和串扰。最后说一个工具使用的小技巧Allegro 17.4的Constraint Manager支持导出和导入约束文件。如果项目里有多块板子用同样的差分对约束可以在一塊板子上设好之后导出然后导入到其他板子上省去重复设置的麻烦。导出格式是.dcf文件在Constraint Manager的File Export Constraints里操作。这个功能在系列产品的开发中特别有用能保证多块板子的约束一致性减少人为错误。
返回列表