ARTICLE DETAIL

资讯详情

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

Altium Designer差分对设计实战:规则设置与高效走线全解析

Altium Designer差分对设计实战:规则设置与高效走线全解析 1. 差分对设计前的思路梳理为什么要花力气折腾规则做高速PCB设计的人早晚都会碰到差分信号。USB、HDMI、PCIe、千兆网、LVDS这些接口清一色都是差分对跑起来动不动就是几百Mbps甚至几个Gbps。以前我刚接触Altium Designer以下简称AD的时候也觉得差分对不就是两根线嘛手动拉一拉等长差不多了事。后来真正做了几版高速板子回来发现事情远没有那么简单——同样的网络有的板子一次点亮有的板子眼图乱成一团差分阻抗连续性和等长误差才是背后的关键。AD里差分对设计真正的核心其实就两块第一规则设置要到位就是让软件知道这对线该怎么走、线宽线距多少、等长容差多少第二走线技巧要跟上就是实际拉线的时候怎么保证质量怎么处理绕等长、换层、跨分割这些糟心事。这篇文章把这两块从头到尾拆开揉碎讲一遍按我实际项目的操作顺序来不是那种蜻蜓点水的概念罗列而是可以直接拿到自己板子上套用的东西。适合谁看刚接触AD差分设计的硬件工程师、PCB Layout工程师以及在学校做高速项目但被差分对困扰的学生。哪怕你只是画过几块简单的双层板只要想把手上的板子做得规范一点这篇文章都值得花十分钟读完。2. 差分对规则设置的完整拆解2.1 差分对的定义从原理图一路绑定到PCB很多人把差分对规则设置理解为“在PCB里设置一下线宽线距完事”这是不完整的。一套规范的差分设计流程在原理图阶段就应该把差分对的身份明确下来。AD里给网络“正名”的方式很简单。你在原理图放置两个网络标号比如USB_DP和USB_DN然后在菜单栏找到Place - Differential Pair放置差分对或者用快捷键P V D点击两个网络软件就会把你选中的两个网络绑定成一个差分对。这时候原理图里会生成一个名为USB_DP_USB_DN的差分对标记后面生成的网络表里就会带着这个差分对关系。这里有个关键点两个网络的命名必须有对应关系。AD默认的差分对命名规则是一方以_P、_N结尾或者一个带_P、一个带_N或者_P和_N直接配对。如果你的网络名是USB_DP和USB_DN这两个后缀不匹配AD的自动识别会失败手动添加也容易出乱子。所以命名一定要规划好——USB_TX_P和USB_TX_N、USB_RX_P和USB_RX_N这种一眼就能看出对应关系的最省心。原理图阶段把差分对绑定好导入PCB后PCB里会自动出现差分对对象后面设置规则才有意义。如果你直接在PCB里用Differential Pair Editor新建差分对而不在原理图绑定也能用但一旦重新导入网表重复工作就会让人很窝火。注意Differential Pair Editor在PCB界面可以通过快捷键D P或者菜单Design - Differential Pairs Editor打开。在这个界面里可以查看、修改、新建所有差分对包括把已有网络手动分配成差分对。2.2 核心规则一差分对的物理规则线宽线距与阻抗目标打开PCB规则编辑器快捷键D R或者菜单Design - Rules在左侧找到High Speed - Differential Pairs Routing这才是差分对规则的主场。这里有一个非常容易让新手懵掉的逻辑AD里差分对规则采用的单位是“阻抗目标”Preferred Impedance而不是直接填“线宽”和“线距”。AD会根据你在层叠管理器里设置的板材参数、铜厚、介电常数自动反推线宽和线距。所以你要做的第一件事其实是把层叠管理器里的参数填对否则你填的阻抗目标全是空中楼阁。以常见的4层板为例层叠方案是顶层信号层1oz铜表层微带线结构内层GND完整参考平面内层PWR电源平面底层信号层1oz铜在Design - Layer Stack Manager里你需要设置每一层的材质、厚度、介电常数。FR4板材的介电常数通常取4.2到4.6之间实际以板材供应商规格书为准。把这些参数填好之后AD会自带阻抗计算功能你只需要输入目标阻抗值比如差分90欧姆、100欧姆它就能给出推荐的线宽和线距。AD新版里还有一个更直观的选项——直接填物理尺寸。在差分对规则界面你可以切换单位显示把Preferred Width首选线宽、Minimum Width最小线宽、Maximum Width最大线宽、Preferred Gap首选线距等参数直接以mil或mm为单位填进去。我个人建议如果层叠参数不是特别精确的情况下直接填物理尺寸反而更实用因为PCB工厂加工时看的也是物理尺寸至于阻抗是否达标你可以把线宽线距填好之后再用第三方阻抗计算工具比如Polar SI9000去验证这比AD内嵌的计算结果更接近工厂实际生产。典型差分线参数参考接口类型目标阻抗常用线宽/线距1.6mm板厚FR4表层微带线备注USB 2.090Ω差分5mil线宽 / 5mil线距配合包地效果更佳USB 3.090Ω差分4mil线宽 / 8mil线距高频串扰敏感HDMI100Ω差分4mil线宽 / 6mil线距需做对内等长千兆网100Ω差分5mil线宽 / 8mil线距注意与相邻差分对间距LVDS100Ω差分5mil线宽 / 7mil线距注意减少过孔数量这个表只是参考实际线宽线距由层叠结构和工厂工艺决定。切记4mil线宽是常规板厂的低成本极限低于这个值生产良率会明显下降加工费用也会上涨。如果你的阻抗计算出来需要3mil以下的线宽最好调整层叠或者换板材而不是硬着头皮往上画。2.3 核心规则二差分对等长规则等长规则是差分对设计里最磨人的环节。先明确一点等长不等于等物理长度而是等传输时延。但实际工程中只要同一对差分线走在同一层、过孔数量一致物理长度误差基本就等于时延误差所以大家习惯直接用物理长度来约束。AD里的等长约束在High Speed - Matched Lengths规则里设置。你需要指定Tolerance等长容差。USB 2.0一般要求差分对内误差不超过5milUSB 3.0/HDMI建议控制在2~3mil以内。Matched Length目标长度。如果只是单个差分对可以留空当你在交互式布线里拉等长的时候会以较长的那根为目标。特别注意AD的等长规则可以绑定到某个类Class上也可以绑定到具体某一个差分对上。如果你在一个项目里既有USB又有HDMI不要偷懒只建一个等长规则否则后面调等长的时候会互相干扰。实际项目里我通常会把等长分为两档对内等长同一差分对中P和N之间的长度差这是必须严格保证的。USB 2.0全速/高速模式5mil容差完全够用SerDes这类高速信号如PCIe建议2mil以内。对外等长不同差分对之间的长度差典型场景是并行总线如LVDS的数据通道。这个通常放宽到10~25mil甚至更多具体以芯片手册要求为准。2.4 规则优先级的坑为什么你的差分规则“不生效”这是AD差分对设计里最经典的翻车现场之一。明明规则设置好了走线的时候线宽还是老样子或者DRC报错显示的规则根本不是你以为的那条十有八九是规则优先级没搞明白。AD的PCB规则是树状结构的同一类型的规则可以建多条每条可以指定不同的对象范围比如All、Net Class、Net、Differential Pair。当多个规则同时作用于同一个对象时AD按优先级从高到低依次匹配先命中的规则生效。问题就在这里很多人建了一条全局的布线宽度规则作用于All又建了一条差分对规则作用于某个差分对然后发现差分对线竟宽然按照全局规则来走。原因就是新规则默认优先级在全局规则后面根本没匹配上。解决方法是打开规则编辑器在左侧选中差分对规则右键选择Priorities...在弹出的优先级设置窗口里把差分对规则的优先级提升到高于全局规则。最简单的判断标准——如果你的差分对规则优先级低于All那这条规则就白建了。经验建规则的时候尽量让范围精确到差分对或网络类Net Class不要用All这类模糊范围去约束差分线。作用域越精确、优先级越高后面维护起来越不容易产生意外。2.5 差分对类管理批量设规则的正确姿势当板子上有十几对差分线的时候一条一条去设置规则会疯掉的。正确做法是用类Class来管理。在PCB界面按快捷键D C打开类管理对话框或者在Design - Classes里创建。你可以创建一个Differential Pairs类把所有差分对网络都塞进去然后为这个类单独设置一套统一的差分规则线宽、线距、等长容差。如果某些特殊接口需要特殊的规则再单独给具体的差分对建规则并提高优先级就行。这种方式最大的好处是调整规则只需要改一处所有属于这个类的差分对全部生效不用每一个都去单独改。另外配合Class的过滤功能在PCB面板里可以快速选中所有差分网络统一显示、统一检查画板效率能提升不少。3. 差分对高效走线的实操方法论3.1 准备工作刚进PCB该做的四件事常有朋友拿一块PCB过来问差分对怎么画才能又快又好。我通常先看了一眼就发现问题——他们压根没做准备工作拿起鼠标就开始拉线结果规则没生效、层叠没设置、板框定位也没有画到一半全乱了。差分走线要想高效起步阶段就得把下面几件事安排明白第一步确认层叠。如果是多层板先设置好层叠结构和阻抗参数。不要等线走完了才发现参考层被分割了返工量大到怀疑人生。第二步设置好差分规则和等长规则。按上一节的方法把线宽、线距、阻抗、容差全部填好并检查规则优先级。第三步安排布局。差分对的器件要合理摆放。接插件、连接器位置优先定下来主芯片和连接器之间的差分线尽量走直线、走短路径。布局不好后面走线技巧再高明也救不回来。第四步定义好板框和禁布区。把螺丝孔、板边、结构件位置先圈出来避免差分线走到禁布区边缘造成阻抗突变。这几步做扎实了后面走线就是在一个已经铺好轨道的场景里开车从容得很。3.2 交互式差分对布线从拉出第一根线到修整AD的差分对布线功能用过的人都应该知道快捷键P IInteractive Differential Pair Routing或者菜单Route - Interactive Differential Pair Routing。在执行这个命令前你的光标靠近任意一个差分网络时AD会自动识别并把配对网络一起高亮非常顺手。实际拉线的时候我一般会先走容易的部分把连接关系理顺别一上来就死磕等长。拉线过程中这几个快捷键是高频使用的Shift W切换线宽。前提是规则里已经设了多个可用的线宽值否则它只能在规则允许范围内切换。Tab暂停布线并弹出属性面板可以临时调整线宽间距等值适合处理局部空间紧张的情况。Shift R切换冲突处理模式。推挤Push、绕障Walkaround、忽略障碍Ignore三种模式来回切换应付不同布线场景。3或Shift 2切换多层显示/隐藏方便观察内层走线。有一个小技巧拉差分线的时候如果你想让两根线同时对称地在障碍物之间穿行在走线模式下按Shift Space循环切换拐角模式选择45度角或者圆弧角模式。圆弧角的阻抗连续性比45度角略好且高频下寄生参数更小但圆弧角会占用更多的布线空间和编辑工作量多数场合45度就已经足够了。3.3 减小差分对换层带来的阻抗突变高速差分设计里换层是不可避免的但在AD里换层这件事做得好不好区分度极高。换层的本质是信号的返回电流需要换参考平面而参考平面的切换点恰恰是阻抗不连续的重灾区。一个可靠的换层方案至少关注两个点第一过孔旁边必须打回流地孔。差分对P和N两侧各打一个地过孔让返回电流从参考面A平顺地跳到参考面B。这个操作看着不起眼但很多人在画完板后测试发现过孔处串扰变大、EMI超标就是少了这几个地孔。第二过孔尺寸尽量小且一致。普通信号过孔常用的钻孔12mil、焊盘22mil差分过孔建议不要比这更大。大的过孔带来更大的寄生电容会让阻抗从100Ω掉到90Ω甚至更低。同一对差分线的两个过孔孔径和焊盘必须完全一致否则P和N的延迟就不相等了等长做了也白做。在AD中设置过孔时打开Routing Via Style规则把过孔外径、孔径指定为固定值。如果是BGA出线还需要考虑盘内过孔Via-in-Pad的情况不过这是另一个话题了。从根上讲过孔数量越少越好。你能做到一对差分线只换一次层就绝对不要让它换两次。每换一次层等长误差、阻抗突变、串扰风险都会累积。3.4 绕等长的技巧怎么绕才不破坏信号质量等长绕线是差分对走线里最考验功力的环节。很多人为了凑长度在空间允许的地方疯狂绕线结果长度是等上了信号质量却差了得不偿失。绕线的基本原则一是绕线区域远离接收端和源端最好在传输线中间段进行绕线二是绕线间距至少大于等于3倍线宽满足3W原则绕线过密会让相邻线段之间产生耦合破坏差分阻抗三是尽量使用45度角或者圆弧形绕线避免直角。AD里执行等长调整的命令是Tools - Length Tuning - Interactive Length Tuning快捷键T R L然后点击需要调整的差分对AD会实时显示当前长度和目标长度的差距你拖动鼠标软件自动生成绕线形状。这里要说一个很多人不知道的细节AD的等长调整是按照你设置的Target Length来实时调整的。如果你没有在规则里设置Matched Length目标值那么软件默认会以当前选中网络中最长的那根为目标。所以实际操作中先把差分对里相对短的那根作为“被调整对象”让AD以长的那根为基准生成绕线效率最高。绕等长的形态选择也很重要对于普通低成本板子空间充裕直接用45度角的锯齿形绕线Accordion最合适。对于空间紧凑的地方用Trombone长号式绕线占用面积更小但耦合更强使用时要留意间距。对于高频信号5GHz以上优先考虑用圆弧绕线来减少拐角反射。而且绕等长不是越靠近终点越好尽量在整条走线长度充裕的位置分散绕避免在某个位置突然堆一堆蛇形线。3.5 差分对避让与包地处理差分线周围要不要包地这个问题在论坛里能吵出一栋楼。我的观点很明确在芯片手册要求、空间允许、且你有把握做好地孔缝合的情况下包地加分否则不包地维持间距本就足够了。为什么这么说包地的本质是给差分信号提供一个良好的隔离防止相邻差分对之间串扰。但包地线条若是没有可靠的地孔缝合或者包地线断断续续效果反而比不包地更差——因为它既增加了线间距压力又形成了一个寄生的半波谐振结构。如果你的空间足够做一个“包地地孔缝合”的组合方案差分对两侧各拉一条地线地线宽度为差分线宽的两倍以上每隔50~100mil打一个地孔连接到相邻的完整参考平面。在AD里这个过程可以通过区域的铺铜来实现再做一次Tools - Via Stitching过孔缝合。这种方式在高速信号走长线的场景中尤其有效像是USB 2.0 Full Speed配长线的设计包地比不包的EMI表现确实好很多。如果空间紧张老老实实保证差分对与其它信号之间的间距。AD的规则里可以设置Electrical - Clearance的规则让差分对类与普通信号类之间保持3倍线宽以上的间距。3.6 差分对走线的平面完整性检查这一节放在走线技巧的最后讲但它的优先级最高。差分信号跨分割是走线上最不能接受的错误之一。什么叫跨分割简单理解就是把参考平面切开了。内层的电源或地平面因为过孔、走线通道的原因在某些区域出现狭窄的断口差分线经过这个断口上方时返回电流走不了原来的路径只能绕行这个绕行的路径就产生了电感突变差分信号几乎没有抵抗能力眼图和EMI会同时恶化。在AD里如何提前发现这类隐患两个技巧第一打开内层平面显示铺铜预览打开快捷键5可以快速切换显示模式把差分线所在层和参考平面层联合查看肉眼扫一遍有没有线在平面断口上方穿过。第二利用DRC的Un-Routed Net和Minimum Solder Mask Sliver规则检查虽然它们不会专门报“跨分割”但是在设置里把Net Antennae网络天线的检查打开也能辅助发现一些悬空的问题。更靠谱的做法是养成布线习惯开始走差分之前先花两分钟看一眼要经过区域的参考平面是否完整。如果发现必须跨分割那就设计改板给差分线换层或者保证参考平面在对应区域不切。原则就是宁可多打几个过孔绕远路也不能让差分信号跨过断裂的参考平面。4. 常见问题与排查技巧实录4.1 差分对规则失效的排查思路这是最多人问的问题“我规则明明设了为什么走线不走设定的值”排查顺序建议如下第一步查看规则范围和优先级。在规则编辑器里右键Priorities...确认差分对规则的优先级高于任何作用于相同网络的通用规则。这个操作占排查成功率的七成。第二步检查规则是否属于正确的规则类。比如你建了Routing Width规则但差分对行走线宽度其实是受High Speed - Differential Pairs Routing控制的而不是受Routing Width控制。在AD中差分线有自己独立的一套宽度规则你在普通线宽规则里怎么设置都不影响差分对这点很容易搞混。第三步检查当前选中的网络是否真的属于你所设定的规则范围。PCB面板快捷键PCB打开网络列表逐个确认网络归属是否正确。4.2 等长绕线后DRC报错等长操作完成之后DRC报错通常是因为Matched Lengths规则里的Tolerance设置得太小而你的绕线又没达到目标。这种情况解决流程是先看ADR报错的是哪一对网络找到实际长度差再去判断是继续绕线还是调整容差。如果长度差在5~10mil之内而芯片手册又没有严格要求到2mil以内那直接把容差放大到10mil是一个务实的做法因为5mil的物理长度差在高频下换算成时延也就零点几皮秒很多场景根本感知不到。如果长度差超过50mil那多半是你将目标线设定错了检查一下等长目标线。还有一个实操细节在Tools - Length Tuning面板里可以设置绕线的最大幅度Max Amplitude和间距Gap如果绕线空间不够PCB会有“线绕不开”的情况这时候不是硬调容差而是要调整布局。4.3 差分对布线时无法推挤其它线使用交互式差分对布线时按Shift R切到Push模式却发现其它信号线纹丝不动这种情况十有八九是因为被推挤的目标线正处于锁住Locked状态。检查方法点击目标线段看属性面板里Locked是否为勾选状态解掉锁定再推挤即可。另一个原因是两条线并不在同一层。推挤只在同一层生效如果目标线在其它层你会觉得“怎么推都推不动”实际上它根本不是你的竞争对手。4.4 DRC报差分对间距错误这种错误大部分情况下是你在布线的某一段P和N两根线之间的间距小于规则设定的Gap值。典型场景是BGA区域出线引脚间距太小只能以较小的线距走出芯片走了一段之后才能拉开到正常间距。处理的思路有两个一是给BGA区域的出线段单独建一条Clearance规则允许这一小段间距更小二是在该区域适当调整出线角度P和N错开走减小平行耦合长度。不要试图靠加大绕线来规避间距检查该建规则还是建规则。4.5 顶层走差分、底层走差分参考平面不同怎么办如果顶层和底层都有差分线且它们对应的参考平面不同比如顶层参考GND底层参考PWR这时候信号回流路径会发生比较明显的变化。严格的做法是要求底层参考平面同样是GND或者参考PWR平面时相邻平面必须有完整的GND层耦合。在AD中可以在层叠管理器里把底层和相邻内层GND的间距尽量拉近增强耦合。不要寄希望于一个内层电源平面同时作为顶层和底层信号的参考那样Top和Bottom参考平面不一致的问题只会更严重。4.6 差分对包地不彻底引发的“假性隔离”包地线画了但地孔打得稀稀拉拉间距很大这种包地在高频下效果不仅有限有时还会成为辐射源。原因是包地线不是理想地它自己就是一根长天线如果不定期“接地”上面的噪声无处释放。经验值是包地线上的地孔间距要小于λ/20工作频率波长的二十分之一。以USB 2.0480Mbps为例基波频率约240MHz波长约1.25米λ/20约62.5mm所以理论间距要求并不苛刻。但实际板子空间里我习惯按2~3mm间距打孔这样无论是耦合噪声还是对外辐射都能有效抑制。5. 项目实操记录一个USB 2.0差分对的完整设置流程理论讲再多不如带着走一遍实际流程。以下是我最近做的一块小板上USB 2.0差分对的完整设置过程全流程可复现。这块板是4层板尺寸大概80mm×50mm主芯片是常见的MCUUSB走线从芯片到板边连接器总长大约50mm。第一段原理图处理。两个网络命名为USB_DP和USB_DN放置差分对标识确认网络表没有警告。导入PCB后打开Differential Pair Editor快捷键D P检查差分对USB_DP_USB_DN是否存在且网络分配正确。第二段规则设置。打开Design - Rules先确认层叠管理器里的参数表层铜厚1oz介质厚度0.2mmFR4介电常数4.3。然后新建Differential Pairs Routing规则作用于类All Differential Pairs目标阻抗填90欧姆查看AD算出的线宽线距。再用Polar SI9000复核最终确定线宽5mil线距5mil。新建Matched Lengths规则容差5mil。第三段检查优先级。确认差分规则优先级高于全局线宽规则。在DRC设置里把Differential Pairs Routing和Matched Lengths的在线检查打开。第四段布局。芯片和连接器位置固定好后把去耦电容靠近芯片电源引脚放置。USB差分线从芯片引脚出来之后尽量走表层减少过孔。第五段走线。快捷键P I进入差分对布线从芯片端开始拉线。走到连接器附近时发现有一个电阻挡在中间按Shift R切到推挤模式调整电阻位置后继续走线。整对线走到位之后观察一下阻抗突变点确认过孔只有连接器端一个。第六段等长。执行T R L等长调整命令点击差分线看看当前长度差。实测P比N短了大约35mil手动拖动绕等长绕线的间距设为至少15mil绕线区放在走线中段最终等长DRC通过。第七段包地与地孔检查。在差分线两侧拉出地线间距保持10mil以上每隔2mm打一个地孔。打完孔之后用Tools - Via Stitching给包地线统一补上地孔完成。第八段DRC全检。跑一遍完整DRC确认差分间距、等长、线宽无误。最后再用Tools - Length Tuning - Interactive Length Tuning查看一次长度数据存档。这整个流程熟练的话二十分钟内能完成一对USB差分的全部设置与走线。新手第一次做可以慢一些但步骤不能省省略哪个环节后面都得用更大的代价补齐。6. 个人实操总结与易错点补遗画了几年板子踩过的坑太多了最后几条经验是我最想分享出来的第一差分规则设置不是一次性的板子中途改了层叠、改了板材务必回头重新核算线宽线距阻抗参数变了你还在用旧规则走线板子出来就是废板。第二等长不只是看总长度相等还要看P和N各自经过的过孔数量是否一致。过孔本身的时延差异比铜箔走线的差异大得多一个过孔约等于0.5~1mm走线的时延所以打孔数量不一致的时候等长做了也白做。第三布线时尽量让差分对两侧的走线对称。对称不是美观问题是电气问题。不对称的结构会导致差模转共模产生不必要的共模辐射。第四不要迷信所谓的“差分对必须走顶层”这种说法。走内层、走底层都可以关键是参考平面完整且与走线层耦合良好。很多四层板的底层差分线做得比顶层还好因为底层离GND参考层更近。第五在AD里发现差分对走线不理想需要重走的时候不要用鼠标一根根去删除选中其中一根差分线按Delete键AD会同时删掉P和N两根。这个小操作能省很多右键菜单的时间。最后分享一个实用的小技巧AD的差分对在PCB中默认不会显示网络名和阻抗信息。如果想让差分对在PCB上更直观地显示出来可以在PCB面板里过滤选择差分对网络然后通过View - Board Insight Display打开悬浮标签显示功能把Net Name和Differential Pair Length显示开关打开这样画板时一眼就能看到每对差分线的长度状态省去反复打开测量工具的麻烦。配合在线DRC画完一块板子的效率能至少提升两成。
返回列表