☰
BGA焊盘选NSMD还是SMD?从原理到实战一次讲清
2026/10/6 10:38:11 网站建设 项目流程

这段时间帮一个朋友排查板子焊接不良的问题,现象挺典型:0.4mm pitch 的 BGA 过炉后总有几颗球连锡,上了返修台重新植球再贴,结果更惨,返修取片时焊盘直接从 PCB 上被带走了好几颗。查来查去,问题不在回流焊曲线,也不在锡膏量,而在于最基础的一件事——他给 BGA 焊盘选错了定义方式,在根本没有条件用 NSMD 的地方硬用了 NSMD。

这个事不稀奇。很多工程师画 BGA 时,对 NSMD(Non-Solder Mask Defined,非阻焊定义焊盘)和 SMD(Solder Mask Defined,阻焊定义焊盘)的理解停留在“一个是绿油开口大一点,一个是绿油开口小一点”,至于大多少、小多少、什么时候该用哪个,全靠感觉。但 BGA 引脚藏在封装肚子底下,出问题后探针够不着、放大镜看不全、万用表也量不到,等你发现不良的时候,往往已经烧了一整炉。

这篇我不会讲虚的,只把 BGA 焊盘用 NSMD 还是 SMD 这件事拆开,从制造原理、数值计算、Altium Designer 里的实际操作,到我踩过的几个真实坑,一次讲清楚。不管你是刚开始画 BGA 的新手,还是被焊接不良折磨过几次的硬件老手,这篇文章应该能帮你把“凭感觉选”变成“按数据选”。

1. 先弄明白一件事:谁在决定BGA焊盘的最终尺寸

1.1 阻焊层不是装饰,它是焊盘尺寸的“裁判”

很多人对 PCB 阻焊层(Solder Mask,俗称绿油)的理解是“防氧化、防短路、好看”,这话没错,但在 BGA 焊盘设计里,阻焊层的作用远不止这些。阻焊层开口的尺寸,直接决定了焊接时锡膏和焊球实际能接触到多大面积的铜箔。

这里要区分两个概念:

  • 铜箔焊盘尺寸:你在 Altium Designer 的 Pad 属性里填的那个直径,是 PCB 上实际蚀刻出来的铜箔图形尺寸。
  • 阻焊开窗尺寸:绿油层上开的洞,让焊盘裸露出来供焊接的那部分区域。

而 NSMD 和 SMD 这两种焊盘定义方式的根本区别,就是谁说了算:到底是由铜箔尺寸决定有效焊盘,还是由阻焊开窗尺寸决定有效焊盘。

NSMD 焊盘,阻焊开窗比铜箔焊盘大一圈,焊盘四周的铜箔完全裸露出来。这时候真正起焊接作用的焊盘尺寸,就是铜箔本身的尺寸,阻焊层只是个“旁观者”,它的对位偏差不会影响焊盘有效面积。

SMD 焊盘则相反,阻焊开窗比铜箔焊盘小一圈,绿油像包边一样压住铜箔外圈。这时候真正露出来供焊接的尺寸,是阻焊开窗的尺寸,铜箔本身做多大反而不太重要,阻焊开窗才起决定作用。

1.2 从剖面上看懂两种焊盘的差异

如果拿个刀切下去看剖面,差异非常直观:

NSMD 焊盘的剖面里,铜箔焊盘是完整暴露的,焊料能包裹住焊盘的顶面和四周侧面。焊盘和 PCB 基材之间,除了底部粘接,侧面也有焊料包裹,机械锁定效果更强。如果用一个画面类比,NSMD 焊盘像一棵种在土里、根部完全露出来的树,焊料可以直接抱住树根。

SMD 焊盘的剖面里,铜箔焊盘外圈被阻焊层压住一道边,焊料只能接触到中心暴露的部分。这个结构像给树根围了一圈花坛边,焊料碰不到被围住的那部分根,机械锁定能力会弱一点,但花坛边能防止水土流失——也就是说它给焊盘边缘提供了物理保护,铜箔不容易在热应力下被“撕”起来。

这些差异在普通 QFP 封装上可能感觉不明显,但放到 BGA 上,会被放大不少。

1.3 BGA为什么比QFP更在意这个细节

