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 + 其他
低功耗设计,说白了就是:
- 降低电压(V_DD²)—— 效果最明显
- 降低翻转率(α)—— 靠架构和编码
- 降低漏电流(I_leak)—— 靠工艺和电源门控
下一章,咱们会讲怎么用EDA工具把这些功耗“算”出来。到时候你会发现,理解了今天这些基础概念,工具里的那些参数设置,你一看就懂。
核心记忆点:动态功耗看翻转,静态功耗看漏电。温度是静态功耗的放大器,千万别忽视。