集成电路中低功耗设计(二)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/IamSarah/article/details/77043349

这篇文章主要介绍一下低功耗设计中常用的技术。由上篇文章可知,设计中的功耗可以分为下表给出了翻转功耗在一些示例电路中所占的比例。

 

在不同电路中,各类功耗所占的比例是不同的,因此进行低功耗设计的重点是不同的。在运算电路中,开关功耗占绝大部分,因此,此类电路的低功耗设计要致力于减小开关功耗;对于DRAM存储器,泄漏功耗占大部分,因此要将重点放在减小泄漏功耗上面。

针对不同的功耗类型,具有不同的低功耗设计方法。

对于动态功耗:可以从降低物理电容、工作电压、频率、翻转概率来着手。

对于静态功耗:可以从增加阈值,降低栅极电流来着手。

低功耗设计贯穿整个IC设计的流程,下表给出不同层次的功耗降低方法:

 

下面也分层次详细的介绍一下功耗降低的技术。

(一)系统级的低功耗设计

1)电源缩放技术

电源缩放技术是降低功耗的最直接的技术。在系统设计时,尽量采用低电压。低电压可以显著降低功耗,但会引起性能下降。为了不显著影响性能,可以采用电压设计方案,即将设计分成区域,每个区域采用不同的供电电压。多电压设计需要综合库的支持。综合库中,要包含同一单元在不同电压下的描述。此外要给出多电压设计单元。多电压设计单元是一类特殊的器件,主要包括:

a、电压转换器:用于不同电压域之间传递信号。

b、电源个例单元:避免单元的输入悬空。

c、保值寄存器:在不工作模式下,将寄存器的状态保留起来。

2)低功耗IP的选择

现在的SOC设计依赖于IP的集成。在选择IP的时候,既要考虑性能要求,还需要考虑功耗问题。例如在选择CPU的同事,可以分析在完成相同功能时,哪种CPU功耗大。

3)采用并行处理以降低功耗

并行处理常用于数字信号处理部分。采用并行处理,可以降低系统的工作频率,从而可能降低功耗。

4)采用流水线技术以降低功耗

    流水线技术可以将一个较长的组合路径分成M级流水线,路径长度缩短为原始路径的1/M。这样一个时钟周期内充放电的电容变为C/M。如果在加入流水线之后,时钟速度不变,则在一个周期内,只需要对C/M进行充/放电,而不是对原来的C进行充/放电。因此,在相同的速度要求下,可以采用较低的电源电压来驱动系统。这样,系统的整体功耗可能降低。

5)采用状态编码,减少翻转活动

    对于一些变化非常频繁的信号,我们利用数据编码来降低开关活动,例如使用格雷码比用二进制码翻转更少,功耗更低。

6)采用低功耗算法

在算法级降低功耗是非常有价值的。在设计算法时,要分析该算法需要多少ALU操作,需要多少次存储器访问,要尽量使那些耗能多的操作最小化。算法级低功耗设计跟具体设计有关。在一些行为综合工具中,可采用延时功耗乘积表示系统的优化目标,以降低完成特定计算所需的状态转换数,生成高效的计算结构。

7)系统时钟分配方案

在设计中计入时钟控制模块,其原理类似于电压模式控制单元。根据应用要求,可以将系统设置为不同的工作模式。在不同的工作模式下,选择不同的频率的额时钟,并且将一些不需要模块的时钟关掉。

(二)RTL级的低功耗设计

1)时钟门控

时钟树由大量的缓冲器和反相器组成。这些门在每个时钟周期都要翻转。因此在IC系统中,时钟树的功耗相当显著。为降低时钟上的功耗,采用门控时钟。门控时钟有两种方案:一种是对寄存器的时钟进行门控,一种对模块级别的时钟进行门控。相比之下,直接对寄存器的时钟进行门控更为灵活。因为在很多时候不能保证将不需要门控的寄存器与需要门控的寄存器分在不同的模块。

对寄存器的时钟进行门控:如下图是门控时钟的一个示例,在这个例子中,将控制信号(EN)直接与时钟信号(CLK)进行与操作,以完成门控。门控后的时钟信号GCLK送到寄存器阵列中。这样,当EN0时,该时钟被关掉。

 