QFP 这类引脚在外围的封装,引脚出问题还能用万用表点到、用烙铁补一下、用飞线救一救。BGA 就没有这个条件,引脚全是焊球,坐在封装底下的阵列里,一旦虚焊、连锡、焊盘脱落,常规手段根本没法单独补焊,只能整片拆下来。拆 BGA 要用返修台,加热、取片、植球、重新贴装,一系列操作下来,对焊盘的热冲击和机械拉扯都远高于普通焊接。

更关键的是,BGA 的 pitch 越来越小。0.8mm 的 BGA 焊盘直径能做到 0.35mm,焊盘之间还有 0.45mm 的间隙,怎么设计都很宽裕。到了 0.4mm pitch 的 BGA,焊盘直径往往只有 0.2mm 左右,两个焊盘边缘之间可能只剩 0.2mm 甚至更少,这时候阻焊层哪怕偏了 25μm,都会直接影响焊接面积。所以 BGA 焊盘设计里,“谁决定尺寸”这件事从来不是可以“凭感觉”的选项,而是需要计算的工程决策。

2. 用手算代替瞎猜:决定NSMD还是SMD的六个数字

2.1 焊盘直径和Pitch:先看这两个基础参数

拿到一个 BGA 封装,第一件事不是打开 Altium Designer 画封装,而是把这两个数字写在纸上:Pitch和焊盘直径。

Pitch 好理解,就是相邻焊球中心之间的距离。焊盘直径则要看芯片厂商的封装推荐,同一颗芯片,推荐焊盘可能有 0.25mm、0.3mm 等多个档位,取决于你的布线密度和可靠性要求。焊盘选大了,布线通道变窄,NSMD 需要的空间也更大;焊盘选小了,焊接面积不够,焊点强度下降。

实际上我见过不少翻车案例,就是画封装时图省事,直接默认放了一个 0.3mm 甚至 0.32mm 的焊盘,结果后面算阻焊桥的时候,怎么算都不够。

2.2 阻焊桥宽度:NSMD能不能做,就看它

这是整个决策里最核心的一个数。**阻焊桥(Solder Mask Web)**就是两个相邻焊盘的阻焊开窗之间,那条用来隔开它们的绿油带子。如果这条带子太窄或者根本不存在,阻焊开窗就会连成一片,焊接时锡膏和焊球很容易顺着连通的区域流到一起,形成桥连。

NSMD 焊盘下,阻焊桥宽度的计算公式是这样的:

阻焊桥宽度 = Pitch - 阻焊开窗尺寸 阻焊开窗尺寸 = 焊盘直径 + 2 × 阻焊扩展量(Solder Mask Expansion)

举个实际例子。假设 0.65mm pitch 的 BGA,焊盘直径 0.3mm,Altium Designer 里默认的 Solder Mask Expansion 经常是 0.1mm,那么:

阻焊开窗 = 0.3 + 2 × 0.1 = 0.5mm 阻焊桥宽度 = 0.65 - 0.5 = 0.15mm = 150μm

150μm 的阻焊桥对大多数板厂来说是可以稳定做的,常规能力下限通常要求 75μm 到 100μm,所以这个设计是成立的。

换到 0.5mm pitch 的 BGA,如果还是焊盘 0.3mm、扩展 0.1mm:

阻焊开窗 = 0.3 + 2 × 0.1 = 0.5mm 阻焊桥宽度 = 0.5 - 0.5 = 0mm

算出来是零,也就是说相邻焊盘之间的阻焊开窗已经完全连上了,阻焊桥连影子都没有。这种状态下如果还硬要用 NSMD,板厂要么会把开窗做成一大片,要么会私自缩小开窗、部分覆盖焊盘边缘,结果就是焊接时连锡风险极高,或者有效焊盘面积变得不可控。

所以遇到这种情况,你有两条路:一是缩小焊盘直径或减小阻焊扩展量,让阻焊桥重新出现;二是直接切到 SMD,让阻焊层主动压住焊盘边缘,用减小焊料接触面积来换开窗独立性。

2.3 阻焊对位精度:和板厂确认的第一件事

