第三章 电压域设计:多电压域(MV)概念,台积电的ULV(超低电压)库特性,电压缩放策略
好,咱们进入第三章。这一章聊的是电压域设计,说白了就是怎么给芯片的不同部分喂不同的电压。你想想看,一个SoC里,CPU要跑1.0V,SRAM可能0.9V就够了,而某些低速外设0.6V也能干活。如果全给1.0V,那功耗不就白白浪费了吗?
多电压域(Multi-Voltage Domain, MV)就是干这个的。我最早接触这个概念是在一个IoT项目上,当时电池只有200mAh,客户要求待机一年。嗯,不做电压域分割,根本不可能。
3.1 多电压域(MV)概念
多电压域,就是把芯片分成几个独立的电压区域。每个区域可以单独供电,单独控制开关。这样做的好处很明显:
- 降低静态功耗:不用的区域直接关掉,漏电归零
- 降低动态功耗:电压越低,动态功耗按平方关系下降
- 灵活性高:不同模块可以工作在最优电压点
但代价也不小。我在项目中遇到过最头疼的问题就是跨电压域的信号传输。两个电压域之间电平不一样,直接连会出问题。必须加电平转换器(Level Shifter)。
关键点:每个电压域至少需要一个独立的电源网络(Power Grid),以及对应的电源开关(Power Switch)。电平转换器放在两个域的边界上。
常见的电压域划分策略有:
- 按功能划分:CPU域、GPU域、外设域、内存域
- 按性能划分:高频域、中频域、低频域
- 按功耗状态划分:常开域(Always-On)、休眠域、深度休眠域
我个人习惯在项目初期就画一张电压域拓扑图。把每个模块的电压需求、电流预算、开关策略都标清楚。这张图后面会指导整个物理设计。
3.2 台积电的ULV(超低电压)库特性
台积电的ULV库,全称是Ultra Low Voltage库。它专门为0.5V到0.9V的工作电压优化。普通标准库在0.6V以下基本没法用,时序乱得一塌糊涂。但ULV库可以。
为什么会这样?因为ULV库的晶体管阈值电压(Vth)做了特殊处理。普通库追求速度,Vth偏低,漏电大。ULV库追求低电压下的可靠性,Vth做了折中。
| 参数 | 标准库 (1.0V) | ULV库 (0.6V) | 说明 |
|---|---|---|---|
| 工作电压范围 | 0.9V - 1.1V | 0.5V - 0.9V | ULV支持更低电压 |
| 门延迟 (典型) | 10ps | 35ps | 速度慢,但功耗低 |
| 漏电流 | 1x | 0.3x | 漏电大幅降低 |
| 动态功耗 | 1x | 0.36x | 电压平方关系 |
你看这个表,ULV库的延迟是标准库的3.5倍。但功耗只有三分之一多一点。对于不需要高频的模块,比如传感器接口、RTC、看门狗,用ULV库非常划算。
我的经验:在同一个电压域里,可以混合使用ULV库和标准库。关键路径用标准库保证速度,非关键路径用ULV库降低功耗。但要注意,两种库的驱动能力不同,需要仔细做时序分析。
台积电的ULV库还有一个特点:它支持近阈值电压(Near-Threshold Voltage, NTV)工作。什么意思?就是电压可以降到接近晶体管阈值电压的水平。这时候功耗极低,但延迟会急剧增加。我曾经在一个医疗设备项目里,把BLE基带处理器的主频从48MHz降到1MHz,电压从1.0V降到0.55V,功耗直接降了90%。
3.3 电压缩放策略
电压缩放(Voltage Scaling),就是动态调整工作电压。不是所有时候都需要全速运行。系统空闲时,降点电压,省点电,很合理。
常见的电压缩放策略有三种:
- 动态电压频率调整(DVFS):根据负载动态调整电压和频率。负载高时升压升频,负载低时降压降频。这是最常用的策略。
- 自适应电压缩放(AVS):根据芯片本身的工艺偏差和温度,自动调整到最低工作电压。每颗芯片的体质不同,AVS可以榨出最后一滴功耗。
- 多级电压缩放:预设几个电压档位,比如1.0V、0.8V、0.6V。系统在不同状态间切换。实现简单,但灵活性不如DVFS。
我建议你在做电压缩放时,注意以下几点:
- 电压变化速率:电压不能突变,否则会引起电源噪声。一般要求电压变化率在1mV/us以内。
- 时序余量:降电压时,时序会变差。必须留足够的余量,防止时序违规。
- 电源管理单元(PMU):PMU负责生成和调节各域电压。它本身也是一个功耗源,设计时要考虑进去。
避坑指南:我曾经在一个项目里,DVFS策略写得太激进。电压降得太快,结果电源纹波过大,导致数字逻辑误翻转。从那以后,我每次做电压缩放都会加一个软启动(Soft Start)过程,让电压缓慢变化。
最后,给你一个电压缩放策略的决策树:
if (系统需要最高性能) {
使用标准库 + 1.0V电压域
开启DVFS,根据负载动态调整
} else if (系统处于中等负载) {
使用ULV库 + 0.7V电压域
固定频率,不做动态调整
} else if (系统处于休眠状态) {
使用ULV库 + 0.5V电压域
关闭大部分时钟,只保留唤醒逻辑
} else {
完全断电(Power Gating)
使用常开域(Always-On Domain)管理唤醒
}
嗯,这一章的内容就到这里。多电压域、ULV库、电压缩放,这三者结合起来,就是低功耗设计的核心武器。下一章我们会聊到电源门控(Power Gating)的具体实现,到时候再细讲。