2、功耗基础概念:动态功耗与静态功耗、开关功耗与短路功耗、漏电流功耗详解

各位同学,咱们今天来聊聊功耗的“老底”。

做芯片设计,说白了就是在跟功耗、性能和面积这三个“冤家”打交道。我个人习惯,先把功耗拆开揉碎了讲清楚。你想想看,如果连功耗从哪来、怎么算的都不知道,后面做仿真、做优化,那不就成了无头苍蝇吗?

嗯,咱们先从最宏观的两个大方向说起:动态功耗和静态功耗。

2.1 动态功耗:芯片“动起来”才有的开销

动态功耗,顾名思义,就是芯片在工作、在翻转、在干活的时候消耗的能量。它又分两兄弟:开关功耗和短路功耗。

2.1.1 开关功耗(Switching Power)—— 给电容充放电的“体力活”

开关功耗是动态功耗里的“大头”。

为什么会这样?因为CMOS电路的本质,就是一个反相器驱动下一级反相器的栅极。栅极是个电容,对吧?

信号从0变1,你得给这个电容充电;从1变0,你得给它放电。这一充一放,电流就流过去了,功耗就产生了。

公式很简单,大家记住:

P_sw = α * C_L * V_DD² * f

这里面的门道:

  • α(翻转因子):不是每个时钟周期都在翻转。我见过新手直接把α设成1,结果功耗估出来高得离谱。实际项目中,数据总线可能只有20%的时间在翻转。
  • C_L(负载电容):包括连线电容、扇出门的栅电容。工艺越先进,连线电容占比越大。
  • V_DD²(电压平方):这是最狠的。电压降一点,功耗降一大截。所以现在大家都抢着做低电压设计。
  • f(频率):跑得越快,功耗越高,这个好理解。

重要提示:开关功耗与电压的平方成正比。这意味着,从5V降到3.3V,功耗能省一半以上。这是低功耗设计的“第一性原理”。

2.1.2 短路功耗(Short-Circuit Power)—— 开关瞬间的“内耗”

这个功耗,很多人容易忽略。

理想情况下,PMOS和NMOS是交替导通的。但现实是,信号翻转需要时间。在上升沿或下降沿的那一瞬间,PMOS和NMOS会同时导通一小会儿。

这一小会儿,电源到地就形成了直流通路。电流“唰”地一下流过去,这就是短路功耗。

我在项目中遇到过这样的情况:一个驱动能力很强的Buffer,去驱动一个很长的走线。结果因为走线电容大,信号边沿变得很缓,PMOS和NMOS同时导通的时间变长,短路功耗直接占了总动态功耗的30%以上。

个人经验:控制信号边沿速率(slew rate)很重要。太快了有EMI问题,太慢了短路功耗飙升。一般我会把输入信号的转换时间控制在时钟周期的10%~20%之间。

2.2 静态功耗:芯片“睡着”也在漏电

静态功耗,也叫漏电流功耗。这是芯片即使啥也不干,只要通着电,就会产生的功耗。

以前工艺老(0.18μm以上),静态功耗几乎可以忽略。但现在到了7nm、5nm,静态功耗有时候能占到总功耗的40%~50%。你想想看,手机待机一晚上掉电,很大一部分就是这玩意儿在作祟。

2.2.1 亚阈值漏电流(Subthreshold Leakage)—— 关不断的“小水流”

这是漏电流里最大的一头。

理想情况下,NMOS的Vgs小于Vth,管子应该完全关断。但物理世界不完美。当Vgs接近Vth时,源漏之间会形成一个弱反型层,电流还是会流过去。

这个电流跟温度关系极大。温度每升高10度,亚阈值漏电流差不多翻一倍。所以芯片发热后,漏电流会越来越大,形成正反馈——这就是“热失控”的根源。

2.2.2 栅极漏电流(Gate Leakage)—— 栅氧化层太薄了

栅氧化层越做越薄,薄到只有几个原子层厚度。这时候,量子隧穿效应就出现了。

电子会直接“穿”过绝缘层,从栅极跑到沟道里去。这就是栅极漏电流。

我记得在45nm节点那会儿,高k金属栅(HKMG)工艺出来之前,栅极漏电流大得吓人。后来用了HfO₂(二氧化铪)这种高介电常数材料,才把栅漏降下来。

2.2.3 栅极感应漏电流(GIDL)—— 边缘效应

这个比较隐蔽。当栅极电压很低(比如0V),而漏极电压很高时,在栅极和漏极交叠的区域,会形成一个很强的电场。

这个电场会诱发漏极附近的耗尽区产生电子-空穴对,形成漏电流。

GIDL在I/O电路里特别明显,因为I/O的电压高。我曾经调试过一个芯片,发现休眠模式下功耗比预期高了20%,查了半天,就是某个I/O PAD的GIDL在作怪。

2.3 功耗的“温度效应”

讲到这里,必须提一嘴温度。

动态功耗跟温度关系不大(电阻会随温度变,但影响小)。但静态功耗是温度敏感型的。

你可以这么记:

功耗类型 对温度敏感度 典型变化规律
开关功耗 基本不变
短路功耗 随温度升高略有增加
亚阈值漏电流 极高 温度每升10℃,约翻一倍
栅极漏电流 随温度升高缓慢增加

避坑指南:我曾经在做一个低功耗MCU项目时,只做了25℃的功耗仿真,结果芯片在85℃高温下测试,静态功耗比仿真值大了3倍。从那以后,我每次做功耗仿真,都会跑三个温度点:-40℃(低温)、25℃(常温)、125℃(高温)。高温下的漏电流,才是真正的“杀手”。

2.4 总结一下

好了,咱们把功耗的底裤扒干净了:

  • 动态功耗 = 开关功耗(充放电) + 短路功耗(同时导通)
  • 静态功耗 = 亚阈值漏电流 + 栅极漏电流 + GIDL + 其他

低功耗设计,说白了就是:

  1. 降低电压(V_DD²)—— 效果最明显
  2. 降低翻转率(α)—— 靠架构和编码
  3. 降低漏电流(I_leak)—— 靠工艺和电源门控

下一章,咱们会讲怎么用EDA工具把这些功耗“算”出来。到时候你会发现,理解了今天这些基础概念,工具里的那些参数设置,你一看就懂。

核心记忆点:动态功耗看翻转,静态功耗看漏电。温度是静态功耗的放大器,千万别忽视。