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 封装材料的关键参数

翘曲仿真最敏感的材料参数,我按重要性排个序:

  1. 热膨胀系数(CTE):直接影响热应力大小
  2. 杨氏模量(E):决定材料抵抗变形的能力
  3. 泊松比(ν):影响横向变形
  4. 玻璃化转变温度(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 知识体系总览

下面这张图,是我自己总结的有限元仿真基础框架,帮你理清思路:

有限元仿真基础:三大核心要素 网格划分 材料属性 边界条件 六面体/四面体 局部加密 质量检查 过渡平滑 CTE / E / ν 温度相关 各向异性 Tg拐点 最小约束 热载荷 Tie/Contact 参考温度 输出:翘曲量 / 应力分布 验证闭环:仿真结果 vs 实测数据

你看,这三个要素是环环相扣的。网格划得再好,材料参数给错了,结果就是错的。边界条件设得再精细,网格质量不行,计算可能直接发散。所以我的建议是:先花70%的时间把这三个基础打牢,剩下30%的时间去调求解器参数和后处理

最后说一句:仿真不是玄学,每一步都要有依据。网格尺寸为什么这么取?材料参数从哪来的?边界条件为什么这么设?每一个决策都要能说清楚。这样出来的结果,你自己信,别人也信。

专注资料整理