简介:这份文档是《Low Power Methodology Manual For System-on-Chip Design》的中文翻译,面向从事低功耗芯片设计的工程师与相关专业学习者,帮助其系统理解片上系统低功耗设计的基本概念、功耗来源与工程化解决方案。内容从功耗问题起源切入,覆盖动态功耗中的开关功耗与短路功耗、静态功耗中的亚阈值漏电、栅电流、IGIDL 与结反偏电流,并延伸到 clock gating、门级功耗优化、Multi-VDD、Multi-Vt、power gating、VTCMOS、Stack Effect 及长沟道器件等常用低功耗技术,兼顾公式推导与设计流程层面的考量。资源包共 1 个 doc 文件,大小约 178KB,篇幅精炼,适合作为入门梳理与设计查阅的参考材料。目前已有 1237 人学习,读者可借此建立从功耗组成分析到技术选型的完整认知框架,为低功耗架构设计与后端实现提供思路支撑。
1. 低功耗 SoC 设计:一张从功耗公式到门控电源的全景地图
很多人复习低功耗 SoC 设计时,第一反应是背公式:动态功耗正比于 CV²f。但真正让这门课变难的,从来不是公式本身,而是公式背后那条越走越长的设计链路——从工艺漏电的物理机制,到 RTL 级的门控时钟插入,再到后端的多电压域划分、电平移位器摆放、电源开关阵列设计。这条链路上任何一环理解不到位,复习时就只能靠死记硬背,做题或面试时一追问就露馅。
这份 Low Power Methodology Manual 的中文翻译笔记,恰好把这条链路完整串了起来:先讲功耗从哪来(动态与静态的物理来源),再讲有哪些标准手段(clock gating、门级优化、Multi-VDD、Multi-Vt),最后深入到真正复杂的门控电源(power gating)与多电压设计。它适合已经学过数字集成电路基础、正在系统梳理低功耗方法学的人,也适合备考时想快速建立知识框架、查漏补缺的读者。下面按模块把这份笔记的骨架拆开讲。
2. 功耗来源拆解:动态与静态两条主线怎么分
低功耗设计的所有手段,本质上都是在跟两个公式较劲。把功耗来源拆清楚,后面每一种技术你都能对上号——它到底在压哪一项。
2.1 动态功耗:开关功耗与短路功耗
CMOS 电路工作时的功耗分两部分。开关功耗是电路翻转时对负载电容充放电产生的,短路功耗是输入翻转瞬间 PMOS 和 NMOS 同时导通形成的直通电流。原文给出的公式是:
Pdyn = (CL * Vdd^2 * Ptran * F) + (ttran * Vdd * Ipeak * F)前半部分是开关功耗,后半部分是短路功耗。参数含义如下:
| 参数 | 含义 | 降低手段 |
|---|---|---|
| CL | 电路总负载电容 | 减小连线电容、优化布局 |
| Vdd | 工作电压 | 降压(平方关系,收益最大) |
| Ptran | 工作电路所占比例 | 门控时钟减少无效翻转 |
| F | 工作时钟频率 | 降频、DVFS |
| ttran | PMOS/NMOS 同时导通时间 | 改善输入斜率,短路功耗可忽略 |
| Ipeak | 短路电流 | 同上 |
梳理下来会发现一个关键判断:只要 gate 输入斜率足够小,ttran 足够短,短路功耗一般可以忽略。所以复习时动态功耗的主战场就是前半部分——Vdd 是平方项,降压收益最大;F 和 CL 是线性项;Ptran 则对应“让不工作的电路别翻转”,这正是门控时钟的立足点。
2.2 静态功耗:四种漏电流的来龙去脉
静态功耗是电路不翻转、只供电时漏电流造成的功耗,分四部分:
- 亚阈值漏电流 Isub:从 Drain 经弱反型层流向 Source 的电流,是深亚微米下的主要矛盾。
- 栅电流 Igate:隧道效应和热载流子效应导致 Gate 经薄栅氧流向 Sub 的电流。
- 栅致漏电流 IGIDL:Drain 端强电场引起的 Drain 到 Sub 的电流。
- 结反偏电流 Irev:反偏结耗尽区少子漂移和电子空穴对产生形成的电流。
这里最容易卡住的是 IGIDL。原文作者也专门查了资料:工艺尺寸降到 90nm 以下后,Drain 端形成超强反偏电场,而 Gate 与 Drain 的 overlap 区域 Sub 掺杂浓度偏大(为防止 punchthrough),容易发生 band-band tunneling 或 avalanche,于是形成较大的 Drain 到 Sub 漏电流。这个解释比教材上干巴巴的定义好记很多。
深亚微米下有个连锁反应必须记住:Vdd 降低,为提高性能要同时降低 Vt,而 Isub 与 Vt 是指数反比关系,Isub 会急剧增大。原文给的数据是 45nm 下 Isub 约为 90nm 下的 6.5 倍,且 Isub 随温度上升指数增加。90nm 工艺栅氧只有几个 nm 厚,Igate 可达 Isub 的 1/3,65nm 下可等于 Isub。这组数字是复习时的“锚点”,能帮你判断不同工艺节点下静态功耗的主导项。
2.3 降低静态功耗的几条非主流路径
除了后面重点讲的 Multi-Vt 和 power gating,原文还列了三种方法,复习时容易一带而过,但概念题常考:
- VTCMOS:在 Sub 上加反偏电压提高 Vt,减小 Isub。代价是额外两条 power rails、增加建库难度,小尺寸下效果也不明显。
- Stack Effect:采用叠加 gate,若两个输入都关闭,流过两 gate 的静态电流很小。理论上应在关时钟前把所有 gate 输入置为关闭,但现实中不可实现。
- 长沟道器件:有效降低静态电流,但影响动态响应、增加栅电容对动态功耗不利。适合翻转次数少或性能要求不高的地方。
提示:这三种方法在考试里常以“为什么不能大规模使用”的形式出现,记住各自的副作用比记住名字更重要。
3. 四种标准低功耗技术:工具已经帮你做了多少
这一层是工程中最常用的手段,很多已被 EDA 工具良好支持。复习重点不是“知道有这四种”,而是搞清楚每种技术的作用对象、实现方式和副作用。
3.1 门控时钟:省功耗还省面积的双赢
门控时钟的基本思想很直白:寄存器不工作(使能无效)时把 clock 关掉,clock tree 上的 buffer 和 register 都不再产生动态功耗。单元库通常提供专门的 gate clock cell,能检查 setup/hold violation,工具保证时钟上不出现 glitch。
两种门控电路结构要分清:一种是 latch 加逻辑门(and/or),另一种只用逻辑门。全部采用同相时钟时最好用第一种,latch 保证逻辑门输出无 glitch;采用双相时钟时第二种也可,但同样要用 STA 报告 setup/hold violation。
DC 中自动插入的命令是复习高频点:
set_clock_gating_style -sequential latch \ -positive_edge_logic {and} \ -negative_edge_logic {or} \ -setup 0.5 -hold 0.5 \ -minimum_bitwidth 3 insert_clock_gating -module_level-sequential latch指定用基于 latch 的门控电路;-positive_edge_logic和-negative_edge_logic分别指定上升沿、下降沿触发寄存器所用的门控单元;-setup/-hold给约束;-minimum_bitwidth 3表示至少 3 个寄存器共用一个门控单元才划算(缺省值就是 3);-module_level让 DC 自动替换 RTL 中手动插入的门控单元为工具认为安全的版本。注意insert_clock_gating要在compile前执行。
效果方面,原文例子说可节省 50% 以上动态功耗,面积还能减小约 20%——因为一组寄存器的 EN 电路被一个 clock enable 电路取代,且 gate cell 引入的 delay 能减少 clock tree 上串入的 delay cell 数量。这个“省功耗还省面积”的双赢结论,是面试里很常见的追问点。
3.2 门级功率优化:对设计者透明的自动优化
这一级优化由工具自动完成,对设计者和后端工程师透明。基本思想包括:把翻转频率高的 net 放在 path 早期与低翻转率 net 运算;缩短高翻转率 net 的传播路径;高翻转率 net 接低输入电容的门输入端,低翻转率 net 接高输入电容的门输入端。复习时知道“它存在、它透明、它的三条基本策略”即可,不必深挖。
3.3 Multi-VDD:按性能需求分配电压
SoC 中不同模块按性能要求采用不同电源。原文例子:Cache RAM 要跑最高时钟,分配 1.2V;CPU 次之,因为系统性能还取决于高速 RAM;其余电路工作在最低频,用 0.9V。效果最好,但对设计流程影响大:模块间要加 power rails 和 level shifters,工艺库要提供各电压下单元的 delay 信息,接口时序要严格保证。这部分和后面第 4 章的多电压设计是同一主题的不同深度,复习时可以合并理解。
3.4 Multi-Vt:双阈值流程的顺序问题
降低 Vt 是双刃剑:提高动态电流即提高速度,但 Vt 与静态漏电成指数反比。所以性能要求高的电路用 low Vt 管子,性能要求不高、频率低的电路用 high Vt 管子。原文提到双 Vt 设计流程:追求最高性能时,第一遍用 low Vt 库实现,再用 high Vt 库优化,把非关键路径的 cell 替换为 high Vt cell,在满足性能的同时功耗最低;反之则顺序相反。这个“先快后省”的流程顺序是易考点。
4. 多电压设计:电平移位器与上电顺序的坑
动态功耗与电压平方成正比,静态功耗也正比于电压,所以低电压策略的原则就是:功能、性能允许的情况下尽量降低工作电压。基本形式是把芯片划分为不同电压域(Power Domain),高性能部分在高电压域,低性能要求在低电压域,平时不工作的模块甚至可以关断。
4.1 四种电压缩放技术的层级关系
按复杂性递增,原文分了四类,这个层级关系要能默写:
| 技术 | 全称 | 特点 |
|---|---|---|
| SVS | 静态电压缩放 | 各模块固定电源电压 |
| MVS | 多级电压缩放 | 可在两级或多级电压间切换 |
| DVFS | 动态电压频率缩放 | 电压级数更多,调整粒度更细 |
| AVS | 自适应电压缩放 | 带控制环路,自动实时调整 |
MVS 是多电压技术的代表,原文以它为切入点讲共性问题。多电压带来的设计挑战有五条:电压域间信号传递需加 level shifter;各电压下时序都要满足,STA 复杂度增加;电源网格布局和接口单元电源布线要仔细考虑;板级需要更多 voltage regulator;各模块上电/下电顺序要设计以避免死锁。
4.2 电平移位器:为什么必须插、插在哪、怎么影响 STA
这是本章最核心的易错区。先回答“为什么需要”:信号从高电压域传到低电压域(high to low)理论上 driver 可直接连输入 gate,但这样目标电压域所有单元都要针对高压输入重新建库做 timing 建模,工作量巨大;插入专用 high to low 单元则只需对它建模,把内部单元隔离成单独电压域。low to high 除了同样问题,还有功耗问题:低压 driver 直接驱动高压 gate,压差大时负载 P 管不能完全关断,造成较大漏电流。
关键约束:level shifter 是模拟电路,只能单向(high to low 或 low to high),双向需要特殊器件不易实现。因此划分电压域时,相邻电压域的关系必须确定——一个域工作时电压只能永远高于或永远低于相邻域,不能一段时间高一段时间低。这条约束直接决定了电源域划分的合法性。
插入判据也要记:工程上一般取压差在 VTPMOS 基础上留 10% VDDH 余量,即 VDDH − VDDL > VTPMOS − 0.1×VDDH 时,就需要插入 low to high level shifter。
对 STA 的影响有两层:一是 level shifter 带来极大延迟,critical path 和 CTS 综合要充分考虑;二是各模块电压不同且动态变化,综合、STA、PR 时要同时对所有可能电压情况做约束,电路实现要同时满足各种电压模式下的时序。对 PR 的影响主要是 placement 和电源 routing,原文建议 level shifter 一律放在负载端 power domain,因为其输出负载相对输入更大;若两个相关 power domain 距离远、中间隔着另一个域,可能还要在中间插驱动端 driver。
4.3 上电过程与过冲控制
MVS 对系统设计的影响有两方面。上电过程:各模块由各自电压源驱动,模块间有上电顺序问题,一般 CPU 等周边模块完全上电完成后再启动,整个过程包括上电、PLL 稳定、reset 完成,复杂情况下还需握手协议。上电过冲:模块电压工作中会动态变化,要控制电压上升下降时间,避免 overshoot 和 undershoot,否则异常电压可能造成电路自锁甚至损坏。由于电压控制一般由 CPU 控制,电压控制软件要集成进系统软件。
5. 门控电源:从睡眠唤醒到隔离与保持的完整链路
降低功耗最直观的思想就是不用时把电源关掉,动态静态功耗全没了。但思想简单、实现复杂,而且和门控时钟这类对设计者透明的技术不同,门控电源需要系统设计者根据实际情况权衡。
5.1 睡眠与唤醒的功耗状态图
两个术语先记住:Sleep 是使系统进入低功耗(关断)模式,Wake 是使系统回到工作模式。Sleep 事件后系统功耗并非立刻进入最小值,因为电路工作状态特性和电源开关非理想性;Wake 事件到来后,由于等待复位和时钟信号稳定,系统也要延时一定时间才进入工作状态。这个“进得慢、出得也慢”的过渡特性,是后面所有时序设计的出发点。
门控电源在不同子系统中的应用考虑:带缓存的 CPU 长时间不工作,适合门控电源,但唤醒一般由中断触发,要预留唤醒延迟(可能需要更深的 FIFO 或特定时隙),且掉电后 cache 内容消失,上电填满 cache 也耗能,净节省是关断节省减去恢复消耗;外设系统作息规律好,由驱动软件或 OS 电源管理模块规划上下电,最好由外设内部处理状态保存加载;多核系统中任务完成的核可关电源,再次上电完全复位重新执行,需要自适应关断算法动态增减睡眠核数量。
5.2 电源开关网络:header 还是 footer
两种关断方式:外部独立电源直接关断,彻底但耗时长耗能多;内部电源管理,通过 power-switching network 控制电路与 VDD 或 VSS 的连通,适合短时间关断。
header(控 VDD)还是 footer(控 VSS)是必考判断。两头都控不可接受,会拉低中间功能逻辑电平影响性能。支持 header 的三个理由:片外电源控制只能用 header,因为板上地电平公共;片内外都有控制时片内也用 header,功能一致便于验证分析;片内多电压域间有 level shifter(一般共地),不宜开关 VSS。且关断 VDD 后内部节点电平都被拉到地,方便系统分析。footer 的支持理由来自电气特性(原文放在后续章节分析)。建议是不要 footer switch 与外部电源开关或多电源设计混用,会带来复杂的功能、时序和功率分析。
开关网络控制的关键是抑制过冲电流(in rush current),否则 power rail 上出现电压尖峰会破坏其余模块。成百上千个开关要分时打开:或用菊花链让 power on 信号经 buffer 逐级传递,或由控制器发多个 power on 信号分时打开。全部打开需要时间,开关网络要给控制器一个确认信号表示上电完成,控制器才能继续下一步。
5.3 隔离单元:钳位到 0 还是 1
模块断电后内部节点电位不一定被拉向高或低,而是上下漏电流形成平衡,中间节点长时间处于中间电平。若不隔离,下电模块输出会让相邻上电模块的 N 管 P 管常开,产生大量直通电流(Crowbar current)。所以要在接口加隔离器件,由门控电源 controller 控制。
三种功能隔离单元:钳位到 0、钳位到 1、锁存到最近值。库中隔离单元经精心设计,控制端使能时输入悬空也不会有串通电流和很小泄漏,且能被综合工具识别、不被逻辑优化。缺点是延时较大,高速接口(如高速缓存访问)不能接受;替代方案是加上拉/下拉管,但会引入端口多驱动问题,要由控制器控制下电和隔离使能的顺序避免竞争,且上电动作先于撤销隔离使能会造成驱动竞争,测试也困难。原文推荐尽量用第一种,除非 timing 有特殊要求。
钳位值的选择是经典易错点:一般要避免钳位值被接口模块误认为有效信号,电路多用高有效信号,所以隔离单元接口钳位为 0 较合适;reset 信号一般低有效(全部上电前所有信号都是低电平),所以 reset 要钳位为 1。相邻两模块都可独立下电时,若输入模块下电而输出模块隔离接口钳位为 1,会有从输出到输入的漏电流,此时所有信号(reset 除外)均应钳位到 0。结论:建议一律采用高有效信号、低有效 reset。
5.4 状态保持与恢复:扫描链 vs 保持寄存器
系统下电后寄存器状态全消失,要快速高效保持恢复有三种方法:软件读写寄存器、扫描链串入串出、基于 retention register。软件方式速度慢、总线竞争导致时间不可预测、增加软件工作量,一般只讨论后两种。
扫描链方式利用内部扫描链,下电时把寄存器状态扫出到片内或片外 RAM,上电时再扫回,由控制器控制。不增加太多面积,但问题不少:扫描链综合后才插入,而 RTL 级就要验证控制器,寄存器数量和链长要参数化;需要多条链并行加快速度,一般取 8 条且长度相同,可能要加附加寄存器平衡;扫描时寄存器同时翻转,最坏情况动态电流过大可能造成破坏内部状态的 IR Drop。适合长时间断电的子系统,存完状态可完全关掉片外电源。
保持寄存器方式用带“影子”寄存器的单元替代标准寄存器,下电时影子保存主寄存器状态,上电时读回,影子永远上电。代价是面积:一般大于原电路 20%,某些情况下防开关瞬态电压尖峰破坏保存状态的保护带会使额外面积超过 50%。还需要更复杂的电源控制器,状态机必须定义保存和恢复时序,且影子寄存器速度较慢。
6. 易错点排查:这五处最容易在复习时翻车
这一章专门收那些“看的时候觉得懂了、一考就错”的地方。每条按“易漏点 → 为什么漏 → 怎么补”展开。
易漏点一:把短路功耗当成可以完全忽略。为什么漏:公式后半部分常被一句“斜率够小就可忽略”带过,读者就记成“短路功耗不存在”。怎么补:记住前提是 ttran 足够短,输入斜率差时短路功耗会显著上升,这也是为什么门控单元和 buffer 设计要关注转换时间。
易漏点二:level shifter 可以双向。为什么漏:直觉上电平转换应该两个方向都行。怎么补:牢记它是模拟电路、只能单向,由此推出相邻电压域高低关系必须固定,这是电源域划分的硬约束,也是很多设计评审的翻车点。
易漏点三:隔离单元钳位值一刀切。为什么漏:只记住“钳位到 0”或“钳位到 1”其中一个。怎么补:按信号有效性分——普通高有效信号钳位 0,低有效 reset 钳位 1;两模块都可独立下电时除 reset 外全钳位 0。把这三条场景列成小表贴在笔记里。
易漏点四:header 与 footer 混用。为什么漏:只记“header 更常用”,忘了为什么。怎么补:记住三个支持 header 的理由和“不要 footer 与外部电源开关或多电源设计混用”的建议,理解混用会增加功能、时序、功率分析复杂度。
易漏点五:保持寄存器的面积开销只记 20%。为什么漏:只记常规值,忽略保护带场景。怎么补:记住常规大于 20%、加保护带可超 50%,并理解这是“不可避免”的开销,答题时写出区间比写单点更稳。
注意:这五条里,第二、三条在多电压和门控电源两章交叉出现,复习时容易只在一章里记,建议合并成一张“接口单元约束表”统一背。
7. 复习收口:一张自检清单和我的查漏习惯
把这份笔记过完,最后落到可执行的自检上。下面这张清单按“能不能默写/能不能解释/能不能判断”三档设计,复习时逐条打勾,比通读一遍有效得多。
| 模块 | 自检项 | 达标标准 |
|---|---|---|
| 功耗来源 | 动态功耗公式及四个可调参数 | 能默写并说出每个参数对应的技术 |
| 功耗来源 | 四种漏电流及 IGIDL 成因 | 能解释 band-band tunneling 那条链 |
| 标准技术 | 门控时钟两种电路结构及适用时钟 | 能说出 latch 方案为何防 glitch |
| 标准技术 | DC 插入命令各选项含义 | 能解释 minimum_bitwidth 为何缺省 3 |
| 多电压 | SVS/MVS/DVFS/AVS 层级 | 能按复杂度排序并各举一例 |
| 多电压 | level shifter 插入判据 | 能写出 VDDH−VDDL 与 VTPMOS 的关系式 |
| 门控电源 | header vs footer 三个理由 | 能完整复述并说出混用风险 |
| 门控电源 | 隔离单元钳位规则 | 能按三种场景分别给出钳位值 |
| 门控电源 | 扫描链恢复的四个问题 | 能说出链长参数化与 IR Drop 风险 |
查漏补缺的具体做法,我自己的习惯是“反向出题”:合上笔记,针对每个模块问自己一个“为什么不能反过来”的问题——为什么 level shifter 不能双向、为什么两头都控电源不行、为什么隔离单元不推荐上拉下拉管。凡是答不顺的,就回到对应小节把原文那句判断重新读一遍,而不是重新通读整章。这个方法对门控电源这种概念密集、细节多的章节尤其管用,因为它的难点不在计算,而在约束之间的相互牵制。
另一个习惯是把所有“数值型结论”单独抄一页:45nm 下 Isub 是 90nm 的 6.5 倍、Igate 在 65nm 下等于 Isub、门控时钟省 50% 动态功耗和 20% 面积、保持寄存器面积开销 20% 到 50%、扫描链取 8 条、minimum_bitwidth 缺省 3。这些数字是选择题和简答题的高频命中区,集中背比散落在各章效率高得多。
这份中文翻译笔记的价值,就在于它把从公式到门控电源的整条链路按“概念—技术—实现—验证”的顺序铺开,中间还夹着原作者踩过的疑问(比如 IGIDL 到底怎么来的、双 Vt 流程工具怎么支持),读起来像一份带批注的复习底稿。如果你正在系统梳理低功耗方法学,或者备考时需要一份能直接对照查漏的框架,这份笔记值得收进你的资料库,按上面的清单逐条过一遍,比零散刷题扎实得多。从那以后我每次复习这类方法学文档,都强制先画一张“公式—技术—约束”的三列对照表再往下读,希望这个习惯也能帮到你。
本文还有配套的精品资源,点击获取