低功耗的设计与实现方法22CMOS电路低功耗设计的基本方法和
途径
低功耗的设计与实现方法
2.2CMOS 电路低功耗设计的基本方法和途径
根据2switch L DD P C V f α=,在频率一定的情况下,功耗主要取决于3个因素:工作电压,
负载电容以及开关活动性,因此功耗优化主要从以上三方面着手。
2.2.1降低工作电压
功耗与工作电压的平方成正比,因此降低工作电压是降低功耗的有力措施。不需要改变电路的结构降低工作电压就可以取得减少功耗的显著效果,而且降低电压是针对整个芯片,而不是针对某一个单元,因此降低工作电压比减小负载电容和减小活动性更易见效。但是降低电压并不是无的,降低电压必须考虑电路的速度。图2-3显示了在不同设计阶段降低电压的措施。
图2-3.在不同设计阶段降低电压的措施
电压降低时,延时增加,导致电路性能的下降,如图2-4所示。由于CMOS 器件电流I dd ∝(V dd -V t )2,可得电路延时。当V dd >>V t ,时降低电压延时呈线性增加,此时可以用改变电路结构等措施来弥补低电压带来的延时增加,但当电压进一步降低到接近阈值电压时,漏电流迅速增大。为了避免这种情况发生,一般应保证它在0.13V ~0.11V 之间。
图2-4.工作电压对功耗和性能的影响
2.2.2降低负载电容
动态功耗与负载电容成正比,因此减小负载电容成为降低功耗的另外一个重要途径。在CMOS 电路中,电容主要由两方面构成:一方面是器件栅电容和节点电容,它们和器件工艺有关;另一方面是连线电容。值得注意的是,随着工艺的发展,连线电容已经超过器件电容。为了减小电容,在工艺方面可以选择小的器件,物理设计时减小连线长度。图2-5显示了在不同设计阶段降低负载电容的措施。
图2-5.在不同设计阶段降低负载电容的措施
2.2.3减少开关活动性
在CMOS电路中,功耗和开关活动性息息相关。若信号活动性为0,即使负载电容很大,它也不消耗能量。开关活动性与数据频率f和开关活动率α有关,f描述单位时间内
信号到达节点的次数,而活动率α则描述到达节点时信号的翻转几率。
值得注意的是,在有些CMOS电路中,伪跳变占据了相当一部分开关活动性。由于此类信号没有任何作用,因此它造成系统功耗的白白损失。伪跳变由电路中的比较器、进位加法器、解码器等运算逻辑部件形成,它一旦形成便向下一级电路传播,直到寄存器为止。因此它所造成的功耗与它流过的路径有关。它传播经过的单元越多,浪费的功耗便越多。为了降低伪跳变带来的浪费,一种办法是消除伪跳变的产生;另一办法是缩短其传播长度。
2.2.4低功耗的途径
如上所述,决定功耗的因素有工作电压,负载电容或开关活动性,CMOS电路的低功耗设计必须综合考虑这三个因素。具体的途径有:
1.避免浪费:对系统进行有效的功耗管理,用门控技术关闭没有任务的单元,甚至在系统闲置时关闭电源;合理选择逻辑单元避免或减小伪跳变的产生;用专用电路代替可编程硬件,采取规则算法和结构减少控制电路;另外,在系统集成时,需要根据系统需求合理地选择集成部件。
2.面积、性能和功耗的均衡设计:必要时用少许面积或性能换取功耗。这三个约束往往相互制约,但可以相互转化,因此在低功耗设计中,常常用少许面积或性能换取功耗的优化。例如,可以通过并行设计和流水线设计。
3.合理的布局和划分,使数据尽可能在模块内处理:在CMOS电路中,数据总线是功耗的一个重要来源,因为它具有很高的开关活动性和负载电容。信号通过总线在芯片的各
个单元之间传送,造成严重的功耗。为了避免或减小这种高功耗的总线通讯,可以对数据路径进行合理的布局和划分,尽量使数据在模块内处理,使用功耗相对较低的局部总线。
2.3工艺级低功耗技术
1、工艺层次
工艺上,考虑的低功耗技术主要有:降低阈值电压,减小管子尺寸,增加金属层数,采用其他特殊工艺等。
从对功耗来源的分析知,减少电源电压可以有效地降低电路功耗,但是在阈值电压不变的情
况下,会影响电路速度。为此,要求同时减少阈值电压,阈值电压并不是越小越好,一般应保证它在0.13V~0.11V 之间。
采用先进工艺,能得到更小的管子尺寸,有助于减少开关电容,即使电源电压不变,电路功耗也能得到降低。
多层金属叠层布线,可以不用再为走线而预留空间,不仅节约了芯片面积,也避免使用大范围连线,从而可以减少开关电容,降低电路功耗。当然,叠加的金属层也会导致耦合寄生电容的增加,抵消部分节约的功耗。
另外,针对减少器件漏电流问题,可以采用一些特殊工艺,如采用绝缘体上硅( Silicon on Insulator,SOI) 工艺、多阈值电压器件、低温CMOS 器件、动态衬底偏置器件以及介电常数更高的栅氧材料等。
2、版图层次
版图优化必须同时优化器件和互连。这方面的工作主要是基于Elmore模型。但这些模型没有显式地将互连延迟、功耗与晶体管、引线的尺寸联系起来。所以有必要建立适当的模型,以实现版图级的功耗优化。
版图设计,不再以最小面积容纳所有电路模块为目标,而是应考虑如何使开关频繁的路径最短化。版图设计中最简单的低功耗方法是对具有较高活动性的信号选择上层金属布线。上层金属与基板被一层较厚的二氧化硅隔开,由于布线的物理电容随着氧化层厚度的增加而减小,因而,把活动性高的信号线布在较上层是相当有利的,应该注意的是较上层布线需要更多的通孔,而通孔将增加电容。另外,应使高活动性的信号布线具有较低的电容。
时钟树是数字电路中最大的负载网络,好的时钟树生成算法,可以减少时钟歪斜,偏差和抖动的发生,目前采用较多的时钟树仍是H网络,即主干节点接参考时钟,子叶节点为匹配连线和缓冲器对参考时钟的扩展。最后,布线时应考虑开关频繁的路径为高优先级。传统的布局和布线以面积和延时最小作为目标,它的主要衡量标准是线长最短,电容最小。这种布局和布线的缺点是没有与信号的活动性结合起来。在低功耗布局和布线中,往往以活动性与电容的乘积为目标,活动性高的布线应尽可能短。
在处理复杂设计时,通常将电路划分成易管理的小电路块,分别优化和实现。块内互连显然比块间互连短,电容小。因此必须考虑信号活性,网表划分应使低活性的互连处在边界上。布局、布线的问题和划分的问题一样,可使用原来延迟和面积优化的方法,但在功耗优化时,必须用信号活性对电路互连线加权。尽可能的使高活性的互连处于块内。在深亚微米设计时,因为耦合电容对总的互连电容和功耗有大的贡献,在布线时,引线间距
也应根据信号活性进行调整。高活性的网表最好分配在不同的层上。同理,对引线的线宽也应根据互连电容,信号活性,和延迟进行权衡。
3、电路级低功耗技术
电路级的低功耗设计,主要针对动态功耗,涉及电源电压、物理电容和开关频率等几个方面。由开关功耗和电源电压呈二次方关系。减少电源电压对降低功耗最有效的方法。在阈值电压不变的情况下,对不同电路模块采用不同电源电压供电,对时序有的模块,采用高的电源电压保证电路速度,其他模块采用低的电源电压以节约功耗。
CMOS数字电路的物理电容大致有三种:栅电容、扩散电容和连线电容。降低这三种电容,则对应的节点的功耗也随之降低。栅电容和扩散电容主要是由所选的工艺的单元库决定的。而连线电容则受后端设计的布局布线的影响。
要降低开关频率,一方面可以减少电路工作频率,另一方面需要减少电路的开关活动性。4、门级设计
1.工艺映射
工艺映射把布尔函数映射为CMOS门网络。例如,一个3输入的与非门可以用一个3输入
的CMOS门实现,或者通过两个2输入的CMOS门实现。不同的实现方式会得到不同的信号活动性,电容。多输入逻辑门的负载电容较小,对降低功耗是有利的。低功耗的工艺映射另一目标是使布尔网络的开关活动性最小,并尽量把活动性较高的节点安排在多
输入逻辑门中,因为它的电容较小,最终功耗也较小。
2.减小活动性
如图2-8所示电路图中,输入B的活动性为25%,逻辑深度为2;而输入C的活动性为19%,逻辑深度为1。为了降低整体的活动性,把输入B与C互换,这样就减小了高活动性信号的逻辑深度,从而能简单有效地降低功耗。
图2-8.输入重定序降低活动性示意图
3.减少伪跳变
在门级设计中,减少伪跳变可以避免功耗浪费。图2-9显示了两种实现布尔逻辑的方法,假使门延时和信号到达时间均相同,在输出到达稳态以前,层叠式结构信号翻转次数高于树形结构,这是因为在层叠式结构中每一次输入翻转都将诱发输出翻转,这些翻转又向它的下一级传播,若门级网络的逻辑深度为N,那么这些伪跳变的以NZ的速度增长。而在树形网络中,由于结构是对称的,它的逻辑深度比层叠式结构少,因而可以避免多余的伪跳变,这种结构可以节省15-20%的功耗。
图2-9.层迭式结构与平衡式结构比较
通过调整门的尺寸,平衡信号延时以消除伪跳变,功耗可降低28%。而且,通过流水线设计在不同深度的逻辑间插入缓冲器,也可以消除伪跳变;由于伪跳变和逻辑深度有关,因此减小逻辑深度是减小伪跳变的重要途径。
4.门控时钟的使用
对于数字电路来说,由于时钟树直接连到电路中的各个时序单元,不论该时序单元输入是否有效,只要时钟翻转,该单元就会动作,造成不必要的功耗,为此,建议采用门控时钟,如图2所示,将时钟和使能信号相与,让时钟只在使能信号有效时才输出门控时钟,由该门控时钟去控制时序单元,图2中的锁存器Latch 是为了避免产生毛刺。
图2 门控时钟的产生
5、结构级
典型的低功耗结构有两种:并行结构和流水线结构。这两种结构不仅常见于高速电路中,用于提高电路性能,在电路吞吐量一定时,采用这两种结构,可以用面积来换取低功耗。
并行结构,是在原电路基础上复制相同电路,当吞吐量一定时,可将工作频率降为原来的一半,此时允许电路有较大延时,故可以采用较低电源电压,从而降低电路总功耗。
图并行结构和流水线结构
流水线结构和并行结构相似,都是以增大面积减小电源电压的方式来降低功耗。但它不是简单地“复制”模块,而是把一个功能模块分成n个阶段进行流水线作业,每个阶段由一个子模块来完成,在子模块之间插入Register以驱动这些小模块。
6、行为级低功耗设计方法
这一级的设计方法就是针对所要实现的功能选择合适的算法。有些功能函数在计算的时候会浪费很多功耗,这时有必要对算法进行改进。降低开关活动因子是降低功耗的一个有效的方法,尤其对结点电容大的信号线更是如此,比如总线。我们可以采用合适的编码方式来降低开关活动频率。如Gray- code 是通过对二进制数编码,实现连续的两个二进制数之间只有一位不同,这样总线在传输连续变化的数据时,在总线上只有一位发生变化,总线的翻转活动大大减小,从而降低功耗。此外,另一个有效的方法是降低开关电容。设计师在设计的时候应当考虑操作个数和操作类型。不同类型的操作所消耗的功耗是不同的。例如,乘法操作的功耗要大于加法操作。因此,在减少算法操作个数的同时,还要考虑到操作的类型。存储器读取和ALU 操作次数应当尽可能少。
7、系统层次
系统层次的低功耗技术主要有动态电源电压管理(DVS),动态阈值调节(DTS)和待机模式下的节能问题等几个方面。
动态电源电压管理类似前面提到的降低电源电压技术,所不同在于它是根据工作负荷动态调整工作频率和电源电压,而不是硬性地划分模块电源电压,因此,具有很强的灵活性。动态
阈值调节主要针对降低电路漏电流,和前者相似,也根据实际工作速度来动态调节管子的阈值电压。不过要动态改变阈值电压,需要自适应体偏置,这要用到三阱工艺。另外,漏电流监测器也是这一技术的关键。
在待机模式下,为减少漏电流,降低静态功耗,可直接切断电路的电源和地,具体实现可采用在电路与电源和地之间增设开关,如图5 所示。
图5 切断电源和地的开关电路
正常工作时,控制信号Sleep为高,开关闭合,电路接至电源和地;待机时,Sleep信号变为低,开关断开,电路的电源和地被切断。由于断电会清除寄存器内容,故寄存器不能采用这种技术。