CMOS电路中静态功耗主要是由漏电流引起的功耗。漏电流主要由以下几部分组成:
PN结反向电流 (PN-junction Reverse Current),由少数载流子漂移和在耗尽区产生电子/空穴对引起。
源极和漏极之间的亚阈值漏电流(Sub-threshold Current),亚阈值泄漏电流是晶体管应当截止时流过的电流。
栅极漏电流,包括栅极和漏极之间的感应漏电流(Gate Induced Drain Leakage),
栅极和衬底之间的隧道漏电流 (Gate Tunneling ),由于栅极氧化物隧穿和热载流子注入,从栅极直接通过氧化物流到衬底的电流,
随着工艺先进,晶体管阈值电压降低,漏电流增大,静态功耗增大。
静态功耗的计算公式:
动态功耗 = 翻转功耗 + 短路功耗
翻转功耗又称为开关功耗,是电路在开关过程中对输出节点的负载电容充放电所消耗的功耗
当电容Cload通过PMOS 管充电时它的电压从0升至VDD,此时从电源上吸取了一定的能量。该能量的一部分消耗在 PMOS 器件上,而其余的则存放在负载电容上。在由高至低的翻转期间,这一电容被放电,于是存放的能量被消耗在NMOS 管中。
翻转功耗的计算公式:
从上述公式中可以看出,如果想要减少功耗,可以:①降低电压;②降低反转率;③减少负载电容
短路功耗又可以称为内部功耗,主要原因是直接通路电流引起的功耗,即短路造成的。短路功耗是因为在输入信号进行翻转时,信号的翻转不可能瞬时完成,因此PMOS和NMOS不可能总是一个截止另外一个导通,总有那么一段时间是使PMOS和NMOS同时导通,那么从电源VDD到地VSS之间在短期内出现了一条直流通路,就形成了短路电流,
低功耗设计基础:深入理解Internal Power
在设计一个系统的时候,必须清楚功耗和性能的关系。也就是说,在开始设计时必须清楚地知道你的系统应用需要在得到尽可能高性能的基础上降低功耗,还是需要在尽可能低的功耗基础上提高性能,这对采用什么样的低功耗设计技术非常关键。
下图所示为基于低功耗反馈的前向设计方法。从图中可以看出,可以在五个层次上对系统的功耗进行优化,自顶向下分别是系统级优化,行为级优化,RTL级优化,逻辑级优化和物理级优化。
各层次优化的具体方法及优化效果如下图所示。
可以看到,层次越高的优化方法优化效果越明显。
体系结构级优化:多电压供电、多阈值电压、添加缓存
RTL级优化:门控时钟(对应是的降低反转率f)、减少毛刺
物理级优化:减少电容、衬底偏压
按照中学物理的计算公式,功率与电压和电流的乘积正相关。在芯片上计算功耗虽然没有这么简单,但是从原理上降低芯片电压仍然是降低功耗最直观最有效的方法。也正因为如此,当前大多数芯片的工作电压从最初的5V、3V一路下降,目前基本都在1V以下甚至0.5V以下。而随之而来的困难在于,随着电压的下降,标准单元的速度也会随之变慢,但是电子设备对处理速度亦即芯片频率的要求却越来越高。以移动设备为例,最初的芯片频率不过几十上百兆赫兹,而现今最快的手机SoC频率峰值已经超过2GHz。这方面也是每一代芯片升级背后所需要解决的技术难题之一。
(静态功耗和动态功耗的计算中都涉及到电压)
使用多阈值工艺可以在时序和漏电流之间进行一些折中。如下图所示,低阈值的标准逻辑单元具有速度快、漏电流大的特点,高阈值的标准逻辑单元具有速度慢、漏电流小的特点。所以在设计中可以在关键路径上使用低阈值的标准逻辑单元来优化时序,在非关键路径上使用高阈值的标准逻辑单元来优化漏电流。所以使用多阈值工艺可以大大减少系统的静态功耗.
这是当前芯片行业最常用也是最容易使用的设计方法之一。所谓Vth,指的是逻辑门的阈值电压。而阈值电压和功耗与速度存在如下关系:阈值电压越高,cell速度越慢,功耗越小;反之阈值电压越低,cell速度越快,功耗越高。
在实际应用中,一般采用的策略为:对于性能要求高的模块,或者频率比较高的部分,采用Vth比较低的cell,让setup更容易收敛;对于性能要求较低的模块,或者频率较低的部分,多采用Vth比较高的cell,让功耗更低。通过这种方法,可以实现在同一块芯片上,根据性能和功耗的不同要求而调整cell的使用,从而避免在不太重要的功能上浪费过多的功耗。
一颗SoC中可能包含很多功能模块如视频处理(DSP),音频处理(AUDIO),定位(GPS),游戏(GPU),存储(Memory)等,但大多数功能并不会同时开启,因此为了降低不用模块在等待状态下消耗的功耗,干脆就设计成在不用的时候把它们关闭。这就是Power Gating最初的想法。
最有效的降低功耗的手段莫过于电源关断了。其原因在于不论多低的电压,多小的电流,多慢的速度抑或多小的leakage,都不如将电源完全关闭来的彻底。
在正常工作状态,Sleep信号为低电平,高阈值MOS管处于导通状态;当处于睡眠状态时,Sleep信号为高电平,切断电源,并且由于采用了高阈值MOS管作为开关,可以有效地减少漏电流。
值得注意的是,一方面,由于模块的输入输出信号是与其他模块相连接的,很多情况下需要在处于睡眠状态的模块与非睡眠状态的模块之间的信号接口上添加隔离单元(Isolation Cell),这样在输出信号的模块断电情况下,没有断电的接收模块的输入信号仍然具有特定的驱动。另一方面,需要添加保持寄存器 (Retention Register)来保持一些特殊存储器件上的值,以保证电源开通时的正常功能。例如,当模块电源处于断电状态时,需要保存其中存储器中的值,就需要添加保持寄存器。
在Power Gating的基础上,还做如下考虑:
对于性能要求较高的CPU,GPU等模块,由于需求频率较高,在设计上可能采用较高的电压,而一些不太核心的模块如AUDIO,GPS等,可以采用相对低的电压来设计。这样一来,整颗芯片可能就会变成下面的样子:
在当前的设计流程中,一般使用基于模块的设计,这就使多电压设计成为可能。但电压的降低将使 MOS 管的翻转速度降低。可以根据应用场景让不同的模块在不同的电压下以不同的频率运行。
将衬底电压偏置,提高晶体管阈值。但阈值电压的升高会影响性能,使用动态偏置的方法,在工作模式下保持较小的偏置电压,在保持模式下加强偏置电压。
值得注意的是,由于MOS 管的体偏转需要时间,电路由等待模式转为工作模式的时间较长。
参考链接:
低功耗基础:Body Bias
随着如今芯片的规模和功耗越来越大,门控时钟被大量地用在芯片设计中,这是在 RTL级的低功耗优化技术。
门控时钟即用逻辑门控制电路模块时钟信号的通断,从而控制该模块的工作情况。
当芯片上的某一模块的功能不需要工作时,如芯片上的 USB 模块或 SPI 接口模块没有使用时,通常会将通往这些模块的时钟停下来。通过关闭空闲电路的时钟,可以大量减少消耗在时钟树上的和不工作的触发器上的功耗。
下图所示为一种简单的门控时钟电路结构,它由一个与门或者是或门组成。(“与”门或“或”门使用哪个取决于触发器的活跃沿)
不含有锁存器的门控时钟电路,虽然实现比较简单,但是我们无法确定EN的持续时间,如果EN的持续时间小于T/2(T位CLK的周期),那么就会产生门控无效的问题。
此外,还会引起时钟毛刺的产生:
当源时钟 CLK 为高电平时,如果CLK_EN为低电平,GCLK 将立刻变为低电平,结果一个时钟的下降沿提前出现,即产生一个类似于毛刺的不完整时钟信号,这会影响一些使用下降沿触发器的电路。同样的,当源时钟CLK为高电平时,如果 CLK_EN 变为高电平,GCLK将立刻变为高电平,造成一个时钟的上升沿提前出现,这会影响一些使用上升沿触发器的电路。总之,这类在门控时钟上出现的毛刺,对同步电路来说是非常致命的。
(使能信号的到来时间和离开时间是不确定的,导致)
对于简单使用与门的情况,在时钟信号位高电平的时候,使能端的变化会可能会导致毛刺的产生(因为高电平是与门的非控制值,低电平时控制值)。
为了避免过早截断时钟脉冲或误产生多个时钟脉冲(或时钟上的毛刺),正确的操作强制要求使能信号(EN)从时钟活跃沿(本例为上升沿)起持续到时钟不活跃沿(本例为时钟下降沿)止为一个常量。
基于锁存器的门控时钟的思想是设计中加入了一个电平敏感的锁存器,以在时钟活跃沿和不活跃沿之间保持使能信号不变,这样就无须依靠门控电路本身来满足这一要求了。如下图所示:
虽然基于 Latch 的门控时钟保证门控时钟周期完整、避免产生毛刺。但会产生亚稳态,避免产生亚稳态就把锁存器换成触发器。
(使用触发器就可以同伙时序约束来避免亚稳态的产生。)
集成时钟门控单元(Integrated Clock Gating Cell
在进行可测性设计的时候,如果要进行全扫描设计,则希望所有的触发器在扫描模式时都由个统一的同步时钟驱动。如果电路中存在门控时钟单元,则会使得产生的时钟 GCLK 不可控制。最简单的解决方法是在门控电路结构前加入一个或门,其输入为扫描测试模式的使能信号和门控时钟使能信号,如图10所示。在测试模式下,时钟的门控时钟单元将被旁路。
在时钟树的设计中,门控时钟单元应尽量摆放在时钟源附近,即防止在门控时钟单元的前面摆放大量的时钟缓冲器(Buffer)。这样,在利用门控时钟电路时钟时不仅能将该模块中的时钟停掉,也能将时钟树上的时钟缓冲器停止反转,有效地控制了时钟树上的功耗。如下图所示,在布局时将门控时钟电路的部件摆放在一起,并摆放在时钟源 GCLK 附近,停掉时钟后,整个时钟树上的缓冲器(CTS)和时钟树驱动的模块都停止了翻转。通常的 SOC 设计中,门控时钟单元会被做成一个硬核或标准单元,称之为集成时钟门控单元(Integrated Clock Gating Cell),也就是 ICG 技术。
低功耗设计方法