这种门控方式最直接,但是很少用,因为EN不加控制,会导致门控时钟信号出现毛刺。时钟上的信号出现毛刺是异常危险的。因此,在进行门控时,必须保证EN信号与CLK有一定的时序关系。为解决该问题,采用基于锁存器的时钟门控方案,如下图:

 

采用这种方案不需要ENCLK信号有特定的时序关系。下图是基于锁存器门控时钟方案的波形图:

 

可以看到,这种方式消除了ENCLK组合产生的毛刺对于门控时钟的影响。该方法的原理紫玉:锁存器在CLK为低的时透明。这样EN1的毛刺仅出现在CLK的低电平处,EN1CLK进行与操作,可以将这部分毛刺消除掉。这样GCLK就没有毛刺了。但是该方案并非万无一失。如果在电路中,锁存器与与门相隔很远,到达锁存器的时钟与到达与门的时钟有较大的延迟差别,则仍会出现毛刺。如下图所示:

 

这种现象的出现是由于时钟的skew大于锁存器的CLK-Q的延时导致的,要解决这个问题,必须使得锁存器与门靠的非常近,即使用如下的门控单元:

 

下面介绍一下如何在实际的设计过程中实现上述的门控时钟。首先在RTL代码中将需要门控的寄存器写成“载入-使能”形式。

always@(posedge clk)

if(EN) D_out=D_in;

如果对该代码直接综合的话,会得到如下图的结果:

 

在图中的结构中,每个受EN使能控制的寄存器之前加入了一个MUX,当EN信号有效时,寄存器锁存D_in,否则保持原值。这种方法也可以减少寄存器上的翻转,因而节省翻转功耗,但是这种方案比起门控时钟的网表规模更大。并且这种方案不能消除时钟树上的功耗。因此采用门控时钟方案。但是如何将“载入-使能”风格的RTL转换成时钟门控风格的网表?需要借助DC中的power Compliler,其脚本书写顺序如下:

1)设置门控时钟的风格

2)读入代码

3)生成时钟,加入约束

4)插入时钟门控逻辑

5)将时钟门控逻辑上的建立时间/保持时间约束传递到顶层设计,以便在顶层进行综合

6)综合:命令如下:uniquify compile

7)报告设计中的门控时钟逻辑

如果在某些时间段,设计中有许多数据通路部分的活动较少,则采用门控时钟方案可以获得很大的益处。对于状态机这类活动较为频繁的模块,采用时钟门控意义不大。

2)操作数隔离

操作数隔离的原理是:如果有一段时间,数据通路的输出是无用的,则将它的输出置成某个固定值,这样数据通路没有翻转,功耗就会降低。如下图所示:

 

在图所示的乘法器中,如果知道乘法操作延迟超过半个时钟周期,则将乘法器与反相时钟进行与操作,可以保证在时钟前半周期乘法器的输出不会导致加法器的翻转。这就是操作数隔离技术的基本思想。采用这种方法,会增加面积, 并影响到DFT, 所以在使用前应该对它的利弊进行权衡。

3)逻辑级的功耗优化技术

这一部分主要介绍综合工具所具有的的功耗优化能力,以及多阈值单元的综合流程。

a 综合工具的功耗优化能力

用综合工具进行功耗优化的时候,通常采用的技术包括插缓冲器,降低信号的转换时间;相位分配;引脚互换;factoring,通过逻辑表达式的转换,使得翻转率很高的节点影响的逻辑最小;sizing,通过选择不驱动强度的单元,以实现最低的功耗。.

b 多阈值的综合流程

随着工艺的进步, IC器件的几何尺寸越来越小,所用的工作电压越来越低。 为了弥补工作电压降低带来的性能损失,必须对泄漏电流功耗进行控制。阈值电压与器件性能、功耗的关系如下所示:

对于关键路径,采用低阈值的单元,以改善时序;对于非关键路径,采用阈值高的单元,以降低泄漏功耗。下图演示了在DC中进行泄漏功耗优化的流程:

 

猜你喜欢

转载自blog.csdn.net/IamSarah/article/details/77043349
今日推荐