很多人在电脑前算完阻焊桥宽度,觉得没问题就把板子发出去了,却忽略了一个重要参数:板厂的阻焊层对位精度。

阻焊层曝光和铜箔线路曝光是两套流程,两套底片之间不可能完全重合。常规工艺的阻焊对位误差在 ±50μm 到 ±75μm,好一点的能做到 ±25μm 到 ±30μm。这个误差对 NSMD 焊盘的影响是:焊盘边缘部分被绿油盖上或露得比设计值多一点。由于 NSMD 的有效焊盘面积本来就不由阻焊层决定,这点偏差通常可以忍受。

但对 SMD 焊盘来说,阻焊对位误差直接改变了露出来的有效焊盘尺寸,左右偏一点,开窗的等效位置就变了,焊点的一致性会受影响。所以在对位精度控制不好的板厂做 SMD 焊盘,风险比 NSMD 更大,这就是为什么很多半导体原厂的封装指南里,在工艺允许时更推荐 NSMD 的原因之一。

投板前我在 EQ 里一定问板厂三件事:阻焊桥最小能做到多少、阻焊对位精度是多少、能不能做 0.4mm pitch 的 SMD 开窗。这三个答案拿回来,你的设计才算有依据。

2.4 一张表看懂常见Pitch该选谁

把这些因素综合起来,我按照自己的经验整理了一个决策表,可以作为一个起点。注意是起点,不是结论,具体还要结合板厂能力和产品可靠性要求:

BGA Pitch常见焊盘直径倾向类型原因
≥0.8mm0.35mmNSMD空间充足,阻焊桥轻松做到200μm以上,焊点强度优先
0.65mm0.3mmNSMD阻焊桥可做到150μm左右,综合性能好
0.5mm0.25mm视情况NSMD或SMD灰色地带,算完后阻焊桥≥100μm可NSMD,否则SMD
0.4mm0.2mmSMDNSMD很难形成可靠阻焊桥
≤0.35mm0.18mm或更小SMD或IC载板工艺普通PCB工艺非常吃力,需特殊设计

这个表格不是用来背的,它背后的事实是:pitch 越小,留给阻焊桥的空间越少,从 NSMD 走向 SMD 的压力越大。

3. Altium Designer里分别设置NSMD和SMD焊盘

3.1 正数还是负数:Solder Mask Expansion的两种填法

在 Altium Designer 里,焊盘默认的阻焊开窗规则通常是一个正扩展值,意思就是让绿油开口比焊盘大一圈,所以默认情况下你画出来的所有焊盘本质上都是 NSMD。

单个焊盘的设置入口很简单,双击焊盘打开属性面板,找到"Solder Mask Expansion"这一项。这里有两种模式:

  • Expansion value from rules:从设计规则里取值,通常是默认的 0.1mm 或 0.127mm。这是推荐模式,方便后续统一管理和调整。
  • Specify expansion value manually:手动指定一个数值。如果你只需要个别焊盘特殊处理,可以用这个模式。

真正关键的是这个数值的符号:

  • 正数(如 0.1mm):阻焊开窗向外扩大,最终开窗尺寸大于焊盘,这是 NSMD。
  • 负数(如 -0.05mm):阻焊开窗向内收缩,最终开窗尺寸小于焊盘,这是 SMD。

很多人不知道 Altium Designer 里填负数就能实现 SMD 焊盘,结果绕了一大圈去手动改阻焊层图形。其实直接在焊盘属性里填一个负的扩展值就行。

假设你设计一个 0.4mm pitch 的 BGA,铜箔焊盘直径 0.25mm,想要 SMD 有效开窗 0.2mm,那单边覆盖就是 (0.25 - 0.2)/2 = 0.025mm。在"Solder Mask Expansion"里填 -0.025mm 就有这个效果。不过说实话,25μm 的对位余量非常紧张,一般我会把铜箔焊盘加到 0.3mm,开窗还是 0.2mm,这时候单边覆盖 0.05mm,才算有实际可生产性。

3.2 只给BGA单独设立规则,别动全板默认值

我知道很多人图省事,直接在 Design → Rules → Manufacturing → Solder Mask Expansion 里把全板默认值改了。这在板子上只有一种焊盘类型时没问题,但如果你同时有 0.65mm 的 BGA、0.5mm 的 BGA、还有一堆普通电阻电容,一个全局值很难兼顾所有需求。

