4. 有限元仿真基础:网格划分、材料属性、边界条件设置
做封装翘曲仿真,说白了就是跟三个东西打交道:网格、材料、边界条件。这三样搞不定,仿真结果就是废纸一张。我刚开始做封装仿真那会儿,就吃过网格太粗的亏,算出来的翘曲值跟实测差了快一倍,后来被老工程师骂了一顿才明白——网格不是越密越好,但该密的地方绝对不能省。
4.1 网格划分——仿真精度的命门
网格划分这件事,我个人的习惯是「先粗后细,局部加密」。你想想看,一个封装体里,芯片、基板、塑封料、焊球,这些材料的尺寸和刚度差异巨大。如果全用一样的网格尺寸,要么算不准,要么算不动。
4.1.1 网格类型怎么选?
主流有限元软件里,常见的网格类型就这几种:
| 网格类型 | 适用场景 | 我的经验 |
|---|---|---|
| 六面体网格 | 规则几何体(芯片、基板) | 精度最高,但划分费时 |
| 四面体网格 | 复杂几何体(塑封料、焊球阵列) | 自动划分快,但精度稍差 |
| 楔形/棱柱网格 | 薄层结构(粘接层、界面层) | 厚度方向至少2层 |
我在项目中遇到过最头疼的情况——一个扇出型封装,塑封料边缘有倒角,四面体网格死活画不好。后来我改用六面体主导,只在倒角处切几刀用四面体过渡,效果就好多了。
4.1.2 网格尺寸怎么定?
这里有个经验公式,我用了好多年:
最小网格尺寸 ≤ 最小特征尺寸 / 3
比如:芯片厚度 100μm,那芯片厚度方向至少分3层网格
嗯,这里要注意:应力集中区域(比如芯片角、焊球颈部)的网格要加密到全局尺寸的1/5到1/3。我曾经做过一个BGA封装,焊球颈部网格太粗,算出来的应力值偏低30%,后来加密后才跟实测对上。
核心原则:网格过渡要平滑。相邻网格尺寸比不要超过1.5倍,否则计算容易发散。
4.1.3 网格质量检查
画完网格别急着算,先检查这几个指标:
- 长宽比(Aspect Ratio):控制在5以内,最好小于3
- 扭曲度(Skewness):六面体小于0.7,四面体小于0.85
- 正交质量(Orthogonal Quality):大于0.15,越接近1越好
我习惯用软件自带的网格质量检查工具跑一遍,不合格的地方手动调整。别偷懒,这一步省了,后面算出来的结果你敢信吗?
4.2 材料属性——输入垃圾,输出垃圾
做仿真的人都知道一句话:「Garbage in, garbage out」。材料参数不准,再好的网格、再牛的求解器都没用。
4.2.1 封装材料的关键参数
翘曲仿真最敏感的材料参数,我按重要性排个序:
- 热膨胀系数(CTE):直接影响热应力大小
- 杨氏模量(E):决定材料抵抗变形的能力
- 泊松比(ν):影响横向变形
- 玻璃化转变温度(Tg):聚合物材料在Tg前后性能变化巨大
举个例子,塑封料的CTE在Tg以下可能是10ppm/℃,到了Tg以上直接跳到40ppm/℃。如果你用常温参数去算回流焊温度下的翘曲,那结果能准吗?
4.2.2 温度相关材料属性
封装仿真通常要经历多个温度节点(比如从175℃冷却到25℃),材料属性必须随温度变化。我一般这样处理:
// 以塑封料为例,定义温度相关的杨氏模量
E(T) =
T < Tg: E0 * (1 - α * (T - T0))
T ≥ Tg: E0 * 0.01 // 模量下降两个数量级
注意:Tg附近的数据点要加密,至少取3-5个温度点。我见过有人只给了Tg前后两个点,结果算出来的翘曲曲线在Tg处出现不连续,明显不合理。
小技巧:如果拿不到准确的温度相关数据,可以用DMA(动态力学分析)测试结果。实在不行,参考同类材料的文献数据,但一定要注明来源。
4.2.3 各向异性材料
基板(比如BT树脂、ABF膜)通常是各向异性的。面内和厚度方向的CTE、模量都不一样。我处理这类材料时,会单独定义三个方向的属性:
| 方向 | CTE (ppm/℃) | 模量 (GPa) |
|---|---|---|
| X方向(面内) | 15 | 25 |
| Y方向(面内) | 15 | 25 |
| Z方向(厚度) | 50 | 8 |
你看,厚度方向的CTE是面内的3倍多,模量却只有1/3。如果不区分,算出来的翘曲方向都可能搞反。
4.3 边界条件——别让模型乱跑
边界条件设置,说白了就是告诉软件:「这个零件怎么固定,受什么力」。设置不对,模型要么飞出去,要么算出来的应力分布完全失真。
4.3.1 位移边界条件
翘曲仿真通常用最小约束原则。什么意思?就是只约束刚体位移,不限制自由变形。
我常用的做法:
- 在封装体底部中心选一个节点,约束所有自由度(UX=UY=UZ=0)
- 在同一个面上选另一个节点,约束UY和UZ
- 再选一个节点,只约束UZ
这样三个点就把刚体位移锁死了,但封装体可以自由翘曲。千万别把整个底面都固定住,那样算出来的翘曲值会偏小很多。
注意:约束点要选在对称位置,避免引入额外的弯矩。我曾经犯过这个错,约束点选偏了,算出来的翘曲形状不对称,折腾了两天才找到原因。
4.3.2 热载荷设置
翘曲仿真的热载荷,通常是给整个模型施加一个均匀温度场,然后让温度从高温降到低温。比如:
初始温度:175℃(回流焊峰值温度)
最终温度:25℃(室温)
降温速率:可以忽略,因为是静态分析
这里有个坑:参考温度(应力自由温度)怎么设?我一般取材料的固化温度或成型温度。比如塑封料的固化温度是175℃,那参考温度就设175℃。如果设错了,算出来的残余应力会差很多。
4.3.3 接触与绑定
不同材料之间的界面怎么处理?
- 理想绑定(Tie):假设界面完美粘接,没有相对滑移。适用于芯片与基板、塑封料与芯片等强粘接界面。
- 接触(Contact):允许分离和滑移。适用于焊球与焊盘之间(如果考虑焊球疲劳)。
我个人的建议:翘曲仿真优先用Tie。因为封装体在回流焊过程中,各层之间通常不会脱粘。用接触反而容易引入非线性计算不收敛的问题。
4.4 知识体系总览
下面这张图,是我自己总结的有限元仿真基础框架,帮你理清思路:
你看,这三个要素是环环相扣的。网格划得再好,材料参数给错了,结果就是错的。边界条件设得再精细,网格质量不行,计算可能直接发散。所以我的建议是:先花70%的时间把这三个基础打牢,剩下30%的时间去调求解器参数和后处理。
最后说一句:仿真不是玄学,每一步都要有依据。网格尺寸为什么这么取?材料参数从哪来的?边界条件为什么这么设?每一个决策都要能说清楚。这样出来的结果,你自己信,别人也信。