ARTICLE DETAIL

资讯详情

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

Altium Designer中PCB等长线设置与调整实战:从规则到蛇形绕线

Altium Designer中PCB等长线设置与调整实战:从规则到蛇形绕线 前几天帮朋友调一块 DDR3 的板子功能逻辑全对就是跑不起来。排查了半天最后发现是等长没做——地址线组里最长和最短差了快 500mil。这种问题在 ADAltium Designer里几乎天天都能碰到尤其是涉及 DDR、USB、HDMI、MIPI 这类高速接口时PCB 等长线设置不是“锦上添花”而是“不通就废”的硬指标。很多刚接触 Layout 的朋友一听到“等长”就头大觉得要算一堆时序、看一堆文档。实际上在 AD 里把等长线调明白核心就三件事规则定对、工具用熟、参数调好。这篇东西我就结合自己这些年画板子踩过的坑把 AD 里等长线的原理、规则配置、实操手法和排查套路一次讲透。不管你是刚学会画 PCB 的新手还是已经画过几块板子但没认真处理过等长的人这篇文章都能让你少走很多弯路。1. 为什么 DDR 和 USB 非要折腾等长线先搞清楚底层原因很多人上来就问“等长线怎么画”但我建议先花两分钟想清楚“为什么要等长”。这个想明白了后面所有参数设置你都不需要死记硬背遇到问题也能自己判断。1.1 时序余量与等长的本质信号在 PCB 走线里传输是有速度的虽然接近光速但毕竟不是瞬间到达。对于单根信号来说走线长一点短一点问题不大因为接收端只要在时钟沿到来时采样到稳定电平就行。问题是一组信号往往要配合同一个时钟或者同一个使能信号去工作比如 DDR 的地址线、命令线、控制线它们在控制器端是同时发出去的但如果在 PCB 上走的长度差异太大到达存储器端的时间就会错开。时钟采样是有窗口的数据在这个窗口内必须稳定。谁到早了、谁到晚了一旦超出时序容限读出来的数据就是错的而且这种错还不是每次都错是“偶尔出错”排查起来极其恶心。等长的本质就是用物理长度去补偿传输延迟保证一组信号到达接收端的时间差落在允许范围内。换句话说等长不是为了好看是为了让信号“同时到达”。1.2 到底哪些信号需要做等长这不代表板上所有网络都要绕成一样长那既没必要也不现实。根据我自己的项目经验需要重点做等长的信号分这么几类并行总线类DDR3/DDR4 的地址线、控制线、命令线、数据线数据线通常按字节通道分组做等长还要和 DQS 做配套等长。高速串行差分对USB 的 D/D-、HDMI 的 TMDS 差分对、PCIe 的收发对、以太网的 MDI 差分对。差分对内部要等长对与对之间也要根据规范看情况做等长。时钟与数据配套比如 SPI 的 SCLK 与 MOSI/MISO虽然速率没那么高但在高速 SPI 下最好也做等长。多片器件互联一主多从的结构比如一颗 FPGA 带两片 DDR地址线要“T 型”或者“Fly-by”拓扑等长。有个很常见的误区很多人觉得“低速数字信号不需要等长”。这个说法在 10MHz 以下基本成立但到了 50MHz 以上哪怕不是严格的高速信号只要沿比较陡等长做不做对时序影响都很大。我的建议是凡是一组信号共同时钟或者同源使能的统一做等长又不会多花多少功夫省得后期改版。1.3 等长误差要求大概是多少每个接口标准都有自己的时序要求等长误差这个值不是拍脑袋定的是算出来的。经验值大概是普通 DDR3 的数据组DQS 与 DQ控制在 ±20mil 左右地址/命令/控制组相对时钟控制在 ±50mil 左右DDR4 会更严一些数据组经常要 ±10mil 以内USB 2.0 的全速/高速模式差分对内控制在 ±50mil 就够千兆以太网差分对内等长一般要求 ±5mil 以内对间控制在 ±100mil 左右。但注意这些值只能作为起步参考最终还是要看芯片手册的具体时序参数Tsetup、Thold、Tdqsck 等用公式算出来才有把握。小项目可以按经验值做量产项目、速率高的项目该算还是要算。2. 布线前先定规矩Net Class 与 Length 规则的设置AD 里调等长线最忌讳的就是一上来就拿着线手动绕。手动绕只能作为最后微调的手段真正规范的做法是先把规则定好让 DRC 在布线过程中不断帮你校对。规则没定好你绕了半天 DRC 还是报错完全是在做无用功。2.1 第一步创建 Net Class网络类网络类就是给一组网络打个标签方便统一管理、统一配色、统一设规则。打个比方这就像把一群人按班级编好队老师才能统一布置作业。具体操作菜单栏 Design - Classes快捷键 DC在弹出的对话框里找到 Net Class右键添加类比如命名一个“DDR3_ADDR”然后把地址线、命令线、控制线这些网络加到里面。我习惯的做法是每套总线建一个类DDR3_ADDR地址线 A0~A15、BA0~BA2、RAS、CAS、WE、CS、CKE、ODTDDR3_DATA0DQ0~DQ7、DQS0、DQS0#、DM0DDR3_DATA1DQ8~DQ15、DQS1、DQS1#、DM1USB_DIFFDP、DM建类的时候可以直接在 Class 对话框里用“”把左侧网络快速加入右侧也可以在原理图里给网络添加 Net Label 时带上统一前缀再到 PCB 里按前缀过滤选择加入效率会高很多。以前见人一个个网络手工加加了几十个网络误操作还漏了这种事见得多了建议直接按住 Shift 多选或者用 ShiftF 批量选中同名前缀的网络再往类里拖。2.2 第二步设置 Length 与 Matched Length 规则类建好后打开 Design - Rules快捷键 DR找到 High Speed 这一大类里面有两个关键规则Length对单根网络设置最小/最大长度约束适合时钟线、复位线这种单根有明确长度要求的。Matched Length对一组网络做等长匹配以组内最长或指定目标为基准其他网络要绕到误差范围内。Matched Length 规则的设置里这么填把 Scope 选成你建的那个 Net Class比如“DDR3_ADDR”然后在 Constraints 里设置 Tolerance。比如 DDR3 地址线组填 50mil代表组内所有网络与最长的那根相差不能超过 50mil。还有一个很实用的地方Matched Length 支持用“规则优先级”叠加。就是说你可以同时建好几个匹配规则比如一个全局的 100mil 宽松规则兜底、一个针对 DDR3 数据组的 20mil 严格规则再通过规则优先级让严格规则优先生效。这个思路在做混合信号板子的时候特别管用不用为了个别高速组把全板等长误差都定得很严否则低速线也会疯狂绕线白白增加板面积和干扰风险。2.3 第三步打开在线 DRC让 AD 实时告诉你差多少规则设置完去 Design - Board Options 或者直接用快捷键 DR 检查一下 Online DRC 是否开启。AD 默认一般会开但有时候因为卡顿或者误操作被关了。在线 DRC 开启后当你走线时如果长度超出规则范围线上就会出现类似波浪线的标记这就是在告诉你“这段长度超了”。很多新手看到这个标记一脸懵以为是自己走线有问题实际上就是长度/匹配规则没满足。这一步要特别注意一个坑只设置 Length 规则、没设置 Matched Length 规则等长误差是不会被检查的。AD 把“单根长度约束”和“组内等长匹配”分成两个独立规则经常有人只配了前者导致一组线每根都满足绝对长度要求但彼此之间差了 300milDRC 却一声不吭。所以做等长组的设计Matched Length 规则必设。3. 核心操作AD 里等长线到底怎么调规则配好之后就到了实操环节。AD 调等长线的核心工具是 Interactive Length Tuning交互式长度调整也就是大家常说的“绕蛇形线”。这个工具用好了效率极高用不好就是一个个拐角来回拖脱发警告。3.1 从哪里启动等长线调整有几种启动方式菜单Routing - Interactive Length Tuning快捷键T R这是我最推荐的方式左手键盘右手鼠标效率拉满英文输入法状态下先按 U T R不对交互式等长是 TR别和交互式布线的 TR 搞混布线是快捷键 PT 或者 CtrlW 这种。不确定的时候用菜单栏最稳妥。进入等长调整模式后鼠标点击一根需要调整的网络走线AD 会自动生成一个蛇形绕线对象同时弹出一个小窗口显示当前长度值和目标长度值。切记是“点击已经布好的铜线”不是点焊盘也不是点网络名。如果点击没反应检查一下是不是当前层没有这根线或者线被锁定了。3.2 蛇形线的参数面板Tab 键是关键进入等长调整模式后按一下键盘的 Tab 键会弹出“Length Tuning”属性面板里面有几个核心参数我逐个说Target Length目标长度如果你在规则里设置了 Matched Length 或 Length这里一般会显示规则目标值也可以手动指定一个绝对目标值。实际项目中我更常用“当前最长线”作为基准具体原因后面讲。Amplitude振幅蛇形绕线的幅度通俗点就是绕出去的高度。振幅越大单位长度内增加的长度越多。Gap / Spacing间距蛇形相邻边之间的间距。这个参数非常关键间距太小会导致相邻线段之间的串扰和阻抗不连续。Style样式可以是圆弧形、45° 角形、直角形。等长绕线最常见的是圆弧形和 45° 角形直角在高速场合尽量别用。面板里调整振幅和间距时可以直接输入数值也可以在图上通过鼠标拖拽控制点来改变。另外在调线的过程中按键盘上的“”号和“.”号可以实时减小/增大振幅按 M 键可以快速切换弯曲样式。这些快捷键比较隐蔽我也是看了同事操作才学会的学会了之后效率提升不是一点半点。3.3 从长线绕到短线目标长度往往取组内最大值在调一组等长时通常做法是把所有线先按最短路径布完然后找出组内最长的一根作为基准再让其他线从短绕到接近最长线的长度误差控制在规则范围内。这个流程下Matched Length 规则里的“目标”其实是可以动态变化的AD 会在当前网络类的所有走线中以最长的那根为基准计算其他线绕到最多相差 Tolerance 的范围内。有人会问为什么不把每根线都定成一个绝对长度因为绝对长度值不好估算你要综合考虑扇出、过孔、BGA 出线、结构边框这些都会影响实际走线长度。以组内最长线为基准是最省板面积、最贴近真实布线的方案。判断标准很简单绕线最少的那根就是基准。绕线最多、绕不进去的那根直接告诉你布局阶段这根线就走得太短了需要回头调整布局或器件位置。3.4 绕线手法经验先粗后精、边绕边看计数器实际操作时我的套路是这样的先以最短路径把所有线走通过孔尽量一致这样基础长度差异不会太大。按 DRC 检查或者直接在 PCB 面板里按网络长度排序找出组内最长的一根。从最短的那根开始绕之前先大幅增加振幅快速逼近目标眼看到距离目标还剩 30~50mil 的时候再降低振幅、精细微调。绕的时候眼睛盯着 HUD 显示的“当前长度/目标长度”差值这个数值是动态更新的非常准。绕完之后按 Esc 退出然后按 DR 跑一遍 DRC看有没有报错。整个过程最忌讳的就是一步到位就想绕到非常精确。蛇形线绕到后面哪怕你拖 1mil都可能因为弯角处的额外长度导致反向超差所以要留一点余量别顶着误差边界去调。4. 蛇形绕线的参数细节与经验取值等长线调得快不快是一回事调得好不好、能不能过高速测试是另一回事。我见过不少板子等长 DR 全绿结果上示波器一看眼图惨不忍睹问题就出在蛇形绕线本身的参数上。下面这些取值原则和计算方法是我反复吃过亏之后总结出来的。4.1 振幅与间距别把蛇形线绕成梳子蛇形线的振幅Amplitude和间距Gap直接决定了这段绕线的寄生电容和串扰大小。基本原则间距越大越好。具体取值上行业里比较常见的做法是 Gap 至少大于等于 3 倍线宽3W。比如 5mil 的走线蛇形间距至少要留 15mil如果能放到 4 倍线宽甚至 10mil 以上信号质量会更好代价是占板面积更大。振幅也不是越大越好。振幅太大相邻的蛇形段之间如果没有完整的参考平面回流路径会变差而且高频分量的辐射会增加。经验上一段蛇形绕线的振幅在 8~20mil 之间比较常见具体看板层厚度和布线空间。对于 50Ω 单端线、5mil 线宽的情况我一般取振幅 10~15mil间距 20mil 起步。如果空间紧张至少保证间距不小于 3W这是底线再小就要考虑换层或者重新布局了。有人问蛇形线和旁边信号线的间距要不要留大一点要的蛇形线本身是人为制造了平行线段和邻近走线如果靠得太近会引入额外的串扰。建议蛇形绕线段与相邻信号线间距至少 3W 以上理想是 5W。4.2 用 45° 角还是圆弧看速率和制造精度AD 里蛇形线样式有几种圆弧Arc、45° 切角45 Degree、直角90 Degree。我基本不用直角原因很简单直角拐弯处阻抗突变严重反射大高速下容易出问题。45° 角是折中方案制造容易信号质量比直角好很多但相比圆弧仍然存在一处轻微的不连续。圆弧实际上 AD 里也是多段折线逼近的阻抗连续性最好适合速率很高的信号比如 PCIe、10G 以太网这类。但也有缺点圆弧线占的面积往往比 45° 角略大而且有些 PCB 工厂对圆弧的解析和输出能力不如直线好可能会在制造时出现边缘毛刺。常规 1~2Gbps 以下我一般用 45° 角速率更高用圆弧。关于最小弯曲半径如果选圆弧样式内角弯曲半径不要小于线宽最好取 2 倍线宽以上否则加工时容易出现铜箔裂纹。4.3 大约要绕多长拍脑袋估算蛇形长度调等长的时候你总得知道自己要绕多少个“凸包”才能补上目标差值。这里有个简单的估算方法每绕一个完整的“凸”字形出去再回来大概增加的长度约等于 2 倍的振幅再加上一些弯角附加长度。举个例子当前线比目标长度短 300mil振幅取 15mil那么粗略算一下需要绕的波纹数量就是 300 ÷ (2×15) 10 个波纹。当然这只是估算AD 界面里会实时显示当前长度不用真的手算但这个估算能帮你对大方向有数不至于绕到一半发现空间根本不够。还有一个替换思路如果结构允许把走线整体拉弯、延长路径也能增加长度。这种“路径延长法”比蛇形绕线对信号质量的影响小得多。在 BGA 出线区域我经常先用路径延长法调整大范围长度再用蛇形线做精细补偿效果比单纯猛绕蛇形好很多。4.4 大面积铺铜和挖空对等长绕线的影响这里要提一个很常见的场景蛇形线区域内如果有大面积铺铜或者你为了阻抗、散热做了挖空比如 PA 区域、天线净空区一定要确认蛇形绕线的间距规则没有被铺铜破坏。AD 里走线和铺铜之间是有安全间距规则的但如果绕线太靠近挖空区域边缘或者铺铜被你手动修改成多边形后避让异常会导致实际铜皮和蛇形线的间距小于 3W串扰问题随之而来。我自己碰到过一次DDR 数据线的蛇形绕线旁边正好是定位螺丝孔区域铺铜开窗后等长区域的地回流路径断了结果跑 memtest 稳定报错后来在开窗区域加了缝合地孔才解决。所以调完等长别忘了用 ShiftS 单层显示看一眼蛇形区域的正反面铺铜和挖空情况确保绕线周围的空间是干净的。5. 等长调完还有问题常见报错与排查实录等长线调完并不是终点DRC 过了板子打回来也许还有问题。这一节我把实操中最常遇到的几类问题整理一下每条都是真实踩坑记录不是抄书。5.1 线上一直有波浪标记DRC 报 Matched Length 错误这种问题大概率不是线没绕够而是规则没有真正生效。排查顺序进入 PCB Rules 面板确认 Matched Length 规则里的 Scope 是不是正确选中了目标网络类优先级是否够高。确认在线 DRC 是开启状态。在 PCB 编辑界面右下角找“PCB”面板切到 Rules 页面看这个规则的状态是不是“Online DRC 已启用”。很多模板导入的项目在线 DRC 是关闭的规则只是摆设。看规则里的 Tolerance 是否填了 0 或者异常值填 0 意味着必须完全相等几乎不可能满足。检查是不是有信号被单独加了 Length 规则优先级与 Matched Length 冲突导致较严格的规则被另一条覆盖。这种问题在规则多的时候非常坑建议在 Rules 面板的“优先级”按钮里把等长相关规则排到前面。5.2 目标长度显示与规则不一致有时候 HUD 上显示的目标长度和你预期不一样可能是这里没搞清。在 Interactive Length Tuning 的属性面板里Target Length 有几种模式From Rules从规则取值、Manual手动给定。如果选了 From Rules而规则里根本没设置 Length 约束AD 就会自动取“当前网络类的最大长度”作为目标值。这个行为是合理的尤其适合“以最长线为基准”的方案。但如果你本意是想让所有线绕到某一个特定长度必须手动指定 Manual 值否则 AD 会按规则自动跑偏。顺便提一个进阶技巧在实际项目里如果 DDR 控制器厂商给了参考设计里面会写明地址线相对时钟信号的等长目标长度比如时钟长 2500mil地址线要绕到 2500±50mil这种情况下直接在 Target Length 里填绝对长度配合规则里的 Tolerance是最稳妥的做法别让 AD 自己去抓最长线因为最长线不一定就是时序参考目标。5.3 蛇形线绕完了旁边的线反而报错这属于典型的“次生灾害”。当你手动把一根线拉得很长很绕后旁边本来满足等长的线可能因为间距冲突、铜皮避让把网络长度挤得更长了。最典型的是 BGA 出线区域线间距本来就紧张你在中间插了一大段蛇形等于给旁边的走线判了“长度超标”死刑。遇到这种情况不要硬调先看布局层面能不能把出线方向调整一下把等长绕线分散到扇出之后的空间。如果绕线区域确实紧张可以考虑把过孔打得更靠近焊盘缩短出线段给蛇形段腾出位置。5.4 差分对内等长怎么处理差分信号除了要控制对间等长更关键的是对内等长P 和 N 的长度差。在 AD 里差分对布线完成之后可以直接用 TR 点击差分对任意一条线AD 会进入差分对内等长调整模式此时 Tab 面板里可以设置“差值目标”也就是 P 和 N 的长度差目标通常设成 0 或者 5mil 以内。操作方法和单端等长类似但要特别注意一点差分对蛇形绕线时要在 P、N 两根线上同时绕或者只绕较短的那根不能只绕一根时把另一根也拖动了不然容易造成阻抗不连续。我的习惯是差分对内部先做到误差 5mil 以内严格的项目做到 2mil 以内然后再在差分对之间、对组之间做二次等长。这里说一句AD 里差分对做等长时绕线区域的层如果跨越了参考平面切换比如从表层走到内层过孔处的长度差也要计入不要只看平面走线长度否则上板之后还是会出问题。5.5 从 PADS/Allegro 转过来的文件等长规则全没了这个场景很多见客户发来一个 PADS 或者 Allegro 的 PCB 文件你用 AD 打开之后线是能看到的但这边的等长规则、Net Class、差分对信息基本全丢了只剩下铺铜和走线。这种情况下你大概率没法直接用 TR 做交互式等长因为 AD 不知道哪个网络属于哪个类、目标长度是多少。我的处理办法是先通过“Tools - Convert - Convert PADS/ Allegro 到 AD”这类流程重新映射差分对和网络类然后手动补建 Net Class 与 Matched Length 规则。这个过程没法自动化所以如果条件允许最好找原设计作者要一份规则导出文件或者让他把规则以文本形式发过来再手工录入。硬转文件做等长只能作为“救援方案”别当成常规流程。5.6 等长绕线后 DRC 过了但生产时被工厂提“DRC 错误”最后这类问题和设计本身无关和制造工艺有关。蛇形线绕太密、间距太小或者振幅过大导致残铜率差异太大PCB 工厂在制造时可能会因为蚀刻不均报问题。经验是等长区域尽量别放在极窄的板边或密集过孔区域如果板子要过拼板等长区域附近留够工艺边避免应力开裂和铜箔变形。我在交付生产文件前会专门用 AD 的“Fabrication Outputs”输出一次 Gerber再用 CAM 工具加载一遍确认蛇形绕线区域没有锐角、没有间距违规、没有 am 文件解析异常。这一步能挡掉很多低级问题别嫌麻烦。一些实在话与个人习惯等长线这活儿说难不难说简单也不简单。它不像原理图设计那样需要很强的逻辑思维也不需要像 SI 仿真那样啃一大堆电磁场理论但它特别考验一个人的规则意识和全局观。规则建好了工具熟练了剩下的就是耐心细调。最后再分享一个我个人的小习惯调等长之前我习惯先打开 PCB 面板切到 Nets 模式把所有要等长的网络按长度排个序截个图看一眼长度分布。这样我心里会有个底知道这组线最长和最短差多少、哪根线是板上的“硬骨头”然后再动手绕。绕的过程中每隔一段时间就用快捷键 ShiftS 切换单层显示检查蛇形区域有没有和其他元素打架。这些小动作看起来慢实际上能省掉后面大量返工时间。等长线这种东西前期多花十分钟规划后期能省一晚上的调试时间这笔账怎么算都划算。
返回列表