我习惯的做法是给 BGA 焊盘建一个单独的 Pad Class,然后单独设置规则。

步骤大概是这样的:

  1. 在 PCB 编辑器里,用 Find Similar Objects 选中 BGA 的所有焊盘。框选 BGA 区域后,右键选择"Find Similar Objects",把 Object Type 设成 Pad,再根据网络名或者封装名筛选出属于 BGA 的那部分焊盘。
  2. 在属性面板里给这些焊盘指定一个 Pad Class。类名称我用得比较多的是"BGA_NSMD_065"或者"BGA_SMD_040"这种带参数的命名,看一眼就知道规则是什么。
  3. 打开 Design → Rules → Manufacturing → Solder Mask Expansion,新建一条规则,Query 写法可以参考:
InPadClass('BGA_NSMD_065')

或者:

IsPad

但IsPad的范围太大,一般我会用类匹配,精确命中。

  1. 在这条规则里设置对应的 Expansion 值。0.65mm 的 BGA 如果走 NSMD,填 0.1mm;0.4mm 的 BGA 如果走 SMD,填 -0.025mm 或 -0.05mm。
  2. 把规则的优先级调好,确保 BGA 区域的规则优先级高于全板默认规则。

这里有一个比较容易踩的坑:Altium Designer 的规则是有优先级的,默认规则优先级通常最低,但如果你之前建过别的规则,比如按网络类或者按元件类设置的 Solder Mask Expansion 规则,它的优先级可能会压过你新建的 BGA Pad Class 规则。设置完后,最好在 Rules 页面点一下"Priorities"按钮,把优先级顺序确认一遍。

3.3 按L打开阻焊层,肉眼检查开窗是否合理

在 Altium Designer 里设置完数值,只是完成了一半工作。我强烈建议在投板前,至少花五分钟做一次可视化检查。

按键盘上的 L 键打开 View Configuration 面板,在 Layer 列表里把 Top Solder 和 Bottom Solder 这两个阻焊层打勾显示出来。如果图层配色不合适,可以在图层的颜色设置里把阻焊层改成一种半透明的亮色,这样能很直观地看到每个焊盘的阻焊开窗形状。

检查什么?首先要看 BGA 区域里,每个焊盘的阻焊开窗是不是独立的。如果看到两个相邻焊盘的开窗连成了一个长条形的开口,这就是前面说的阻焊桥断裂,说明当前的 NSMD 参数在这个 pitch 下不成立,要么改小焊盘、改小扩展量,要么切 SMD。

另外可以按 3 键进入 3D 预览模式,旋转视角从侧面观察 BGA 区域的焊盘和阻焊层的相对关系。NSMD 能看到焊盘边缘一圈铜色裸露;SMD 能看到绿油包住焊盘外圈,只露出中间的焊盘区域。这个视觉印象比看数字直观得多。

3.4 出Gerber前的最后三查

很多焊接不良问题不是设计阶段产生的,而是制造输出阶段产生的。比如阻焊层没有正确导出、开窗极性反了、或者你用了负片输出但板厂理解的是正片,这些都会导致 PCB 回来之后开窗和设计意图完全不符。

投板前我一般固定做三件事:

第一,用 OutJob 统一管理制造输出。在 Altium Designer 里建一个 Output Job 文件,把 Gerber、钻孔文件、装配图、BOM 都放进去,一键生成。这样能避免每次手动导出时漏掉某一层。热词里有人搜“altium designer 使用outjob文件快速输出文档”,说的就是这个功能,它确实能减少漏导出导致的低级事故。

第二,Gerber 导出时确认阻焊层的选项。在 Gerber Setup 里要明确看到 Top Solder 和 Bottom Solder 被勾选,并且输出格式是正片(Most positive)还是负片(Negative)要和板厂确认。大多数情况下阻焊层导出为正片,但不同板厂的习惯不一样,提前在 EQ 里确认一下不丢人。

