一、功耗概念
1.Dynamic power
(1).switching power
动态功耗:如图中,
CMOS
反向器输出在
0,1
之间转换时,对负载电容的重放电过程。
(2).internal power
内部功耗:输入信号处于中间电压时,有个短时间的功耗,此时PMOS和NMOS都可以导电,此时
的功耗就是
internal power
。

2.Static power(Leakage power)
静态功耗:是由于在没有开关活动时的功耗,分为三类:P-N junction leakage,Gate leakage,Subthreshold leakage。
三、低功耗方法
1.clock gating
时钟门控,对于选定的寄存器,如果某段时间保存的值不在改变。那么可以暂停其时钟信号。关闭时钟可以避免每个cycle都去重载寄存器。主要挑战是:使用在合适的地方、需要创建逻辑在恰当时间打开或关闭时钟。

2.使用格雷码编码手段。
3.直接降低供电电压(Supply Voltage Reduction)
但同样会降低开关速度,而且晶体管阈值电压也必须降低,带来抗噪能力(noise immunity),瞬开电流(crowbar currents),亚阈值漏电(subthreshold leakage)等问题
4.多电压域的标准单元(Multi—Vt Library Cells)
标准单元库可以提供具有不同阈值电压的标准单元来实现一个逻辑函数。
5. 多电压设计(Multi-Voltage Design)
不同chip上不同的部分可能有不同的速度需求。比如CPU和RAM需要比周边模块(peripheral block)工作的更快。那么CPU和RAM可以工作在高电压域,周边模块工作在低电压域。

当然多个电压域也带来一些复杂性和额外的开销。必须提供额外的设备引脚(device pins)来提供芯片电压,并且电网(power grid)必须将每个电压源分别分配到适当的模块。当逻辑信号(logic signal)从一个电压域到另一个电压域时,需要使用level-shifter cell。

如下图,高电压域到低电压域时插入了level-shifter(低到高使用得更多)。level-shifter cell需要两个电压供电,分别对应输入和输出的电压,如下图所示。 
6.门控电压域(Power Gating)
Power gating是指某个时间段内chip内不使用的block可以完全掉电(shut down),使用是在上电。比如在手机待机时,语音功能相关的block可以掉电。

当然这种方法也会带来一些复杂性和额外开销。比如power gating需要引入power switch,isolation-cell,retention registers。
Power swich:多阈值CMOS(MTCMOS)技术的High-Vt晶体管用于功耗开关(power switch)。 比如下图,高压PMOS header switch放置在VDD和模块(需要掉电的block)的供电pin之间(supply pins)。高压NMOS footer switch放置在VSS和模块(需要掉电的block)的接地pin之间(ground pins)。当然下面这种是粗粒度的策略(coarse-grain strategy),因为power switch控制了整个block。而细粒度策略(fine-grain strategy)则是可能每个标准单元都有自己的power switch,但是这种策略需要更多面积。

Isolation cells
:用于掉电的
block
和没掉电的block
之间。掉电后的
block
输出信号是未知的,
这样可能导致一些接收这些值的
block
(未掉电)出现问题。
如下图所示。左边掉电,右边一
直上电,将
P_UP
拉低,那么
isolation cell
会将掉电的
block
输出的信
号
clamp
成一个
常态(
0,1
)给
右边
block
。注意
,
在
block掉电时isolation cell
是必须有电的。
Enable level
shifter:power gating可以和多电压相结
合。不同的
block
可以有不
同的电压,并且
可以独自掉电。
此种情况,接口
上就需要
level
shift
(
lS
)和
isolation
两种
cell
了。这两种
cell
可以结合成
一种
cell,
enable level
shifter
(
ELS
)
。
Retention register
:
对于掉电
block
,重新
上电时需要
恢复到掉电
之前的状态
。有一种方
法实现这种
策略,比如
可以在掉电
之前将
block
的寄存器内
容复制到
block
外面的
RAM
中,上电
后再复制回
block
中的寄
存器中。
另一种策略
是使用
retention
register
。
retention
register
可
以在下电期
间保留数据
,在下电前
将数据保存
到
shadow
registers
(也称为气
泡寄存器,
bubble
register
)
。上电时
重新将寄存
器值从
shadow
register
中
载入到
main寄存器中。
注意,
shadow register
必须是
always on
的。如下所示,是一种
retention
register。
retention register
会带更多的面积上的
消耗,而且它需要一个
always on
的电源
供电。当然这种方式恢复
block
状态相比
其他策略来说比较快,也比较简单。
7.动态(自适应)电压和频率调整(Dynamic/Adaptive Voltage and Frequency Scaling,DVS,DVFS,AVS,AVFS)
多电压(
multi-voltage
)的原理
可以被扩展到,允
许在芯片的运行过
程中改变电压,以
匹配当前的工作负
载。比如
chip
在处
理常规计算需要的
电压和频率就比较
低,但是在做
3D
渲
染时需要的电压和
频率就比较高。运
行过程中改变电压
和频率,以匹配当
前的工作负载。这
就是动态电压和频
率调整。
自适应是指在运行
过程中自动完成调
节,不需要外部干
预。
芯片和电压电源可以被设计成支持
多个等级,或者是
一个连续的范围。
动态电压调整需要
一个多电平功率电
源(
multilevel
power
)和一个逻
辑block来确定用于给
定任务的最佳电压
电平。这种低功耗
技术,对设计、实
现、验证和测试带
来挑战。
动态电压调整
(
DVS
,
DFS
)可以
与电源门控技术(
power gating
)
相结合,使设计中
的每个
block
可以
在不同性能要求下
,工作在多个电压
水平,或在根本不
需要时完全关闭。

8.低电压待机(Low VDD standby)
0.6v低电压block是always on的,其他block都可以掉电。然后可以通过此block将其他block唤醒。

一.VCS nlp
vcs nlp(native low power)是vcs的low power仿真工具,用来仿真并debug 低功耗设计的bug。
vcs nlp仿真需要的文件:Design(Verilog/VHDL, RTL, gate-level netlist),UPF文件(Unified Power Format),验证平台文件(vcs nlp兼容常规验证流程中的验证平台,Testbench)

二.upf+vcsnlp+verdi实例
low power-upf-vcsnlp(二)
参考: VCS Native Low Power (NLP)User Guide.