热设计为什么难搞?因为玄之又玄
产品失效的很大一部分原因就是器件过温,现在产品使用的芯片功率动则几十瓦,上百瓦。一不小心就不知道在哪里会翻船。
我们知道在地球上搞热设计的方式就是将芯片的热量传递到空气中,从根本上来讲就是要使得芯片的温度在期望的值以内。如果用一个简单的公式来描述这一过程就是:
从这个式子来看,似乎只需要简单的计算就可以得到芯片的结温了。但是到了实际应用中这个式子中的每个变量存在不确定性。
芯片内部的复杂性
首先,我们看看\(T_J\)。对于大功率的芯片,它会提供一个或多个温度指示芯片的温度。
芯片内部可能包含多个发热区域,每个区域的发热量是不一样的,也可能在不同的工作情况下,各区域的热耗是动态变化的。
另外,现在封装的集成度越来越高,芯片可能包含不同的功能区域,如 system-on-chip (SoC)或 system-in-chip (SiP),将 CPU,DDR,外围被动器件等集成到一个封装内部。从外部看芯片似乎是一个方方正正,平平整整的,可是内部却高低不一,热耗也各不相同。
所以这里就有个问题,我们说的结温\(T_j\)可能不是某一个固定区域的温度,也许是几个区域温度的最大值,或者某几个最大值的平均值。
而且这些温度值它是变化的,有可能在某个工作条件下,它是 A 区温度最高,在另外的工作条件下 B 区域的温度最高。
另外还有一个问题就是探测到温度的精度和准确度的问题。我们都知道精度是指的它的一致性,准确度是指他和绝对值的相对误差小。
芯片内置的温度传感器通常是基于二极管或其他半导体器件的温度特性来工作的。例如,二极管在工作时具有一个特性——它的正向电压(\(V_f\))与温度 T 之间的关系大致是线性的。通常,二极管的正向电压在 25°C 时约为 0.7V,而随着温度的升高,正向电压会逐渐降低,约为-2mV/°C。所以使用二极管测量温度的过程如下:
将二极管与电流源串联,使用微小的电流(例如 1mA)通过二极管。然后测量二极管的正向电压(V_f)。根据二极管正向电压的变化,通过查找二极管的温度-电压关系或者使用已知的公式计算出温度。
其中, \(V_f(T)\) 是温度 \(T\) 时的正向电压, \(V_{f0}\) 是参考温度 \(T_0\) 时的电压, \(\beta\) 是一个温度系数,通常为 -2 mV/°C。
虽然二极管体积小,可以方便地集成在芯片内部。但是,二极管的正向电压受电流和材料特性影响较大,因此需要对电流进行精确控制。另外,二极管的温度-电压线性关系并不是完美的线性,需要在不同温度下校准。
我们往往发现芯片提供的温度值的一致性也不是很好。就是我们在相同的条件下,相对比较短的时间内读 10 次温度值,得到的读数可能有 2~3°C 是上下波动。那么芯片厂家可能会做一些平滑或者滤波,在软件层面对他进行一次过滤。
另外一个方面,就是不同的芯片,它读出来的温度值也不尽相同,也就是一致性不好。
对于温度的绝对值的问题,那么可能他的偏差就更大了。例如,它显示的 100°C,但实际上它跟 100°C 的差距有多大,我们甚至是无从验证的。
这里已经讲了结温的不准确性和不确定性,了解了芯片温度读数的复杂性。我们同时说一下另外一个问题,就是芯片内部到它的壳之间的散热途径的复杂性。
对于有壳封装的芯片,通常它会在 Die 和 Lid 之间涂一层散热材料,也就是散热界面材料(TIM)。这层材料非常关键,各个玩家都有不同的材料,有的用 PCM,有的用 Grease,有的用液态金属。
TIM 材料的性能受温度变化的影响很大。在温度高低温循环的时候,芯片各材料之间的热膨胀系数不一样,导致芯片内部出现微观变形,使得这一层散热层之间不断地产生累积变化。可能界面材料会逐渐出现空洞、裂纹、挤出,甚至出现缝隙等失效。这样会导致芯片的温度随时间缓慢上升。
环境的复杂性
到这里我们已经讲了,芯片内部的不确定性,那么我们再来看看那个公式中的环境温度\(T_a\)。
这里我们说的是环境温度,但有时候环境产品的应用环境是不确定的。例如,有些产品是使用在户外,我们没法完全控制室外的温度,在有些地区到夏天最高到 45°C,甚至 50°C 以上,都是有可能的。对自然散热产品来说,风和太阳的影响是不可忽略的。
即使是室内的消费电子,可能他的安装方式也会受到影响。例如,我们无法控制客户,将一台电视机安装在通风良好的位置。有的家庭为了美观可能将电视机嵌到墙壁,使得外面看起来电视跟墙面是一个平面,这样是好看,但是电视机的上下散热途径基本上被堵死。所以环境也是很大的变量。
散热途径的复杂性
我们再来看一看,芯片 \(T_j\) 到空气的热阻。这里简单地将结到空气间热阻笼统地称为一个热阻 \(R_{ja}\),但是实际上这个链条中的环节非常多,不确定性也很多。前面我们介绍了从芯片的 Die 到壳就有很大的不确定性,那么从芯片的壳儿再到我们的空气,也有很长的一个散热链条。
首先我们要将芯片的壳贴到我们的散热腔体上,然后散热器将热量散发到空气中。有的时候可能还要穿过 PCB,然后将 PCB 贴到散热器,再到空气。在这个散热链条上那些非固定接触的地方我们都要使用散热界面材料填充缝隙或者是不平面度和粗糙度。
界面材料的长期可靠性显得尤为重要。很多厂家都在卖界面材料。但是如果我们的产品经过了高低温循环,高温老化,冷热冲击,振动测试等一系列的环境老化测试之后,这些界面材料的性能是否还能够稳定,就显得尤为重要。只要散热材料填充的不好,会使得期间的散热途径出现断层,器件的温度会显著升高。
功率的不确定性
那么最后一个方面就是这个散热功耗。我们在做热设计初期,功率的输入都是基于理论计算,或者各模块部分的测试结果。总的热功耗值可能跟最后实际测试的值相差比较大,也许会有 20%到 50%的差别,这样会对产品最终的温度估计产生很大的偏差。
另外一个方面就是产品在不同的工作条件下,或者不同的软件配置情况下,功耗也不尽相同。所以我们可能还要考虑不同的环境条件和不同的功耗组合。这样就使得我们要评估的场景非常多。
期望与实际的差距
往往我们的项目开发团队对热设计的期望值非常高,因为大家产品竞争激烈,可能要求这个仿真的准确度达到2~3°C以内。但是实际上每一个因素的影响,可能都有4~5°C。
所以如果我们在没有足够的测试数据的情况下,想要得到一个非常准确的温度预测结果,几乎是很难的。如果说预测的很准,那只能说运气很好。
还有一点就是做产品和做研究不一样。做研究的可能是为了发表文章,要求的是创新性和独特性,通常只要证明这个东西跟其他的方案,或者实现方式,或者结果不一样就可以了。往往不用考虑可靠性,可制造性,生产成本等等因素。做产品,一方面要使他的成本尽可能的低,而且要非常可靠,在各种环境下能够保持稳定的性能。所以对我们做产品来讲,往往是越简单的设计越好。
总结
所以这一篇文章从温度测量,功率,散热途径几个方面简单地介绍了一下热设计不确定性的来源。
总之要做好产品,热设计非常关键,但是确实很难控制。这里总结几条建议:
- 设计初期,尽可能随着设计的不断完善,逐步开展测试,随时修正仿真结果。
- 一个产品有完整的测试结果后,可以给后面类似的产品提供很好的设计参考,提高仿真的准确度。
- 还需关注生产出货的批量结果,不仅仅是几台样机的热测试结果。
- 可靠性,一致性比准确性更重要。当然有些公司不一定这样,反正做的产品三年质保期一过就坏:)