第三,有条件的话把 Gerber 文件拿到第三方 CAM 工具里看一遍。Altium Designer 自带的 CAM 编辑器可以打开自己输出的 Gerber,检查阻焊层和铜箔层的对位情况。重点看 BGA 区域的开窗是不是每个焊盘都正确露出、有没有不该露的地方被开窗了、开窗边缘有没有和相邻走线靠得太近。

4. 实战复盘:0.5mm和0.65mm pitch BGA的两种命运

4.1 0.65mm Pitch BGA,NSMD的舒适区

我最近做的一块核心板,上面有一颗 0.65mm pitch 的 FPGA,封装里推荐的焊盘直径是 0.3mm。按照前面提到的计算方法:

阻焊开窗 = 0.3 + 2 × 0.1 = 0.5mm 阻焊桥宽度 = 0.65 - 0.5 = 0.15mm = 150μm

150μm 的阻焊桥,对绝大多数板厂来说都是可以稳定生产的。我直接选了 NSMD,Solder Mask Expansion 用 0.1mm,没有额外做特殊规则。

这块板子投出去,回板后焊接良率很稳定,BGA 部分基本没有因为焊盘设计问题返修过。返修台上如果有空焊需要拆片,NSMD 焊盘因为焊料能包裹焊盘侧面,机械固定强度更足,拆焊时焊盘不容易被带着走。这是我用下来最喜欢 NSMD 的地方。

4.2 0.5mm Pitch BGA,NSMD翻车实录

同一时期,我在另一块板子上用了 0.5mm pitch 的 DDR 颗粒。当时没多想,套用了 0.65mm 的经验,焊盘直径设为 0.3mm,扩展量继续用 0.1mm。结果一算阻焊桥宽度,直接是零:

阻焊开窗 = 0.3 + 2 × 0.1 = 0.5mm 阻焊桥宽度 = 0.5 - 0.5 = 0mm

当时没太在意,想着板厂有经验会自己处理。板子回来,BGA 底部确实没有出现整排桥连,但用 X-Ray 检查发现有零星几颗球连到了一起,而且位置不固定,今天这炉这几颗,明天那炉那几颗。后来和板厂沟通,他们反馈:因为阻焊桥宽度几乎为零,他们的工艺只能把阻焊开窗整体缩小一点,结果焊盘边缘被部分覆盖,有效焊盘面积不一致,有些焊球的接触面积偏小,加上锡膏印刷本身的厚度波动,就出现了随机连锡和虚焊并存的情况。

这个案例给了一个教训:NSMD 能不能用,不是看板厂会不会“帮我处理”,而是看你自己算出来的阻焊桥宽度是否满足最低工艺能力。

后面我把 0.5mm 那颗 DDR 的设计改成了这样,才稳定下来:

  • 铜箔焊盘直径从 0.3mm 改成 0.25mm
  • Solder Mask Expansion 从 0.1mm 改成 0.075mm
  • 重新计算:
阻焊开窗 = 0.25 + 2 × 0.075 = 0.4mm 阻焊桥宽度 = 0.5 - 0.4 = 0.1mm = 100μm

100μm 的阻焊桥,板厂可以做,良率也稳定了。当然,代价是焊盘面积变小了,布线空间也要重新规划。如果布线实在走不通,下一招就是切到 SMD。

4.3 0.4mm及以下,SMD是理智之选

0.4mm pitch 的 BGA,比如一些较新的 SoC 或者大容量存储芯片,焊盘直径通常只有 0.2mm 左右。这时候你就算用 0.05mm 的扩展量:

阻焊开窗 = 0.2 + 2 × 0.05 = 0.3mm 阻焊桥宽度 = 0.4 - 0.3 = 0.1mm = 100μm

看起来好像还能做 NSMD?问题是 0.2mm 的焊盘本来就很小,实际蚀刻出来可能只有 0.18mm,再加上阻焊对位偏差 ±50μm,NSMD 焊盘边缘被覆盖或者多露出来的比例,相对焊盘整体尺寸来说已经很大,焊接面积的一致性非常难保证。

这时候用 SMD 反而更可控。典型参数可以是:铜箔焊盘直径 0.25mm 到 0.3mm,阻焊开窗 0.2mm,也就是 Solder Mask Expansion 填 -0.025mm 到 -0.05mm。这样阻焊开窗由你精确控制,板厂只需要保证开窗位置不偏移太多,焊球落在开窗范围内就能形成可靠的焊点。

