ARTICLE DETAIL

资讯详情

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

Altium Designer 20差分对走线全攻略:规则、阻抗与等长调整

Altium Designer 20差分对走线全攻略:规则、阻抗与等长调整 前阵子帮朋友检查一块高速板卡他用AD20画的USB差分对看起来工工整整可送到测试端做眼图怎么都打不开。调出PCB文件一看问题出在差分对走线的间距上——规则里设的是6mil间距但走线途中有一段被修线拉宽到11mil阻抗直接从90Ω漂到将近120Ω反射把信号完全破坏了。Altium AD20的差分对走线设置表面上看就是PM快捷键拉两条线实际从网络命名、规则参数到等长调整每一步都有隐藏的坑。这篇文章我把整个流程完整拆开适合正在学AD20画差分对、或者画完板子遇到DRC和阻抗问题的人参考。1. 先搞清楚AD20里的差分对是怎么配对的1.1 网络命名差分对的第一道门槛很多刚接触AD的人第一步就卡在命名上。AD自动识别差分对的后缀只有两种_P和_N或者_和_-并且前缀必须完全一致。比如一对网络叫ETH_TXP和ETH_TXNAD会非常聪明地在Differential Pairs Editor里面自动配对但如果你的原理图沿用了一些传统写法比如USB_DP和USB_DN后缀是DP和DNAD并不会认为这是一对天生的差分网络。这个问题在从别的EDA工具转过来的项目中特别常见。有些人习惯用USB_D和USB_D-这在逻辑上没错但到了AD里就得手动去配。手动配对本身不复杂问题在于网络命名一旦不规范后面每次重新同步网表、更新PCB时差分对信息都有可能丢失或错乱。我见过一个项目团队原理图里写的是PCIe_TX0_P/PCIe_TX0_N这是标准的但另一组人写PCIE0_D_P和PCIE0_D_N看起来也有道理AD就不认。所以第一条经验建原理图之前先约定好差分网络的命名规范。推荐直接用信号名_P和信号名_N的格式。如果项目已经画到一半想改可以用全局编辑批量改网络名原理图里按CtrlH把网络名批量重命名早点改后面省事很多。1.2 用Differential Pairs Editor批量创建差分对如果网络命名已经规范创建差分对就很快。打开菜单Design → Differential Pairs Editor你会发现界面分三栏左边是当前PCB里所有未配对的网络中间是已经创建好的差分对列表右边是选中差分对的成员详情。手动创建的方法是左边按下Ctrl选中两个网络一个_P一个_N点击中间的Add按钮或者右键选择创建AD会弹出一行确认文字列表里就出现一个新差分对。改个容易识别的名字方便后续规则匹配。要是项目里有几十对线建议直接用Tools → Create Differential Pairs from Nets自动生成。AD会扫描所有网络名把符合_P/_N规则的自动配对。在弹出窗口里可以看到每对匹配结果逐个确认勾选后点击确定就全部建完了。这里有个很容易踩的坑自动生成完之后一定要逐个检查一遍配对情况。AD按规则匹配是纯字符串匹配它不会管你USB_P是不是真的应该和USB_N配成一对有时候工程里有USB_P和USB_N还有USB_P_EXT和USB_N_EXTAD可能会用模糊匹配搞出一些奇怪组合。创建之后花两分钟过一遍列表比后面走完线才发现两条线压根不是一对划算得多。1.3 从原理图阶段就开始定义差分对除了在PCB里手动建差分对更推荐的做法是在原理图阶段就用Place → Directives → Differential Pair放差分对指示符。操作逻辑是这样的在原理图里找到两条网络连线分别放上Differential Pair Directive然后在属性里填同一个Pair Name比如USB3_TX再分别指定P和N极性。这样做的最大好处是差分对的定义跟着原理图走后续不管怎么编译、怎么同步到PCB差分对关系都不会丢。我在PCB里手动建过一对差分线后来原理图更新了一版重新同步PCB时这对差分对就消失了还得重新配一遍。用Directive定义就不会有这个问题。所以在实际项目里我的习惯是如果只是画个简单的两对差分线直接在PCB里建就行但凡差分对超过五对、或者是自己负责的原理图一律在原理图里放Directive规范一劳永逸。另外在原理图里给差分对网络附近加上注释也是个好习惯比如标注100Ω差分线宽5mil/间距6mil画PCB的时候不用反复回头查设计需求。2. 差分对走线的规则体系线宽、线距与阻抗2.1 不用组件厂家推荐的参数自己做阻抗计算差分对走线最核心的规则是线宽和线距两个值共同决定差分阻抗。打开Design → Rules → Routing → Differential Pairs Routing默认会有一条规则作用于所有差分对。双击打开规则里面有几个关键参数Min Width / Max Width差分线允许的最小和最大线宽Preferred Width走线时的首选线宽Min Gap / Max Gap两条差分线允许的最小和最大间距Preferred Gap走线时的首选间距这些参数能确保走线过程中AD自动按照预设值布线。很多新手直接采用默认的6mil/6mil线宽/间距组合也不管实际叠层能不能达到目标阻抗结果做出来的板子性能完全不能用。建议先计算好再填进规则。2.2 差分阻抗的工程估算从叠层到宽度间距差分阻抗计算并不难关键是做好叠层参数的确认。你需要知道层叠信息信号层到参考层的介质厚度介电常数FR4通常在4.2~4.5之间铜厚通常表层1oz或0.5oz走线是表层还是内层工程上常用的阻抗计算工具有Saturn PCB Toolkit免费、Polar Si9000或者直接在AD20的Layer Stack Manager里设置阻抗Profile。AD20本身就带有这个功能在Design → Layer Stack Manager左下角切换到Impedance视图添加一个目标阻抗比如100Ω差分填好叠层参数后AD会给出推荐的线宽和线距。但要注意AD的阻抗计算结果是理论参考值最终以板厂确认后的实际叠层为准。举个实际例子我常画的一款四层板L1到L2介质厚度4mil表层铜厚1ozFR4 Er≈4.3。这种叠层下做100Ω差分计算得到的组合大约是线宽5mil、线距7mil。如果按保守的6mil线距也能接近100Ω但误差大一些。换一块8mil介质厚度的板子同样100Ω差分线距可能就要拉到10mil以上。不同叠层差异很大千万不能用一个参数打天下。2.3 常见接口的差分阻抗要求对号入座下面这份参考表格是我平时画板时反复对照的接口/协议差分阻抗要求USB 2.090ΩUSB 3.0 / 3.185ΩPCIe85ΩHDMI100ΩLVDS100Ω1000BASE-T千兆网100Ω如果画的是USB 2.0明明需要90Ω却按100Ω的线宽线距去设计阻抗偏了5~10Ω测试时眼图问题就会陆续冒出来。画板之前先查清楚自己所画接口的规范这是最基本但也是最重要的习惯。2.4 参考平面与换层规则里没写但必须遵守Differential Pairs Routing规则本身只管理线宽和间距但差分对能否维持目标阻抗还取决于参考平面的连续性。差分线正下方必须是一整块的参考平面通常是GND不能有跨越分割。如果信号换层新层对应的参考平面也必须完整并且在换层过孔附近要有回流用的地过孔。差分对换层时两个过孔尽量靠近成对对称打避免回流路径被拉得太长。还有一个细节很多画到一半卡住的人会问AD20里走线时看不到中心线怎么开在Preferences → PCB Editor → Board Insight Display里勾选上Tracks Center之类的显示选项走线时就能看到线芯了。这个小设置看着不起眼对判断差分对间距是否均匀很有用。3. 从PM快捷键开始的差分对布线实操3.1 交互式差分对布线完整流程AD20中启动差分对走线的快捷键是PM或者菜单Route → Interactive Differential Pair Routing。按下PM后鼠标靠近差分对其中一个焊盘两条线会同时被拉出来。单击放置起点然后移动鼠标两条线会严格按照规则设定的间距一起延伸。这里要注意鼠标落在哪个焊盘上AD会自动判断这个网络属于哪个差分对并把两条线同时带出来。如果焊盘连接的不是一个已定义的差分对PM后只会拉出单线这时候回第1章检查差分对是否创建成功。布线过程有几个经验点走线模式推荐用ShiftR切换到推挤模式遇到其他障碍时AD会自动推动已有走线比手动绕障碍效率高。遇到需要换层的地方按*键自动打过孔并换层两个过孔会成对称放置。走线过程中的拐角模式按Shift空格可以切换45°弧/直角/圆弧差分线推荐用45°或者是圆弧避免走向突变造成阻抗波动。完成一段走线之后双击或者单击目标焊盘完成布线差分对的那一段就拉好了。3.2 走线过程中的高频操作技巧临时修改线宽和间距是布线中最常用的操作。差分对在进入BGA焊盘边缘、遇到连接器引脚的时候经常需要把间距稍微拉开或者压窄一点。走线过程中按Tab键弹出属性面板直接在Width和Gap里输入临时值回车生效。值得提醒的是这个临时值只对当前正在布的这一段生效接着布下一段会恢复成规则里的Preferred值。这是个保护功能不要试图用临时修改替代规则参数设置。快速切换规则方案可以用ShiftWAD会列出当前可用的走线宽度预设选一个是线对了规则自动走对应的线宽和间距。如果预设里没有你想要的组合需要回到Rules里把该组合加进去。实际项目里我一般会针对不同层、不同阻抗要求建好几组差分规则然后按区域匹配到不同差分对上。另外一个技巧想要在差分对布线时只看当前这对线、不显示其他干扰线段按ShiftS可以切换单层显示模式瞬间清爽很多。布差分线最怕就是旁边的普通信号线太多视觉上容易重叠看错位。3.3 连接器、AC耦合电容和过孔附近的特殊处理连接器附近通常是差分对最脆弱的地方因为引脚间距和走线间距不匹配总有一段线需要从扇出间距过渡到正常线距。这个过渡越短越好。如果连接器是1.27mm间距差分对正常线距是7mil扇出后走出连接器区域要尽快回到规定间距不要拖太长。AC耦合电容的处理也有讲究。高速串行信号常需要串接0.1uF的AC耦合电容电容焊盘会引起阻抗不连续。标准的做法是电容成对对称放置不能用一颗电容覆盖两条线必须是两个独立电容。电容焊盘下方的参考平面保持完整不要在电容下方挖空铜皮。电容两端的走线尽量等长从电容焊盘出来后要立刻回到差分规则规定的线宽线距。我见过不少人在电容下方挖空理由是减少寄生电容这个操作对普通信号有时有效但对高速差分线非常危险——它破坏了参考平面反射可能比寄生电容更严重。除非做过场仿真并且板厂明确支持否则不要在差分线正下方挖空铜皮。关于过孔附近除了两个过孔要对称、靠近之外还要注意过孔的反焊盘Anti-pad。如果过孔离参考平面边缘太近回流路径会被挤压差分阻抗会在过孔处出现一个明显凹陷。如果PCB空间允许给差分换层过孔周围多留一点空地平面空间会改善不少。4. 自动长度调整与差分对间等长的尺度把握4.1 等长调整的正确触发方式差分对布线完成后接下来是等长调整。选中需要调整的差分对走线按下快捷键TR或者菜单Route → Interactive Length Tuning在需要开始绕线的位置点一下鼠标向外拖动AD就会在选中的走线上拉出锯齿状的绕线段。在放置绕线的过程中按Tab键可以打开长度调整的属性面板里面几个关键参数是目标长度不一定填绝对长度如果其他差分对还没布好可以先留空布线全部完成后统一设定。容差一般建议设5mil左右如果目标阻抗控制得好可以压到2~3mil。绕线样式AD提供了Accordion锯齿、TromboneU形等差分线常用Accordion。AD在调整过程中会实时显示当前布线长度和长度余地。当长度进入目标范围后AD会在状态栏给出提示此时就可以停止并放置绕线段了。这里有个实用技巧绕线段的振幅锯齿的高度不要贪大最好控制在最小间距允许范围内。锯齿太深两条差分线之间的距离会急剧变化对阻抗影响很大。好的绕线设计应该是浅而密的宁可多绕几个小锯齿也不要拉一个又深又长的锯齿。绕线段之间的间距建议不小于3倍线宽太小会造成局部耦合过强反而引入额外的阻抗不均。4.2 等长绕线后的检查方法等长调整不是绕进去了就完事还要确认调整效果。选中调整后的差分对打开PCB属性面板能看到两条线的实际长度。AD里也可以用Reports → Measure手动测量弧长但效率太低。我个人的习惯是把每对差分线的长度记录下来列一个表格和原理图或者设计规范里的约束做对照期间要注意绕线段是否真的沿着差分对的耦合方向走。有时候绕线空间不够锯齿会跑到相邻的差分对区域里去虽然DRC没报错但相邻差分对之间的串扰可能变大。这是个隐藏问题靠看板子才能发现不能只看DRC结果。4.3 PCIe这种高速协议差分对之间要不要等长关于热词里频繁出现的一个问题PCIe的发送差分对间需不需要等长答案是不要求像差分对内那样严格但也不是完全无限制。PCIe协议里确实提到Lane-to-Lane Skew通道间偏斜但它的时间预算相对宽松主要靠接收端的CDR和弹性缓冲区来补偿。工程经验上同一组PCIe的发送差分对之间、或者TX与RX之间长度差只要控制在几百mil以内通常不会有什么问题。有些主板设计甚至允许一英寸以上的长度差也不会导致链路起不来。但有一个前提如果板子上有一个共享的参考时钟或者有多通道同时对齐的需求通道间等长就要认真对待。这种场景下我会额外建一个Matched Length规则路径在Design → Rules → High Speed → Matched Length把所有需要对齐的差分对挂到同一个长度约束里设一个总容差比如50~100mil然后用TR逐个调整让AD帮忙做全局匹配。所以对PCIe这类协议来说真正要优先保证的是对内等长和阻抗连续对间等长是锦上添花。如果因为空间紧张非要在对内等长和对间等长之间取舍先保对内这一点比较关键。5. 差分对走线常见坑位与排查链路5.1 差分对无法开始布线的核查顺序按PM后没有任何反应或者只拉出一条单线这类问题几乎每个人都遇到过。我的排查顺序是固定的打开Design → Differential Pairs Editor确认这对网络确实已经配对成功。如果列表里是空的需要先创建这个在第1章讲过了。检查两个网络是否都在同一层。差分对不允许一条线在顶层、另一条在底层这不是物理可实现的AD会拒绝开始走线。检查规则是否被其他规则覆盖。如果同时存在多条Differential Pairs Routing规则并且某条规则作用范围没有包含当前差分对AD可能按错误规则处理甚至无法走线。在规则管理器里选中默认规则看Where The First Object Matches里是不是All Differential Pairs。确认封装焊盘的连接属性没有被锁定。如果焊盘的Locked属性勾上了布线时没法从那个焊盘开始取消锁定即可。检查走线起点是否是GND或电源网络。如果两个网络其中一个意外接错了电源网络AD不会把它当成差分对来布线。按这个顺序走一遍90%的问题都能解决。剩下10%是原理图同步异常我会尝试Design → Update PCB Documents重新同步一次然后在Differential Pairs Editor里重新创建差分对。5.2 DRC报错的综合判断常见差分对DRC报错主要有三种Differential Pair Gap Violation某一段两条线的间距超出规则允许范围Differential Pair Width Violation线宽超出规则Min/Max范围Un-Routed Net Constraint差分对走的当中断掉一段没有形成完整连接Gap Violation最常出现在绕线区和连接器扇出区。修的时候选中报错线段按ShiftW检查当前走线用的哪组规则确认是否该区域匹配了错误的间距要求。有个容易误判的场景是差分对两端连接到连接器焊盘焊盘间距比较宽走线在焊盘附近会有一段自然的展开。如果AD把这一段也算成差分线的Gap违规可以先看一下是否超过Max Gap。如果只是连接器焊盘导致的局部展开可以在规则里把Max Gap稍微放大但不要放得太大否则连接器到差分线的整个过渡区域会失去约束。DRC报错并不是所有都要修但任何一条DRC报错在出Gerber之前都要能找到原因。如果是故意留的错误比如连接器焊盘导致的局部间隙超限在DRC报告里加注释方便后续查阅其他报错一律修到彻底清零。5.3 差分线附近的铜皮、Guard Ring与共面波导细节差分对布完之后敷铜阶段还有几个容易出问题的地方。一是大面积GND铜皮和差分线的间距。如果用的是共面波导结构差分线两侧到GND铜皮的距离是阻抗模型的一部分不能随手拉一片铜皮贴着差分线。这个间距在阻抗设计时就要定好敷铜时严格按照这个值做避让。AD20里可以通过规则设置让铺铜避让差分线但我习惯用Zone属性里的Clearance来管理单独给GND网络和差分网络设一组Clearance规则。二是关于guard ring保护环。附近有敏感的模拟信号或者高频干扰源需要隔离时可以用AD20的Place → Guard Ring快速在指定焊盘或区域周围生成一圈接地的过孔环。这个功能放的位置比较深很多画了好几年板子的人都没用过。但它本身是一个重武器如果周围空间紧张不要在差分线周围随意加guard ring因为保护环的过孔会破坏参考平面的完整性反而影响差分线的阻抗连续。通常只有在板子空间充裕或者EMC测试有明显串扰问题时才使用。三是不要在差分对正下方挖空铜皮。这是给电源芯片散热、或者做焊盘热隔离开孔时最常犯的错误。有时候为了降低焊盘的吸热会在焊盘下方的内层挖空一块铜皮但如果这个焊盘刚好在差分对路径的下方挖空会直接截断参考平面差分阻抗立刻变坏。如果你需要给某个器件的焊盘做散热开窗先确认该区域下方有没有高速信号经过如果有要么重新调整走线绕开要么选择其他散热方案。最后分享两个我自己的习惯第一个习惯是画差分对之前先把阻抗Profile算好填进规则布线时完全不临时改宽度。这样走完的差分对间隔和宽度全程可控DRC通过率也高。第二个习惯是布线完成后花十分钟把所有差分对的长度导出来做一次横向对比能发现很多肉眼看不出的小长度差。这个方法尤其适合USB 3.x、PCIe这类多通道协议比单纯依赖DRC更让人放心。差分走线的本质就是控制阻抗和时序把这两件事抓牢剩下的都好办。
返回列表