PCB低功耗基础理解以及设计
2019-07-14 06:57发布
生成海报
芯片功耗的问题最近几年得到了越来越多的重视,主要来源于以下几个方面:
1、90nm以下,随着设计流程的发展,芯片的集成度达到了上千万门级。一颗最顶级的芯片总功耗可以达到惊人的
100-150W(可以煮鸡蛋了),单位面积功耗可以达到50-75W/cm^2,而局部热点的功耗更大。这就产生了芯片封装
成本、电源成本和可靠性问题,估计还要有大得像砖头一样的散热片。
2、对于需要电池供电便携式设备和无源芯片类(非接触电子标签)来说,功耗则意味着电池寿命和工作距离。
现象一:我们这系统是220V供电,就不用在乎功耗问题了
点评:低功耗设计并不仅仅是为了省电,更多的好处在于降低了电源模块及散热系统的成本、由于电流的减小也减少了电磁辐射和热噪声的干扰。随着设备温度的降低,器件寿命则相应延长(半导体器件的工作温度每提高10度,寿命则缩短一半)
现象二:这些总线信号都用电阻拉一下,感觉放心些
点评:信号需要上下拉的原因很多,但也不是个个都要拉。上下拉电阻拉一个单纯的输入信号,电流也就几十微安以下,但拉一个被驱动了的信号,其电流将达毫安级,现在的系统常常是地址数据各32位,可能还有244/245隔离后的总线及其它信号,都上拉的话,几瓦的功耗就耗在这些电阻上了(不要用8毛钱一度电的观念来对待这几瓦的功耗)。
现象三:CPU和FPGA的这些不用的I/O口怎么处理呢?先让它空着吧,以后再说
点评:不用的I/O口如果悬空的话,受外界的一点点干扰就可能成为反复振荡的输入信号了,而MOS器件的功耗基本取决于门电路的翻转次数。如果把它上拉的话,每个引脚也会有微安级的电流,所以最好的办法是设成输出(当然外面不能接其它有驱动的信号)
现象四:这款FPGA还剩这么多门用不完,可尽情发挥吧
点评:FGPA的功耗与被使用的触发器数量及其翻转次数成正比,所以同一型号的FPGA在不同电路不同时刻的功耗可能相差100倍。尽量减少高速翻转的触发器数量是降低FPGA功耗的根本方法。
现象五:这些小芯片的功耗都很低,不用考虑
点评:对于内部不太复杂的芯片功耗是很难确定的,它主要由引脚上的电流确定,一个ABT16244,没有负载的话耗电大概不到1毫安,但它的指标是每个脚可驱动60毫安的负载(如匹配几十欧姆的电阻),即满负荷的功耗最大可达60*16=960mA,当然只是电源电流这么大,热量都落到负载身上了。
现象六:存储器有这么多控制信号,我这块板子只需要用OE和WE信号就可以了,片选就接地吧,这样读操作时数据出来得快多了。
点评:大部分存储器的功耗在片选有效时(不论OE和WE如何)将比片选无效时大100倍以上,所以应尽可能使用CS来控制芯片,并且在满足其它要求的情况下尽可能缩短片选脉冲的宽度。
现象七:这些信号怎么都有过冲啊?只要匹配得好,就可消除了
点评:除了少数特定信号外(如100BASE-T、CML),都是有过冲的,只要不是很大,并不一定都需要匹配,即使匹配也并非要匹配得最好。象TTL的输出阻抗不到50欧姆,有的甚至20欧姆,如果也用这么大的匹配电阻的话,那电流就非常大了,功耗是无法接受的,另外信号幅度也将小得不能用,再说一般信号在输出高电平和输出低电平时的输出阻抗并不相同,也没办法做到完全匹配。所以对TTL、LVDS、422等信号的匹配只要做到过冲可以接受即可。
现象八:降低功耗都是硬件人员的事,与软件没关系
点评:硬件只是搭个舞台,唱戏的却是软件,总线上几乎每一个芯片的访问、每一个信号的翻转差不多都由软件控制的,如果软件能减少外存的访问次数(多使用寄存器变量、多使用内部CACHE等)、及时响应中断(中断往往是低电平有效并带有上拉电阻)及其它争对具体单板的特定措施都将对降低功耗作出很大的贡献。
功耗的组成:
功耗分为动态功耗和静态功耗两大部分。
动态功耗是电路在工作时(翻转时)所消耗的能量。对于CMOS电路来说,它又分为开关功耗和短路功耗。开
关功耗为电路翻转时对负载电容充电的功耗,短路功耗为输入翻转时,PMOS和NMOS同时打开的瞬间电流形成的功
耗。用公式描述可写为:
Pdyn = (CL * Vdd2 * Ptran * F) + (ttran * Vdd * Ipeak * F)
其中,CL为电路总负载电容;Vdd为工作电压;Ptran为工作电路所占比例;F为工作时钟频率;ttran为PMOS,
NMOS同时导通时间;Ipeak为短路电流。
公式中前半部分为开头功耗,后半部分为短路功耗。一般来说,只要gate输入斜率足够小,也就是ttran足够短,
短路功耗一般可以忽略。
从公式中可以看到降低动态功耗的思路,无非是从Vdd、F、CL和降低gate翻转次数的方向出发。由此会带来一
系列架构设计上、设计流程上、时序分析上、电路设计上、后端布局上的考虑,以及由于工艺的发展带来的一系
列问题。在后续章节中会详细讨论这些内容。
再来说说静态功耗。静态功耗是电路在没有翻转时,只有供电的情况下,晶体管中漏电流造成的功耗。根据重要
性可以分为以下四个部分:
1、
亚域值漏电流Isub: 从Drain经过弱反形层流向Source的电流
2、
栅电流:Igate: 由于隧道效应和热载流子效应,由Gate经薄栅氧流向Sub的电流
3、
由Gate引起的Drain电流IGIDL:由于Drain端的强电场引起的由Drain流向Sub的电流
4、
结反偏电流Irev:反偏结耗尽区少子漂移和电子空穴对产生形成的由Drain、Source到Sub的电流。
其余电流还好理解,就是IGIDL没搞清楚是怎么来的。查了一些资料,看起来应该是这样形成的,是由于工艺尺
寸降到90nm以下后,在Drain端会形成超强的反偏电场,而在Gate和Drain的overlap区域,Sub的参杂浓度偏大
(为了防止punchthrough),在这里会容易发生band-band tunneling或者avalanche,因此会形成较大的Drain到
Sub的漏电流。
深亚微米下,Vdd降低,为了提高性能会同时降低管子Vt,而Isub和Vt是指数反比关系,会造成Isub急剧增大。
45nm下Isub会是90nm下Isub的6.5倍。同时Isub也会随温度上升指数增加。
90nm工艺下,栅氧厚度只有几个nm(几个原子的厚度),栅氧的隧穿电流Igate在90nm下可以达到Isub的1/3,在65nm下可以等于Isub电流。
降低静态功耗的方法:
有几种方法可以降低静态功耗,其中Multi-Vt和power gating的方法后面会详细介绍。其它还有VTCMOS、Stack
Effect和Long channel器件的方法。
VTCMOS(Variable Threshold CMOS)是在SUB上加上一个反偏电压,从而提高管子的 VT,以减小Isub。这样会
额外增加两条power rails,增加了建库的难度,而且在小尺寸下,这种作法的作用也不明显了。
Stack Effect就是采用叠加的gate,如果叠加的gate中有两个输入都是关闭状态,则流过两个gate的静态电流
会很小。在理论上,应该在关闭时钟前将所有gate输入置为关闭状态,但在现实中,这是不可实现的。
长沟道器件:长沟道器件可以有效降低静态电流,但同样会影响动态响应,降低电路性能。同时长沟通也会增
加栅电容,对动态功耗不利。因此可以考虑在开头次数较小或者对性能要求不高的地方采用长沟器件。
四种低功耗技术,clock gating, gate level power optimization, Multi-VDD, Multi-Vt。
1、 clock gating
门控时钟的基本思想是在寄存器不工作时(使能信号无效时),把clock关掉,从而clock tree上的buffer及
register都不会再有动态功耗。现在单元库中会有专门提供用于gate clock的cell,这种cell可以检查
setup/hold的violation,工具可以保证时钟上不会出现glitch。如果库中没有这样的单元,也可以手动的在RTL
中插入门控电路,或者在DC中用命令自动插入门控电路,或者是二者混合应用。一般会有两种门控电路,一种是
基于latch+一个逻辑门(and/or gate),一种是就用一个逻辑门。如果电路中全部采用的同相时钟,最好使用第
一种电路,可以用latch保证逻辑门的输出不会出现glitch(当然也要用STA分析相应的时序)。如果采用双相时
钟,用第二种电路也可,同样需要用STA报告setup/hold violation。
插入门控时钟可以极大降低电路动态功耗,可以节省50%以上动态功耗。同时还有一个附加好处是可以
显著减小电路area。因为如果一组寄存器的EN电路被一个clock enable电路取代,会减小相应的面积。同时如果
这个clock tree上还需要串入delay cell的话,也由于gate cell引入的delay而减少delay cell的数量。书中的
例子说完成clock gating后,电路面积减小20%左右。(记得一次面试还被问过这方面内容,可惜当时理解还不
深,没回答好,呵呵)
DC中自动插入门控单元的命令为:
set_clock_gating_style -sequential latch -positive_edge_logic {and} -negative_edge_logic {or} -setup 0.5 -hold 0.5 -minimum_bitwidth 3
在compile前执行
insert_clock_gating -module_level
-sequential latch指定DC用基于latch的门控电路类型。-positive_edge_logic指定时钟rising edge触发的寄存器所用的门控单元。-negative_edge_logic指定时钟falling edge触发的寄存器所用的门控单元。-setup/-hold指定setup/hold 约束。-minimum_bitwidth指定一组最少多少个寄存器共用一个门控单元,缺省值是3。据分析至少是3个寄存器共用一个门控单元才能达到节省功耗及面积的目的。
-module_level选项可以指定DC自动替换在RTL中手动插入的门控单元为DC认为安全的门控单元。
2、门级功率优化
这一级优化是由工具自动完成的,对设计者和后端工程师都是透明的,设计者可以不用关心具体细节。其基本思想包括:把翻转频率高的net在path早期和翻转频率低的net运算,高翻转率net的传播路径;高翻转率net接到低输入电容的门输入端,低翻转率net接到高输入电容的门输入端等。
3、Multi Vdd
其基本思想就是SOC中,不同模块根据其性能要求不同采用不同电源供电。书里的例子,Cache RAM需要工作在最高时钟,因此分配的电压值最高,为1.2V;CPU的电压值次之,保证整个系统的性能还是取决于高速RAM的速度;其余部分的电路工作在最低频,因此电压最低为0.9V。
这样做会得到最好低功耗效果,但也会较大影响设计流程。设计需要在模块间额外增加power rails和level shifters,各个模块接口之间的时序可能也要严格保证。
4、Multi-VT
降低VT也是把双刃剑。由于深亚微米下,工作电压降低,降低VT是势在必行。降低VT可以提高动态电流也就是可以提高电路工作速度,但VT是和静态漏电成指数反比关系,基于这个原理,在设计中我们就可以对于性能要求高的电路,采用low Vt的管子;对于性能要求不高,频率低的电路可以用高VT的管子。书中说现在工具可以利用库中给出的不同域值的单元自动优化timing和power。
如果项目的目标是追求最高性能,则第一遍实现时用low VT单元库。然后再用high VT单元库进行优化,把非关键路径中的cell替换为high VT的cell,从而实现在满足性能的同时,功耗最低。反之则顺序相反。
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