当然,SMD 焊盘的焊点机械强度不如 NSMD,在需要频繁返修或者冲击振动比较强的产品里,要留好余量。返修台上的表现也要特别注意,我已经见过不止一次 SMD 焊盘在多次返修后,阻焊层边缘破损、铜箔翘起的案例,这个放到后面踩坑部分细说。

5. 踩过坑才懂的经验:从设计到返修台的自查清单

5.1 返修台上的教训:焊盘跟着焊球一起走

文章开头提到的那个朋友,他的板子后来被拉去返修台上处理,结果拆 BGA 的时候,有几颗焊盘跟着焊球一起被带了起来,板子直接报废。这里面既有 NSMD 选错的因素,也有返修操作的因素,但根源还是在设计阶段。

0.4mm pitch 的 BGA,他用了 NSMD,而且焊盘选得偏大,阻焊桥根本无法形成。这种焊盘在正常回流焊时,因为开窗连成片,焊球边缘的锡会往相邻焊盘浸润,导致桥连。返修时加热不均匀,焊盘和基材之间的粘接力本来就有限,一旦取片角度不对、温度没拉到位,焊盘就会从板面上剥落。

返修台上还有一种常见情况:SMD 焊盘返修几次后,阻焊层边缘开始破损,尤其是拆片时焊盘受拉力,绿油包边一旦崩开,铜箔就容易从边缘起翘。所以如果说 NSMD 的风险是“桥连”,那 SMD 在返修场景下的风险就是“阻焊层破损+焊盘边缘起翘”。二者都需要靠设计和工艺去控制,不是选完就一劳永逸。

5.2 投板前确认信息完备再说

综合我自己的项目经验,现在每画完一块带 BGA 的板子,投板前都必须过一遍下面这几条,缺一条我都不太安心:

  • 焊盘直径和 pitch 对得上:按照芯片厂商推荐或者 IPC 标准取值,不要随手放一个“看起来差不多”的焊盘。
  • 阻焊桥宽度算过:NSMD 焊盘必须保证相邻开窗之间有足够的阻焊桥,常规要求 100μm 以上,极限也别低于 75μm。
  • Solder Mask Expansion 符号正确:NSMD 用正值,SMD 用负值,别在 Altium Designer 里填反了。
  • 阻焊层可视化检查过:按 L 打开 Solder 层,确认 BGA 内部开窗没有连成片。
  • Gerber 里的阻焊层确认存在:用 OutJob 输出后检查顶层和底层阻焊层都在。
  • 板厂能力确认过:阻焊对位精度、阻焊桥最小能力、对 0.4mm pitch SMD 开窗是否有经验,这几件事迟早要问,不如投板前就问清楚。

这套清单看起来啰嗦,但能挡住大多数低级问题。我起码有三次是靠这个清单挡住了“看起来能做实际上不行”的设计,尤其是 0.5mm pitch 灰色地带的那类板子。

5.3 我个人的默认选择路径

最后分享一下我画 BGA 时默认的处理方式,当一个参考:

拿到封装,先看 pitch。如果是 0.65mm 及以上,基本默认走 NSMD,焊盘直径按芯片厂商推荐的上限取,扩展量 0.1mm,然后算一下阻焊桥宽度,这步只是走个形式,因为通常都够。如果是 0.5mm,先把焊盘直径定在 0.2mm 到 0.25mm,扩展量先按 0.075mm 估算,算完阻焊桥宽度如果低于 100μm,直接切 SMD,不纠结。如果是 0.4mm 及以下,默认走 SMD,铜箔焊盘稍微做大一点,用负扩展量把开窗控制到和焊球尺寸匹配的范围内。

这些默认值不是金科玉律,它只是在我合作过的几类板厂工艺能力下,最不容易出错的起点。真正决定最终方案的,还是板厂的实际工艺边界和你对可靠性、返修率、成本的取舍。把这些参数设计进去,把计算逻辑走一遍,再在 Altium Designer 里配上对应的规则和检查,BGA 焊盘这件事,就不会再是“靠感觉选了”。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询