ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

BGA四角焊球缘何先失效?热-振耦合仿真揭示机制与设计对策

BGA四角焊球缘何先失效?热-振耦合仿真揭示机制与设计对策 干硬件的老哥应该都碰到过这个场景板子上BGA封装的芯片用得好好的突然偶发性掉电、复位、跑飞拿去打X-Ray一看四角的焊球边缘发黑、有裂纹有些干脆脱开了。更气人的是这种故障往往在温度循环试验后集中爆发过回流焊、过波峰焊、过振动台之后回来的板子十有八九是四角先出问题。这个问题我先后在消费电子、工控板卡上都遇到过也和不少同行对过线结论比较一致这不是某一个批次焊料不好而是结构设计、热膨胀、振动疲劳三者叠加导致的必然结果。要彻底把这件事讲透靠猜没用靠经验也只能治标。我后来用热-振耦合仿真把整块板、整颗封装、全部焊球都拉出来跑了一遍才算真正看明白“为什么四角先死”。这篇就把这个仿真的思路、建模细节、参数坑、和落地到返修工艺的结论一次说清楚。1. 先从现象说起BGA四角先坏的“物理直觉”1.1 温度循环下的“杠杆原理”离中性点越远死得越快BGA焊点失效的经典凶手第一是热失配。芯片封装本体一般是BT基板或陶瓷基板和PCB板卡的热膨胀系数CTE不一样。硅芯片的CTE通常在2.5-3 ppm/°C左右FR-4板材在X-Y方向大概是14-16 ppm/°C两者差了四五倍。温度一变化封装和板卡的伸缩量就不一致这个错动量最终要由焊球来吸收。关键在于错动量的大小不是均匀分布的。BGA可以看成封装通过无数焊球“粘”在PCB上封装中心点附近封装和板卡的相对位移趋近于零越往外走相对位移越大。焊球距离封装中性点的距离决定了它要承受多大的剪切应变。工程上管这个叫DNPDistance to Neutral Point你可以直接把DNP理解成一根杠杆的长度——力臂越长端点摆动越大。整颗封装最外侧的焊球恰好就是四个角上的那几颗它们离中性点最远温度循环下承受的剪切应变最大自然最先疲劳开裂。我在仿真中实测过一组数据同样的无铅焊料SAC305在-40°C到125°C的温度循环条件下四角焊球每周期消耗的蠕变应变能密度差不多是中心位置焊球的4到6倍。这个倍数关系不是线性增长的而是随封装尺寸变大快速恶化。封装边长从15mm加到25mm四角焊球的应变幅值能翻倍。这也是为什么大封装、小PCB、温变范围宽的场景四角先坏几乎是定律。1.2 振动载荷下的“共振翻车现场”角点为什么也不省心很多人在分析BGA失效时只盯着温度循环忽略了振动这是实战里很容易漏掉的一条线。产品装车、上设备板卡会持续受到一定频谱的振动激励。PCB是典型的薄板结构一阶固有频率通常不高尤其是在尺寸大、板厚只有1.0-1.6mm的情况下整板的一阶频率可能就落在几十到几百赫兹范围内。当你把PCB夹持在机箱里螺丝锁在四个角或四边的时候板卡在振动激励下会像鼓面一样变形。BGA封装本身有一定质量相当于给板面局部增加了配重而这个配重下方就是一堆脆弱的焊球。板卡弯曲变形时封装和板卡之间又产生了剪切和弯曲应力。更麻烦的是焊球阵列的存在会局部改变板的刚度在共振频率附近四角焊球受到的应力会出现剧烈放大。仿真里如果只做静态分析永远看不到这个现象只有扫频或随机振动分析才能看到焊球应力在某些频点上的“尖峰”。这里有个反直觉的点整板模态分析时应变最大的位置往往是板中心但焊球应力最大的位置却经常在封装四角。原因是整板弯曲会带动封装角部产生“翘翅效应”——封装刚度较大板卡弯成弧面时封装边缘跟不上板面曲率变化形成局部的剥离应力peeling stress。这种应力状态对焊球非常致命因为焊球本身抗剪能力尚可抗剥离能力却很差。1.3 热-振耦合不是112而是112真正让问题变得复杂的是热和振不是独立工作的。实际产品先经历温度循环焊球内部产生了蠕变损伤和微观裂纹这时候再叠加振动激励裂纹尖端应力集中扩展速度远高于单一载荷。反过来如果先振动再加热循环振动造成的微裂纹也会加速热疲劳的蠕变松弛释放。工程上这叫“载荷耦合加速效应”常见于车载电子、航天电子这些温变和振动都严重的环境中。我在做这个项目的时候采用了“热疲劳损伤振动疲劳损伤”的顺序耦合方式先用热循环仿真算完整周期的蠕变应力应变把每个焊球的累计损伤量D_thermal算出来再用随机振动仿真算每个焊球的振动应力PSD估算单位时间的振动疲劳损伤率dD_vibration/dt。最后把两者按实际工况比例比如每天多少次温度循环、振动累积多少小时线性叠加到同一个损伤累积框架里。从物理机理上看这是可以站住脚的简化。因为它假设热损伤和振动损伤在宏观看是独立贡献、微观上通过损伤累积相互加速。实际试验结果也验证了四角焊球在耦合工况下的失效周期只有单一温度循环工况的40%左右。所以只做纯热疲劳评估你会高估产品寿命只做纯振动评估你会漏掉四角这个最危险的位置。两者必须同时看。2. 仿真方案选型用什么工具、搭什么模型2.1 分析流程从整板到焊球的“子模型”思路BGA焊球仿真最大的拦路虎是几何尺度差。整板和封装是毫米到厘米级别而焊球直径只有0.3-0.5mm间距可能只有0.4mm。如果从整板到焊球全部用实体网格精细化建模计算量大到工作站直接崩掉。我试过第一次贪心把一整块板上的所有BGA焊球全部建成精细网格单次温度循环仿真跑了三天还没收敛最后直接放弃。正确的做法是“整板梁单元/壳单元局部实体细节”的两级建模行业里叫子模型法submodeling。第一级建立整板PCB封装所有焊球的粗略模型焊球用梁单元等效刚度连接算整体变形和模态。第二级截取四角关键焊球区域把这一个小区域连同封装角部、PCB局部建出精细实体模型把第一级模型算出的边界位移结果映射为精细模型的边界条件再在局部模型里跑热循环或振动载荷。子模型法的好处有两个。一是计算量直接降低一个数量级迭代方案可以快速试错二是局部模型的边界条件来自整板真实变形而不是瞎猜固定的约束应力结果有可信度。子模型法的关键点在于截断位置要远离应力集中区至少离焊球阵列两排以上否则边界附近的人为应力会污染目标区域结果。2.2 材料参数选型焊料不能用弹性模量糊弄过去焊球的材料参数是仿真结果准不准的分水岭多数人在这里翻车。很多简化教程里把焊球当纯弹性体处理给一个弹性模量、一个泊松比就算完事。这在常温下做趋势分析可以接受但要算疲劳寿命、要看应力应变滞回环就必须用真实焊料的粘塑性本构模型。无铅焊料SAC305在常温以上就表现出明显的蠕变和应力松弛特性温度越高、保持时间越长这个现象越明显。在-40°C到125°C温度循环里焊球内部每时每刻都在蠕变变形应力会随时间松弛而不是恒定保持。因此在温度循环仿真里我采用Anand粘塑性本构模型来模拟焊球的力学行为它用一组参数同时描述稳态蠕变和率相关塑性流动是目前焊点级可靠性仿真最常用的模型之一。我用的SAC305 Anand模型参数如下单位制使用MPa、秒体系为Sn96.5Ag3.0Cu0.5的常见标称值参数符号含义典型值C1初始屈服强度56.33 MPaC2饱和应力系数80.47 MPaC3应变率敏感指数0.032C4应变硬化系数5.93C5应变硬化指数0.021C6耦合系数11.9C7变形阻抗饱和系数0.000486MPa·s^-1C8饱和应力的温度系数1030 KC9变形阻抗的温度系数940 K注意这组参数来自某国际焊料性能数据库不同批次、不同厂家焊膏会有差异。做仿真前如果条件允许最好对实际使用的焊料做小型拉伸/蠕变测试标定参数精度能提升一个档次。不过大多数研发阶段选型对比用上表参数完全够用。PCB则采用正交各向异性材料参数X-Y方向CTE设为14-16 ppm/°CZ方向CTE设到50-60 ppm/°C。封装基板也要做成正交各向异性硅芯片设成3 ppm/°C。别把PCB简化成各项同性材料板厚方向的Z向膨胀对焊点寿命影响极大焊点开裂经常就是被Z向CTE顶出来的。2.3 耦合方式怎么选顺序耦合还是直接耦合热-振耦合仿真有两种常见实现方式。第一种是直接耦合在一个求解器里同时计算热传导、热应力和振动响应理论上最精确但计算量巨大收敛困难工业场景很少用。第二种是顺序耦合先单独算温度场再把这个温度结果作为预应力和材料属性输入到结构/振动分析里分步完成。我最终采用的是顺序耦合理由有三个工程上PCB和封装内部的热时间常数远大于振动周期温度和振动可以近似解耦。热分析结果温度分布和结构响应热应力对网格密度的要求不一样分开处理可以各自优化网格。顺序耦合可以随时插入试验修正数据比如把实测的温度循环曲线直接施加到模型里而不是修改整个耦合方程。顺序耦合也有细节要注意尤其是振动分析阶段的初始状态。在扫频或随机振动之前必须先给模型施加温度循环结束时刻的残余应力场。如果忽略了这个“预应力”振动分析的固有频率和应力幅值都会偏掉。实际上PCB受热后翘曲变形刚度会发生变化固有频率也会漂移我们实测一块板子在25°C时一阶固有频率为78Hz加热到85°C后降到71Hz同时振动响应幅值增加了约20%。这个“热软化”效应是热-振耦合仿真的核心价值之一也是纯振动仿真看不到的。3. 关键实操一步步把热-振耦合仿真跑起来3.1 几何处理与网格划分焊球怎么切网格才收敛建模几何处理这一步最耗时也最容易出错。从EDA工具导出PCB的3D布局典型路径是设计文件 → ODB或IDF → 导入仿真前处理工具需要把铜箔、走线简化保留封装外形、焊球布局、板框、安装孔、主要连接器。铜箔层对板刚度有贡献但不必逐层建模我一般用等效板厚度和等效弹性模量代替这样能在不牺牲精度的前提下把壳单元算得快一点。焊球建模有两种做法。一种是把每个焊球建成截球体实体球体上下各加一层金属间化合物层IMC层。另一种是直接用圆柱或棱柱体近似只保留焊点高度和直径。IMC层很薄几个微米但也有不建它的道理——它刚度很高是裂纹扩展的“优先通道”应力分布高度受它影响。如果只做寿命趋势对比简化掉IMC问题不大如果要精确预测失效周期建议保留IMC层或至少用界面绑定来模拟焊盘和焊球之间的“硬连接”。网格这部分我把重要的实操心得列一下焊球至少沿厚度方向分4-6层单颗焊球的实体单元数建议超过1500太粗的话蠕变应变能量会被低估。四角焊球需要单独加密因为那是输出重点区域。中心区域焊球网格可以稀疏一些节省计算量。焊球与焊盘、IMC界面附近要有局部加密过渡区避免应力梯度大的位置因为网格突变产生伪应力。整板壳体网格和局部实体网格之间用“绑定接触”或“多体网格组装”连接不能用刚性连接的方式否则会局部刚化。仿真前先跑一遍模态分析和一阶固有频率的实测值比对误差在5%以内再继续往下算这是验证整板刚度的最快捷方式。3.2 热循环与PSD振动载荷的施加细节热循环载荷按行业通行的JESD22-A104标准设置用-40°C到125°C、高低温各保温15分钟、升降温速率约10°C/分钟的温度曲线。温度载荷施加方式有两种一种是把温度作为体载荷加载到所有单元上另一种是定义PCB和封装表面的对流换热系数和空气温度让求解器自己算温度场。显然后者更真实也能看出封装内部热透镜效应导致的温差。但它的稳定时间更长如果想快速对比多个设计方案我建议先用体载荷跑趋势确认趋势后再对优化方案做一次流固热耦合验证。振动载荷分两类正弦扫频和随机振动。工业产品常用随机振动给PSD功率谱密度曲线。我在这个项目里用的振动条件是典型的运输振动谱频率范围5-500Hz总均方根加速度约2g注意总GRMS是按PSD曲线积分得到的我这边给到约2.0g。施加方式是把夹具安装孔位置的自由度约束住再把PSD加速度谱施加到约束边界上。这里有个经验之谈安装孔处的约束不要全部锁死要按实际螺丝扭矩对应的预紧力或摩擦系数来设定约束过强会把板子算得偏刚振动响应偏小寿命预测偏乐观。顺序耦合的具体操作流程是这样的先在热分析模块算完一个或几个完整温度循环导出焊球区域的温度场T(x,y,z,t)。把T场导入到静力结构分析计算不同温度时刻的热应力、热应变和蠕变损伤。取温度循环末尾的残余应力场作为初始应力运行模态分析得到考虑热应力的固有频率和振型。在模态分析基础上施加PSD随机振动载荷计算各阶模态贡献和焊球应力的RMS值。把热疲劳损伤和振动疲劳损伤数据整理到同一个表格用Miner线性累计法则相加。3.3 结果后处理拿什么指标判断“快坏了”跑完仿真你手上会有一堆应力应变数据但直接看应力绝对值非常容易误判。焊球内部的应力分布很高局部峰值动不动就几十上百MPa但这不是失效判据。我做后处理时重点关注三个指标第一个是累计等效蠕变应变累计等效非弹性应变。这个数值直接对应焊球每一圈温度循环积累的不可恢复变形数值越大离疲劳裂纹越近。四角焊球的这个值通常远高于平均。通过对比设计方案的曲线能快速判断中心到角部的寿命差异。第二个是蠕变应变能密度增量每次循环的单位体积能量耗散。Daruveaux等学者提出用每一周期累计塑性/蠕变应变能密度ΔW和寿命Nf之间的幂律关系来预测焊点寿命表达式是Nf A·(ΔW)^(-n)。A和n由焊料体系决定SAC305典型值在0.1-0.4之间具体按试验标定。这个指标比单一应力值靠谱得多因为它包含了整个应力应变滞回环的面积反映的是每个循环实际“消耗”掉多少损伤能量。第三个是振动分析下的1σ应力RMS值。随机振动分析输出的应力不是固定值而是一个统计分布1σ表示峰值应力有68.3%的概率不超过这个值。工程上一般把1σ、2σ、3σ分开处理3σ99.7%概率上限对应的应力幅值作为振动疲劳评估上限。同时还要注意焊球和PCB连接处的Von Mises应力峰值这个位置是振动开裂高发区。3.4 现场结果四角应力/应变到底高在哪了直接给结论这个仿真正式跑出来后结果和实际失效板卡几乎完全吻合。在热循环仿真环节四角焊球阵列最外排、最靠近封装边缘的一颗焊球累计蠕变应变是中心焊球的5.2倍蠕变应变能密度增量约为中心的4.8倍。从云图上看应变云图呈现出清晰的“四角高温区”效应——不是说温度高而是说应力应变在角部形成高值凸起。最危险的位置在焊球和PCB焊盘的界面处而不是焊球正中间这和实际切片观察到的裂纹起裂点一致。在振动环节加入热预应力后板卡一阶固有频率从实测的78Hz降至72Hz仿真值且在70-80Hz频段内封装四角焊球应力RMS值比中心区域高出约3倍。在随机振动的3σ峰值应力对比中四角焊球最大应力达到28.6MPa中心焊球只有10MPa出头。这个倍数关系在多个封装尺寸下重复验证规律稳定。再把热和振叠加四角焊球的Miner累计损伤因子在计划的寿命周期内达到1.65超过1意味着预计失效而中心焊球只有0.28。换言之四角焊球在寿命周期内一定会出现疲劳裂纹中心焊球还很健康。这也是为什么现场返修拆下来的芯片总能明显看到四角焊球和中心焊球的断裂形貌不一样四角是疲劳断口中心有些甚至还是完整的球体。4. 仿真结论怎么落回工程实践设计与返修4.1 设计端的四个实用优化方向仿真不是为了写报告是为了指导设计。做完这个项目我总结出四个改动成本低但收益明显的方向大家在PCB和封装设计阶段可以参考第一限制DNP的最大值。封装尺寸固定时把最外层功能焊球往内缩一排哪怕只缩一排也能显著降低角部焊球的剪切应变。代价是减少了封装面积利用率但如果可靠性目标紧这个牺牲值得。或者反过来选封装时优先考虑带中心热焊盘、焊球全阵列布局的型号让外侧焊球尽量分散应变。第二增加底部填充胶underfill或角部点胶。底部填充胶能把封装和PCB之间的剪切应力传导到整块胶层焊球应力峰值能下降30%-50%。角部点胶比全面填充便宜对四角保护效果好但寿命提升幅度不如全填充。苹果系产品喜欢用底部填充胶就是这个原因。第三控制安装孔和封装之间的相对位置。仿真结果里有一个明显规律离安装孔越近的封装角焊球应力越大。因为螺丝锁紧位置是整板变形的锚点变形约束最强。在布局时尽量把大BGA放在板中心区域或者给封装角留出至少5mm以上的“呼吸空间”不要紧贴安装孔。第四选用更高可靠性的焊料体系。四角焊球失效严重的场景可以把SAC305换成SAC405或添加微量Ni、Sb元素的焊料它们的高温蠕变抗性更好代价是熔点升高对PCB耐热要求也提高。这个方案需要在设计早期就定因为焊料一旦上线很难更换。4.2 从仿真到返修台BGA返修时的温度曲线控制仿真结论和返修工艺看起来不搭界其实是同一件事的两端。既然四角焊球最容易坏返修BGA时就需要额外注意角部温度控制。我用过的BGA返修台一般分为预热区、主加热区和冷却区。返修无铅BGA时PCB底部预热温度尽量保持在120°C-150°C顶部热风嘴峰值温度控制在235°C-245°C左右整个温度曲线要达到焊膏熔融并回流的状态。但关键点是四角温度不能超因为四角本身经历过疲劳损伤如果返修时再给它一次过高的热冲击会让周边焊盘和PCB基材产生新的微裂纹。比较稳妥的做法是拆焊和焊接过程中用热电偶贴在封装四角实时监控表面温度确保四个角的峰值温度差控制在5°C以内。如果返修台自带温度曲线反馈优先选带闭环控制的型号比开环手动控制稳定很多。另外四角焊球损坏的芯片拆下来后PCB焊盘表面会有残留的IMC和焊料残余处理时要用吸锡带配合助焊剂清理干净千万别用硬刮的方式容易把焊盘刮掉或掀起。清理后检查四角焊盘是否存在剥离pad peeling这种情况返修一次基本就废板只能做飞线处理或报废。4.3 顺带聊聊红米AX3000 TTL焊点这类“小焊点”的启示说到细节焊点可靠性最近网上不少人折腾路由器救砖比如红米AX3000刷第三方固件时要用TTL串口线路板上的小焊盘接调试线。这些焊盘比BGA焊球大但原理相通TTL焊盘直接焊接调试线后如果线材粗硬整机振动或线材拉扯时焊盘边缘就是应力集中点反复受力后同样会出现“焊盘先坏”的现象——冷焊、脱落、虚接。在做这种小焊点手工焊接时可以借鉴仿真给我们的几个提醒接线不要太长太重给线材留出应力释放环打个结或固定到板边焊点尽量圆润饱满避免拉尖和空洞插针和焊盘之间如果工作环境有振动最好点一点硅橡胶或热熔胶固定相当于简化版的underfill。这些都是低成本高可靠性的操作习惯比坏了再补焊强太多。5. 常见问题排查与避坑建议5.1 仿真不收敛、断在中间怎么办热-振耦合仿真最常见的故障就是求解到一半不收敛。我遇到过几次原因基本集中在三块。第一块是材料非线性的收敛问题。Anand本构模型的参数初值如果给得太随意特别是在第一轮迭代时让屈服应力和应变率不在合理范围很容易发散。解决办法是先固定Anand参数用纯弹性模型跑一遍热应力确认整体量级合理后再把粘塑性本构打开逐步加载。第二块是接触设置。如果焊球、焊盘、IMC层之间用接触对模拟接触刚度过大或初始穿透会造成局部应力突变并导致发散。我的做法是先尝试把焊球和焊盘做成共节点共用一个网格节点就没有接触收敛问题如果要模拟脱落和裂纹扩展再去专门切裂纹路径而不是靠接触硬刚。第三块是单位制的混乱。做热分析时用摄氏度做应力分析时突然转成开尔文导致热应变计算偏差甚至负膨胀。建议整个工程从一开局就锁死单位制几何用mm力用N应力用MPa温度用°C时间用s。所有输入文件里再复查一遍几百个参数的模型一旦混入一个错误单位结果是灾难性的还特别难排查。5.2 边界条件和网格敏感度怎么判断边界条件错误是仿真和实测对不上的头号原因。整板分析时如果四角螺丝孔完全锁死板子偏刚振动响应偏小如果完全不约束板子变成自由状态固有频率和振型全错。正确操作是根据实际夹具刚度设置弹性约束或者用弹簧单元模拟螺丝的夹紧刚度刚度值根据螺丝规格和锁紧扭矩估算范围通常在1e4-1e5 N/mm之间。如果拿不准可以做一个参数扫描看约束刚度对焊点应力的敏感性选一个对结果影响最敏感的合理区间。网格敏感度检查也必不可少。换两套不同密度的网格跑同一个模型如果四角焊球的应力/应变差异超过8%-10%说明网格还不收敛要继续加密。加密优先加焊球外圈和IMC层附近而不是整板均匀加密这样效率最高。我之前踩过一个坑只加密了焊球中间层界面处没加密结果应力峰值反而下降因为应力奇异性最强的界面区域网格太粗峰值被平均掉了。后来把界面附近至少加密到3层单元结果才稳定下来。5.3 实测复现与仿真对不上的常见原因最扎心的事莫过于仿真算得头头是道试验回来完全对不上。我总结几个高频差异来源一是材料数据库和实际批次不一致。焊料成分微小的差异比如Sn的比例差0.5%会导致高温蠕变寿命差一倍。解决方法是仿真和试验用同一批板卡、同一种焊膏有条件的话做焊料批次CTE和拉伸数据抽测拿实测值回填模型。二是失效判据选错。有的项目用裂纹长度超过焊球直径的25%作为寿命终点有的用电阻值跳变超过初始值的20%作为失效标准。判据不同寿命预测结果可能差好几倍。仿真输出的“寿命”必须和试验里采用的失效定义对应否则就是鸡同鸭讲。三是板卡预变形和残余应力被忽略。PCB在生产中经过回流焊、切割、拼板拆分本身存在初始翘曲和残余应力。我在模型里不加入这些初始变形直接测四角焊球应力结果比实测偏小。后来把实测板翘曲量比如对角线翘曲0.2mm作为初始条件施加到模型应力结果和试验的相关系数从0.72提升到0.91。如果方案对比阶段对绝对精度要求不高也可以不建预变形但最终定型前的验证仿真一定要补上。四是在线监测试验的温度反馈滞后。实测中热电偶测的是PCB表面温度而非焊球内部温度焊球内部温度往往滞后于表面保温时间不足时焊球还没完全达到目标温度就开始降温实际蠕变损伤比等温条件下小。做验证时把实测温度曲线直接作为边界输入或用热电偶埋在BGA下方的测试板内能缩小误差。最后再分享一个实操体会做了这么多轮BGA热-振耦合仿真我最大的体会是仿真模型的复杂度不是越高越好而是要“够用”。第一次我把整板所有细节都建进去结果模型跑不动浪费了整整一周后来换成子模型法整板壳单元加局部实体计算时间压缩到一天以内精度反而更可控。仿真的真正价值不在于画一张五彩斑斓的应力云图给客户看而在于它能在你画板之前就告诉你“四角会有问题”并逼你把该加固的地方提前加固、该改的布局提前改掉。四角焊球先坏这个事看起来是失效分析问题本质是设计阶段就埋下的结构决策问题仿真只是帮你把这个隐患提前暴露出来而已。希望这篇内容能让你在面对下一块BGA板卡时少踩几个我踩过的坑。
返回列表