第三章 有限元仿真入门:ANSYS/Comsol 仿真流程
各位同行,今天咱们聊聊仿真。说实话,我刚入行那会儿,觉得仿真就是个「锦上添花」的活儿。直到有一次,一个封装样品在可靠性测试中批量开裂,我花了三周时间做切片分析、找失效根因,最后发现——如果当初跑一遍热应力仿真,这个问题早就能发现。
从那以后,我再也不敢轻视仿真了。它不是什么高深莫测的东西,说白了,就是帮你在流片之前,提前「看」到应力分布的工具。
3.1 仿真流程概览:从几何到结果
一个完整的有限元仿真,通常走这几步:
- 几何建模——把封装结构画出来
- 材料属性定义——告诉软件每种材料是什么脾气
- 网格划分——把连续体切成小块
- 边界条件与载荷——模拟真实工况
- 求解计算——让计算机干活
- 后处理解读——从一堆数字里找出关键信息
嗯,这六步环环相扣。哪一步出问题,结果都可能跑偏。我个人习惯,在开始建模前先画个流程图,把思路理清楚。
核心逻辑图:光芯片封装应力仿真流程
3.2 几何建模:别贪多,够用就行
很多新手一上来就想把封装画得跟实物一模一样。其实没必要。你想想看,一个光芯片封装里,有焊料层、UBM层、陶瓷基板、金属焊盘……如果全画出来,网格量会爆炸,求解时间从几小时变成几天。
我的经验是:只保留对力学行为影响大的结构。比如,焊料层一定要画,因为它往往是应力集中区。但那些微米级的钝化层,如果厚度远小于其他结构,可以忽略。
在ANSYS里,我习惯用DesignModeler直接画。Comsol的话,它的几何模块也挺顺手。关键一点——所有接触面必须共节点,否则算出来的应力会不连续,结果没法看。
小技巧:对于对称结构,只建1/2或1/4模型。我在做蝶形封装仿真时,经常用1/4模型,计算量直接降到原来的1/8,精度几乎没损失。
3.3 材料属性:别用默认值
材料参数是仿真的「灵魂」。你给软件喂什么数据,它就吐什么结果。我见过有人直接用软件自带的「硅」材料参数,结果仿真出来的应力值跟实测差了30%。为什么?因为默认参数是室温下的,而封装工艺温度往往在200°C以上,材料的弹性模量和CTE都会变。
常用的材料参数包括:
| 材料 | 弹性模量 (GPa) | 泊松比 | CTE (ppm/K) | 参考温度 (°C) |
|---|---|---|---|---|
| 硅 (Si) | 130~170 | 0.28 | 2.6 | 25 |
| 焊料 (SAC305) | 30~50 (随温度变化) | 0.35 | 21~24 | 25 |
| 陶瓷基板 (Al₂O₃) | 300~380 | 0.22 | 6~8 | 25 |
| 环氧树脂 | 3~10 | 0.35~0.40 | 30~60 | 25 |
注意,焊料的弹性模量对温度很敏感。我在做回流焊仿真时,会把焊料的弹模设成温度的函数,而不是一个固定值。否则,算出来的焊层应力会严重偏大。
3.4 网格划分:关键区域加密
网格划分是门手艺活。网格太粗,应力集中区算不准;网格太细,计算时间受不了。
我个人习惯的做法是:
- 焊料层和界面层——至少划分3层网格,用六面体单元
- 芯片和基板——用四面体单元,尺寸可以大一些
- 拐角和边缘——局部加密,因为这些地方应力容易集中
在ANSYS里,我常用MESH200单元配合ESIZE命令控制尺寸。Comsol的话,用「用户控制网格」功能,手动设置不同区域的网格大小。
注意:网格质量检查一定要做。我遇到过网格划分后,单元扭曲度太大,求解直接发散。后来养成了习惯,每次划分完先跑个「网格质量」检查,确保最小雅可比不低于0.3。
3.5 边界条件与载荷:模拟真实工况
边界条件设置,说白了就是告诉软件:「这个零件是怎么固定的,它经历了什么温度变化。」
对于光芯片封装,最常见的载荷是温度载荷。比如,从回流焊的260°C冷却到室温25°C,这个温差就是应力的来源。
设置步骤:
- 在模型底部或对称面上施加位移约束(防止刚体位移)
- 设置参考温度(通常是工艺温度,比如260°C)
- 施加温度载荷(比如从260°C降到25°C)
嗯,这里要注意:参考温度设错了,结果全白费。我曾经有个项目,把参考温度设成了室温,结果算出来的应力方向反了——明明是压应力,算出来是拉应力。后来排查了半天才发现是参考温度的问题。
3.6 后处理解读:别只看最大值
求解完成后,软件会给你一堆云图。很多人只盯着「最大应力值」看,觉得只要它小于材料强度就万事大吉。其实不然。
我建议关注以下几点:
- 应力分布云图——看应力集中在哪里。通常焊料层边缘、芯片拐角是重灾区
- 变形图——看封装有没有翘曲。翘曲太大会影响光路对准
- 路径图——沿某条线提取应力值,看变化趋势
在ANSYS里,用PLNSOL命令可以显示云图,用PATH命令可以定义路径。Comsol的话,后处理模块里直接有「派生值」功能,可以很方便地提取数据。
避坑指南:我曾经在分析一个COB封装时,看到云图上最大应力出现在芯片中心,觉得奇怪。后来放大一看,原来是网格划分时芯片中心有个畸变单元,导致应力虚高。所以,看到异常高的应力值,先检查网格质量,别急着下结论。
3.7 一个简单的ANSYS APDL示例
下面是一个简单的热应力仿真代码片段,用于模拟芯片从260°C冷却到25°C的过程:
/PREP7
! 定义单元类型
ET,1,PLANE182
! 定义材料属性(硅)
MP,EX,1,130E9
MP,PRXY,1,0.28
MP,ALPX,1,2.6E-6
! 定义材料属性(焊料)
MP,EX,2,40E9
MP,PRXY,2,0.35
MP,ALPX,2,22E-6
! 几何建模
RECTNG,0,1E-3,0,0.5E-3 ! 芯片
RECTNG,0,1E-3,-0.1E-3,0 ! 焊料层
! 网格划分
LESIZE,ALL,0.05E-3
AMESH,ALL
! 边界条件
NSEL,S,LOC,Y,-0.1E-3
D,ALL,ALL,0
ALLSEL
! 施加载荷
TREF,260
BFUNIF,TEMP,25
! 求解
/SOLU
SOLVE
! 后处理
/POST1
PLNSOL,S,EQV,0,1.0
这段代码很简单,但涵盖了完整流程。实际项目中,我会加上更多细节,比如焊料的温度相关属性、非线性求解设置等。
3.8 常见问题与调试思路
仿真跑不通,是家常便饭。我总结了几种常见情况:
| 现象 | 可能原因 | 解决方法 |
|---|---|---|
| 求解不收敛 | 网格质量差、材料参数不合理 | 检查网格雅可比,检查材料单位 |
| 应力值异常大 | 约束过强、网格畸变 | 释放多余约束,重新划分网格 |
| 变形方向不对 | 参考温度设反了 | 确认TREF值是否正确 |
| 结果与实测不符 | 材料参数不准确 | 用实测数据校准材料属性 |
说实话,仿真和实测对不上是常态。关键是要知道偏差在哪里。我一般会先做一组简单的验证——比如只模拟硅芯片和基板,不加焊料,看翘曲量是否跟理论计算一致。如果这一步都对不上,那肯定是材料参数或边界条件有问题。
好了,关于仿真流程就聊到这儿。记住一句话:仿真不是终点,而是帮你理解物理过程的工具。多跑几次,多跟实测对比,慢慢你就能摸清它的脾气了。
公众号:蓝海资料掘金营,微信deep3321