ARTICLE DETAIL

资讯详情

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

Allegro 16.6差分等长规则设置与布板绕线实战指南

Allegro 16.6差分等长规则设置与布板绕线实战指南 1. 为什么差分等长是高速板的“生死线”先理解再动手先说一个我自己踩过的教训。去年做了一块带USB 3.0接口的板子TX/RX差分对原理图是标准的走线也按3W原则处理了预审DRC全绿。结果上测试机USB 3.0直接降级成USB 2.0再查眼图RX眼高只有规范值的六成。最后定位到的根因就是差分对内P/N两根线差了70多mil——不是没规则是规则里只设置了线宽线距压根没设置相位容差。Allegro 16.6到现在还是很多公司的主力版本打开Constraint ManagerCM满屏数字让人发怵于是不少人干脆跳过差分等长配置只当普通单端板画。这篇文章就把差分等长从规则创建、参数配置、绕线操作到最终DRC验证完整走一遍全部按16.6界面的实际路径来写你对着自己的软件窗口一步步找就能对上。1.1 差分信号的工作原理两个信号不是“互为备份”差分信号的本质是两根网络上的电压互补变化接收端真正关心的是两个信号的差值。也就是说P和N两根线必须基本同时到达接收端差值的幅度和时序才正确。如果一根长一根短到达时间有先有后接收端采到的差分电压就不是完整的摆幅相位上也会出现偏移。表现出来就是眼图变小、抖动增加、误码率上升。这里最容易犯的认知错误是把两根线当成两条独立的单端线来布。实际上在整个传输路径上P和N都要严格耦合同一层、相邻走线、连续性尽量一致。等长不只是最终长度数字相等而是等时。在FR4板材上走线延迟大约150~170ps/inch表层和内层因为介电常数不同延迟也会有细微差别。跨层换过孔也一样两个过孔的残桩都会贡献时延。所以“长度一样”不等于“延迟一样”这正是Allegro里既有长度类约束、又有时间类约束的原因。1.2 对内不等长会带来什么从共模噪声到眼图塌陷对内不等长的危害是具体的不是“指标不好看”这种虚的问题。第一是共模噪声变大。P和N到达接收端有时间差接收端的共模抑制能力是有限的没抵消掉的部分就变成共模电流沿着线缆或板边辐射出去EMI测试直接超标。很多板子辐射骚扰过不了查到最后就是某对差分线在里面偷偷差了十几mil。第二是接收端时序裕量下降。USB、PCIe、HDMI这类高速信号本来眼图的闭合容忍度就小几ps的skew就可能吃掉大量裕量。等长做得越差时序裕量越小板子的温度一上来、电压一波动误码率飙升。第三是抗干扰能力变弱。P/N走线距离拉大之后耦合变弱差分信号对外部干扰的共模抑制能力也跟着下降。也就是说等长不仅是“长度”问题它直接决定了一对差分线是不是还“差分”。1.3 一个实际经验值把协议的ps要求换算成mil很多人在CM里填相位容差是拍脑袋的填5mil还是50mil全看心情。实际上这个值应该由协议的时间预算换算过来。经验算法FR4表层层叠下走线延迟约6ps/mm也就是150~170ps/inch。假设某协议要求对内skew不超过10ps那么走线长度差要控制在10ps÷6ps/mm≈1.67mm折合约65mil。反过来如果你在规则里填了5mil那相当于只允许不到1ps的时间差对大多数协议来说都过于激进绕线时会被DRC逼疯。所以正确的顺序是先查协议或芯片手册里的对内skew要求换算成mil再填到CM里。填完相位容差之后还要考虑总长度预算。高速协议除了对内skew有限制通常还会对整个链路的飞行时间有窗口要求这就要配合Min/Max Delay来约束。记住一句话相位容差管“两根线差多少”Min/Max管“这一对线走多长”。2. 16.6版本规则配置前的基础差分对的创建与规则体系2.1 先用Logic菜单把P/N网络“绑定”成真正的差分对Allegro 16.6里差分对并不是把两根网络命名成P/N就能自动识别的。新建或导入的PCB中必须先在PCB Editor里执行Logic - Assign Differential Pair在对话框里分别选择P网络和N网络点Assign才能把它们绑定成一个差分对。绑定完成之后CM里才能看到这个差分对也才能针对它设置等长规则。如果你在原理图Capture里已经标记了差分对属性比如DIFFP_NET_PROP导网表时Allegro会自动带入PCB里可以不用再设。但不少人是拿别的EDA转过来的差分对属性没带过去PCB里就必须手动Assign。手动绑定之后记得重新看一眼CM里的Differential Pair工作表确认状态不是Not Assigned。这一步漏了后面所有等长规则都是空中楼阁。2.2 CM里三大规则体系的职责划分CM的入口在Setup - Constraints - Constraint Manager。16.6的CM把规则分成三大块Electrical电气规则、Physical物理规则、Spacing间距规则。等长这件事看着只在Electrical里填实际上如果Physical里没告诉Allegro这个差分对的线宽和主间距绕线工具根本不知道怎么把它布成正常的差分对。我自己的习惯是这样分工的Electrical规则负责“走多准”相位容差、最小/最大延迟、Pin Pair的相对延迟。Physical规则负责“走多粗”线宽、主间距、颈缩线宽、颈缩间距。Spacing规则负责“离别人多远”差分对整体与其他网络的安全间距。三套规则分别建三个CSet命名做到一眼能看懂比如DIFF100_ELE、DIFF100_PHY、DIFF100_SPC。这样后期查规则、改规则、导出报表都比在一堆默认名字里翻来翻去省事得多。2.3 16.6里Diff Pair CSet与其他CSet的关联逻辑在CM里选中一个差分对网络右键查看属性能看到Electrical CSet、Physical CSet、Spacing CSet三个属性值。Allegro 16.6的差分对约束是分散在两处的相位容差、延迟这类挂在Electrical CSet的Differential Pair页签下线宽、Gap这类挂在Physical CSet的Differential Pair页签下。也就是说你只在Electrical里建了规则却没给网络指派Physical CSet布出来的线可能还是普通单端线宽P/N间距也对不上。很多人说“我设置了差分规则怎么走线出来还是乱的”十有八九是Physical CSet没指派。三套CSet要配套使用少一个都会出幺蛾子。3. 差分等长规则参数逐项拆解别让CM窗口变天书3.1 Phase Tolerance与Min/Max Delay到底控制什么在16.6的CM里Electrical CSet下面有个Differential Pair工作表最常用的两列是Phase Tolerance和Min/Max Delay。Phase Tolerance是Allegro对“等长”最核心的判据它只比较同一个差分对内两根网络从起点到终点的传播延迟差。单位可以是mil也可以是ps取决于当前设计单位和你的层叠。它解决的是“P和N长短是否一致”的问题相当于对内skew约束。Min/Max Delay解决的是“这一对信号整体别太长、别太短”的问题。有些差分对信号在总线的读/写时序里有明确的飞行时间窗口不只要求P/N相等还要求整对信号落在某个延迟范围内。如果只做Phase Tolerance两根线确实一样长但整对长了300mil照样会因为时序超差而挂。所以16.6里这两组参数是配合使用的先用Phase Tolerance卡对内差再用Min/Max Delay卡绝对长度。3.2 线宽、线距、颈缩参数和等长绕线的关系Physical CSet - Differential Pair里的参数看着与等长无关实际上关联很大。主间距Primary Gap决定差分对的耦合强度线宽Line Width决定单端阻抗两者的比值共同决定差分阻抗。绕线时Allegro会按照Primary Gap的值来维持P/N耦合如果这个值设置得太宽自动生成的绕线形状也会变宽设置得太窄绕线的间距限制又太紧。16.6里还有一组Neck参数颈缩线宽/颈缩间距专门用于BGA出线或连接器密脚区。这些区域往往是等长绕线的起点和终点最容易出现P/N长度差。很多人在空旷区域绕得漂漂亮亮一到密脚区就破功原因就是Neck参数没设置好或者根本没进入颈缩状态导致出线区域P/N长度不一致最后整体等长还是不合格。3.3 Pin Pair和相对延迟理解Allegro测量的“参考端点”Allegro的延迟测量不是拿整根网络的总长度来算的而是按Pin Pair。一个差分对从连接器到接收IC中间如果经过两个连接器或一组过孔会被拆成多个Pin Pair。要做等长必须搞清楚Pin Pair的范围和参考点到底在哪。在CM里Differential Pair工作表展示的延迟数据就是针对特定Pin Pair的。默认情况下Allegro会自动为网络上的器件引脚建Pin Pair但如果你要约束的是“连接器引脚到BGA引脚”这一段建议手动创建或修改Pin Pair并确认两根网络使用相同的参考端点。否则会出现一个很诡异的情况两根线明明差不多长Phase Tolerance却一直报红——因为两边测量的端点不对称工具认为你还没等长。这个坑最隐蔽因为它与布线质量无关纯粹是规则参考没对齐。4. 从创建规则到DRC验证16.6完整操作流程4.1 第一步建立Electrical CSet并填入差分等长参数打开CM后在菜单栏选择Object - Create - Electrical CSet命名比如DIFF100。选中这个CSet在Differential Pair工作表中填入Phase Tolerance和Min/Max Delay。Phase Tolerance建议先填一个基于协议预算换算出的值不要一开始就填极限值。比如PCIe 3.0这类高速信号如果预算算出来是10ps你就先换算成mil填进去跑通布线后再根据仿真或测试结果收紧。Min/Max Delay则需要结合器件手册里的飞行时间窗口把最长和最短允许值都填上。这里特别注意CM左下方的Worksheet列表里有不同类别的表不要在Wiring表里乱填全局值。CSet是按对象隔离的但很多人习惯性地在全局表里改数字导致所有网络都被影响。正确做法是只编辑你创建的CSet行不要碰“All Constraints”这类全局汇总视图里的数值。4.2 第二步建立Physical CSet与Spacing CSet继续用Object - Create - Physical CSet命名DIFF100_PHY。打开后在Differential Pair行里设置Line Width、Primary Gap、Neck Width、Neck Gap。这几个参数决定差分阻抗和耦合状态务必和叠层计算出的线宽线距一致。Spacing CSet同样用Object - Create - Spacing CSet创建命名DIFF100_SPC。在设置表里找到差分对与其他网络的间距规则比如Diff-Pair to All一般设置为不小于单端安全间距的2倍具体按板厂的工艺能力和叠层来定。这一步最容易出的问题是Physical CSet里的差分对行没有填到“Differential Pair”那一列而是填到了Single普通单端行。结果就是规则表显示已经设置了实际布线时差分对用的还是单端参数。填完之后把光标停在该行确认你修改的单元格确实属于Differential Pair列。4.3 第三步把CSet指派到网络并开启分析模式选中差分对网络可以用两种方式指派CSet一种是在CM的Net工作表中选中网络后右键在属性对话框里填入Electrical CSet、Physical CSet、Spacing CSet的名字另一种是在菜单Set - Constraints里按网络范围批量指派。指派完成后打开Analyze - Analysis Modes确保Differential Pair相关检查项全部勾选尤其是Phase Tolerance和Propagation Delay。如果这些检查项没勾上DRC根本不会报差分等长的违例规则设了等于没设。这一步我自己每次都会检查一遍因为软件升级或模板切换后Analysis Modes的默认勾选状态可能会变。4.4 第四步用Route Interactive Differential Pair Tune完成绕线布线完成大形之后执行Route菜单下的Interactive Delay Tune或者16.6里专门针对差分对的Interactive Differential Pair Tune命令不同Hotfix版本菜单名称略有差异。点选要绕的差分对走线Options面板里会出现Tune Mode、Gap、Amplitude、Pitch等参数。设置好之后沿走线方向拖动鼠标工具会自动生成等宽等距的绕线形状。在状态栏或Options面板里能看到当前长度、目标长度和差值跟着数值提示调整直到差值变绿。用这个工具而不是手动一段段拉线最大的好处是工具会尽量维持P/N间距避免人为绕出不规则的耦合结构。5. 绕线参数与等长调整绕多少、怎么绕才算合格5.1 三种Tune模式的适用场景16.6的Delay Tune工具提供三种常见的绕线模式Trombone模式适合空间比较充裕的整段补长绕出来的形状类似手风琴对信号连续性影响相对较小。Accordion模式适合在规则布线区域里做波浪式绕线布线密度较高时也能用形状整齐便于后续审查。Sawtooth模式适合在细小空间里做微调幅度小但单位长度引入的拐角更多对高速信号来说寄生效应略明显。选模式不是看哪个好看而是看绕线区的空间余量。空间窄就选Sawtooth空间够就选Trombone或Accordion。如果发现工具生成的绕线形状不齐先调整Tune栅格再重新绕比手动微调高效得多。5.2 Gap、Amplitude、Pitch的参数选择Gap是绕线区相邻走线的间距Amplitude是绕线凸出的幅度Pitch是每个绕线单元的周期间距。这三个参数共同决定绕线占用的面积和引入的寄生电容。我的习惯取值Gap不小于主间距的2倍Amplitude不宜超过走线宽度的10倍Pitch取Amplitude的4~6倍。这样绕出来的区域不会让阻抗突变太严重。绕完一段之后最好用约束管理器里的“显示走线长度”功能确认一下实际绕出来的长度而不是只信Options面板里的估算值。还有一个容易忽略的点绕线时P/N两根线必须同时绕间距保持一致。如果只绕了其中一根差分对立刻变成非耦合走线模式转换变大哪怕DRC显示等长通过了实测眼图可能还是不过。这正是很多人把等长绕得漂漂亮亮、测试却翻车的核心原因。5.3 绕线时看状态栏判断等长是否达标的实时反馈执行Tune命令时界面下方有动态数值显示16.6也会在光标附近弹出实时长度。看两个值一个是对内相位差或长度差一个是目标延迟。两个值都满足要求后再看右下角的DRC图标确认没有新增的间距或长度违例。不要依赖“目测差不多”。板子密度一大目测往往骗人特别是P/N在出脚区域和过孔附近的小幅差值眼睛根本看不出来。以CM报表和DRC结果为准绕完一段就刷新一次DRC别等到最后统一跑检查时一堆红色。6. 实战踩坑六种最隐蔽的差分等长问题与排查链路6.1 坑一相位容差设置了DRC却报“没有差分对规则”场景CM里明明给网络设置了Electrical CSet但DRC报错提示Differential Pair规则缺失。原因通常是网络没有在Logic - Assign Differential Pair里完成绑定或者绑定后没有更新DRC。排查链路先打开Assign Differential Pair对话框确认P/N状态是Assigned然后执行Tools - Database Check做一次数据库更新并刷新DRC。很多情况下绑定操作晚于规则创建DRC索引没刷新就会误报。不要一看到报错就怀疑规则值先从“对象是否真的存在”开始查。6.2 坑二用总长度差额代替相位容差信号没救回来有人为了省事只在Min/Max Delay里填一个总长度范围不填Phase Tolerance。这样只能约束两根线各自的总长度不能约束两根线之间的差值。两根线一条走内层、一条走表层总长度相同但延迟不同照样出问题。排查链路检查Electrical CSet里Phase Tolerance列是否有值如果没有立刻补上。补完之后再跑一遍DRC看之前“通过”的差分对是不是瞬间变红——变红是好事说明规则终于开始干活了。总长度差额和相位容差是两个维度的约束不能互相替代。6.3 坑三单位混用差之毫厘谬以千里16.6的CM单位会跟着设计文件走。设计单位是mil时Phase Tolerance填5就是5mil切到mm时填5就是5mm差了39.37倍。有一块板子从公制模板转过来规则里原本写着0.13mm的相位容差转单位后实际按mil解析相当于3.3mil所有差分对全红。排查链路开干之前先统一设计单位在Setup - Design Parameter Editor里确认单位。在CM里填数值前看一下工具栏上的单位标识心里默认乘以“当前单位换算”。所有规则值都建议在注释或Excel里记录一份原始单位方便换单位后对照。6.4 坑四绕线工具“不听使唤”——物理规则和电气规则打架如果你在Physical CSet里把Primary Gap设成8mil却在Electrical CSet里把Gap相关属性填成别的值或者压根没给网络指派Physical CSet执行Differential Pair Tune时工具不知道按什么间距生成绕线就会绕出畸形的形状。排查链路选中差分对网络右键查看属性确认三个CSet都已指派、命名一致、参数不冲突。如果绕线工具生成的形状怪异先回到Physical CSet检查Primary Gap再回到Electrical CSet检查相位容差。两套规则引用同一个命名体系可以少踩一半的坑。6.5 坑五连接器/BGA区域绕线后对内skew反而变大连接器出脚和BGA扇出区域空间受限P/N往往不等长。等长绕线如果只绕了面积大的中段出脚处的短腿没补最终相位差依然不合格。排查链路先在Pin Pair层面把出脚区域单独设约束把短的网络优先在这一段补齐再绕远离器件的中段区域。绕完后在CM里按Pin Pair查看每段的长度差定位到底哪一段贡献了主要差值。直接看整对总长差是看不出局部问题的必须拆到Pin Pair级别看。6.6 坑六区域规则覆盖全局规则导致的误报板内如果有Route Keepout、Region或Room做了单独的间距规则差分对经过这些区域时会套用区域规则而不是全局Spacing CSet。常见现象是全局规则明明正确但某一段差分对DRC报间距违例或Phase Tolerance在过Region边界后跳变。排查链路选中报告违例的线段打开其属性查看所在Region和实际应用的Spacing CSet。把区域规则里的Diff-Pair相关项补上DRC就消了。这块问题最容易出现在板边的禁布区、螺丝孔附近的Keepout以及内层分割线附近的区域布板前先检查这些区域有没有被意外画进差分对的路径里。最后说点个人习惯。每次出板之前我会用CM的Report功能导出一份差分对等长报表对着板子逐对确认。报表上除了Phase Tolerance之外我还会给每一对差分对写一个备注记录它对应的协议速率和换算后的延迟预算。这套习惯帮我挡掉了好几次改版。如果你也正在16.6上为差分等长发愁希望这套从规则到绕线的完整流程能让你少走几步弯路。
返回列表