第二章 功耗基础理论:CMOS电路功耗来源
各位同学,咱们今天聊聊功耗的基础理论。说实话,功耗这东西,我刚入行时觉得它就是个“附属品”——只要功能对了,功耗差点无所谓。直到有一次,我负责的一款光通信芯片在实验室里热得能煎鸡蛋……嗯,从那以后,我再也不敢小看功耗分析了。
2.1 CMOS电路的三大功耗来源
CMOS电路的功耗,说白了就三块:动态功耗、静态功耗、短路功耗。咱们一个一个说。
2.1.1 动态功耗
动态功耗是芯片工作时最主要的功耗来源。它发生在信号翻转的时候——也就是从0变1,或者从1变0的那一瞬间。
为什么会这样?因为你要给负载电容充电啊。你想想看,每个门电路后面都连着一堆寄生电容,信号一跳变,就得给这些电容充放电。电流流过电阻,自然就发热了。
动态功耗的计算公式很简单:
P_dynamic = α × C_load × Vdd² × f
其中:
- α:翻转活动因子(0到1之间)
- C_load:负载电容
- Vdd:电源电压
- f:工作频率
注意看,Vdd是平方关系。这意味着什么?电压降一点点,功耗就能省一大截。我在项目中遇到过,把电压从1.2V降到1.0V,动态功耗直接降了30%多。当然,代价是速度会变慢,得权衡。
重点记忆:动态功耗与电压的平方成正比。这是所有低功耗设计的核心出发点。
2.1.2 静态功耗
静态功耗,也叫漏电流功耗。芯片不干活的时候,它也在耗电。你可能会问:“晶体管不是关断了吗?怎么还会有电流?”
嗯,这里要注意。理想情况下,关断的晶体管是没有电流的。但现实中的晶体管,总会有那么一点点漏电流——就像水龙头关不严,一直在滴水。
静态功耗的公式:
P_static = I_leakage × Vdd
漏电流主要有几种:
- 亚阈值漏电流:栅电压低于阈值电压时,沟道里仍有少量电流
- 栅极漏电流:栅氧化层太薄,电子直接隧穿过去
- PN结漏电流:源漏与衬底之间的反向偏置电流
我记得在28nm以下的工艺节点,静态功耗占比越来越高。以前我们做0.18μm工艺时,静态功耗基本可以忽略。但现在做7nm、5nm,静态功耗能占到总功耗的30%-50%。
避坑指南:我曾经在一个项目中,只优化了动态功耗,完全没管静态功耗。结果芯片在待机模式下,电池半天就耗光了。从那以后,我每次做功耗分析,都会把静态功耗单独拎出来看。
2.1.3 短路功耗
短路功耗,也叫直通功耗。它发生在信号翻转的过程中——PMOS和NMOS同时导通的瞬间。
你想想看,信号从0变1时,PMOS逐渐打开,NMOS逐渐关闭。在中间某个时刻,两个管子都处于导通状态,电源到地之间就形成了一条短路路径。电流“唰”地一下流过去,就产生了功耗。
短路功耗的近似公式:
P_short = I_short × Vdd × t_sc × f
其中t_sc是短路时间,也就是两个管子同时导通的时间窗口。
一般来说,短路功耗占总功耗的比例不大,大概10%-20%。但如果信号边沿很慢(比如长互连线上的信号),短路功耗就会显著增加。
2.2 总功耗计算公式
把三部分加起来,就是CMOS电路的总功耗:
P_total = P_dynamic + P_static + P_short
= α × C_load × Vdd² × f + I_leakage × Vdd + I_short × Vdd × t_sc × f
这个公式,我建议你记在心里。做功耗优化时,你就是在跟这几个参数较劲——降低α、减小C_load、压低Vdd、降低f、减少漏电流、缩短短路时间。
个人经验:我习惯在做功耗预算时,先估算动态功耗,再估算静态功耗,最后留10%的余量给短路功耗和其他杂散损耗。这样算出来的总功耗,跟实测结果通常能对上。
2.3 工艺节点对功耗的影响
工艺节点越小,功耗特性变化越大。咱们用表格来看:
| 工艺节点 | 动态功耗特点 | 静态功耗特点 | 典型应用 |
|---|---|---|---|
| 180nm - 130nm | 动态功耗占主导(>90%) | 漏电流可忽略 | 早期光通信芯片 |
| 90nm - 65nm | 动态功耗仍为主,但占比下降 | 漏电流开始显现 | 10G光模块 |
| 40nm - 28nm | 动态功耗约70% | 静态功耗约30% | 25G/100G光通信 |
| 16nm - 7nm | 动态功耗约50%-60% | 静态功耗约40%-50% | 400G/800G光模块 |
为什么会这样?原因有三:
- 电压降低:工艺越先进,Vdd越低(从3.3V降到0.7V),动态功耗的平方项优势明显
- 漏电流暴增:阈值电压降低、栅氧化层变薄,漏电流指数级增长
- 单位电容减小:但晶体管数量暴增,总负载电容反而更大
我记得在做28nm光通信芯片时,静态功耗大概占20%。到了7nm项目,静态功耗直接飙到45%。当时我们不得不引入电源门控技术——不用的模块直接断电,不然芯片根本没法用。
关键结论:先进工艺下,静态功耗不再是“小角色”。做功耗优化时,必须动态、静态两手抓,两手都要硬。
2.4 光通信芯片的特殊性
光通信芯片跟普通数字芯片不太一样。它有几个特点:
- 高速串行接口:动不动就是25Gbps、56Gbps,甚至112Gbps。频率高,动态功耗自然大
- 模拟电路占比高:TIA、LA、CDR、Driver这些模拟模块,静态功耗比数字逻辑大得多
- 温度敏感:光模块工作温度范围宽(-40°C到85°C),温度升高,漏电流指数级增加
所以,做光通信芯片的功耗优化,不能照搬数字芯片的那套方法。你得针对模拟电路的特点,单独想办法。
我的建议:刚开始做功耗分析时,先把芯片分成数字域和模拟域,分别估算功耗。数字域用动态功耗公式算,模拟域用静态电流乘电压算。最后加起来,再留20%的余量。这样出来的结果,基本靠谱。
好了,这一章的内容就到这里。下一章咱们聊聊功耗建模与仿真方法——怎么用工具把功耗算准。到时候我会分享一些我在项目中踩过的坑,保证有用。
公众号:蓝海资料掘金营,微信deep3321