摘要 随着深亚微米技术的发展,功耗已经成为现代超大规模集成电路设计中的一个主要设计约束.本文在设计多点控制协议MPCP模块中,采用插入门控时钟这一技术以降低芯片功耗.针对插入门控寄存器造成测试很难控制这个问题,采取在锁存器的前后加入控制点的方法,解决了由于插入门控时钟而对可测性造成的影响.最后,使用SMIC的0.25um CMOS工艺,并用Synopsys的power complier进行功耗优化,达到了很好的效果.
关键词 门控时钟;低功耗;寄存器传输级
1.引言
集成电路是20世纪发展起来的新兴高技术产业之一。自从1958年Texas Instrument的Jack Kilby生产出第一块集成电路起,集成电路产业一直保持着惊人的发展速度。正如Intel的创始人之一Gordon Moore博士所预言的,每14~18个月,芯片上可集成的晶体管数目将增长一倍,以微处理器芯片为例,集成电路的规模已经从1971年Intel 4004的2300个晶体管发展到现在的130nm制程Banias核心的7700万个晶体管24.5W的最大散热功率(TDP,Thermal Design Power)和90nm制程Dothan核心的1.4亿个晶体管21W的最大散热功率[1]。
在CMOS数字电路中,功耗的来源主要有静态功耗和动态功耗两部分组成[2],即:
静态功耗Pstatic是逻辑单元在非活动状态下产生的功耗,主要由存在于扩散区和衬底之间的PN结泄漏电流以及直流待机电流引起;动态功耗Pdyamic主要有两个来源:逻辑单元(cell)输出端负载电容充放电产生的开关功耗(Net Switching Power)和电容充放电期间在逻辑单元边界处产生的内部功耗(Cell Internal Power),即在逻辑门上PMOS晶体管和NMOS晶体管之间的瞬间短路电流产生的短路功耗。而且:
其中Pswitching是开关功耗,PSC是内部功耗。可以看出,芯片的动态功耗和负载电容CL,开关活动性α,转换频率favg,电源电压VDD和电压摆幅有关,并且芯片大部分的功耗都是由逻辑转换期间电路中电容的充放电引起的,为此可以通过减少电路中冗余的状态翻转,使更多的逻辑电路单元处于未激活的状态来降低功耗。采用门控时钟,显著减少了电路和时钟网络的开关活动性,通过在空闲状态隔离开时序元件和时钟网络来减少功耗,因而被认为是一种降低动态功耗的有效技术[3]。
本文首先介绍了门控时钟的基本原理,然后基于门控时钟的实现方式,在基本不修改RTL代码的前提下,采用Synopsys公司的Power Compiler工具来分析,并使用VCS进行仿真,取得了很好的效果。
2.门控时钟的基本原理
门控时钟是RTL级降低功耗的一种有效手段,它最好加在高层模块时钟上而不是每个触发器或锁存器的时钟输入都要门控,每个触发器或锁存器都门控会产生不期望的时钟不对称性和增加设计的复杂度。时钟电能消耗的80%是由于时钟树的布线引起,门控时钟网络上大量的触发器或锁存器可以减少时钟树的电容,同样也可以减少被门控的触发器或锁存器的电量消耗。门控时钟能节约电能的多少取决于被门控的触发器或锁存器的数量以及门控时钟使能信号有效时间的长短。
下面看一个门控时钟的例子,如图1所示,当同步负载使能信号EN在状态0时,寄存器组处于禁止状态。此时,通过多路复用器,寄存器组的输出Q处于稳定状态;当EN处于状态1时,寄存器组开始工作,通过D输入端不断获取新值。
图1 带有多路复用功能的同步寄存器
如果在多时钟周期内并且EN=0的情况下,向寄存器不断地加载相同的值,寄存器组和它的时钟网络消耗功耗而寄存器组的值不发生变化(此时多路复用器也消耗功耗)。此时通过控制寄存器组的时钟信号,可以消除在整个多时钟周期间在寄存器里加载相同值的需要。在寄存器组的时钟网络里面插入时钟控制电路,剔除掉不必要的时钟活动性,如图2所示,在寄存器的时钟网络上插入一个2输入的与门,这个2输入的与门有选择地阻止了时钟边沿,阻止了门控时钟信号去触发寄存器,减小了电路中存在的冗余的开关动作,从而降低了因为寄存器值不发生变化而产生的额外功耗。
图2 使用门控时钟的基于锁存器的寄存器
在电路中加入门控时钟非常容易,可以直接在语言中进行描述,也可以通过综合工具自动加入,例如在Synopsys的Physical Complier工具上,当使用elaborate命令时,通过使用选项-gate_clock,门控时钟就会自动地创建和插入门逻辑到时钟网络上。
3. 门控时钟的低功耗实现
系统级芯片的设计包含众多的寄存器,如果对它们一一进行优化显然是不现实的[4],使用Synopsys公司的Power Compiler功耗优化工具,在物理编译器Physical Compiler里进行优化,为此插入门控时钟的过程直接在Physical Compiler的脚本文件中进行,下面是完成综合并进行功耗优化的脚本:
/* 在门控时钟设计时需要使用的变量*/
set power_preserve_rtl_hier_names true /*保存RTL设计中各个层的信息*/
set hdlin_no_group_register true
set_clock_gating_style -sequential latch –minimum_bitwidth 3 -control_point before -control_signal scan_enable -max_fanout 8 -no_sharing
analyze -f verilog ./mpcp/mpcp_block.v
…… ……
elaborate mpcp_block -gate_clock
hookup_testports -verbose
current_design mpcp_block
link
uniquify
propagate_constraints -gate_clock
为更好地服务于设计,使用命令analyze和elaborate代替命令read读入源代码文件。因为基于锁存器的门控时钟对时序的影响最小,所以门控时钟的类型一般选锁存器型的(包括库里面特定的锁存器)。考虑到寄存器组里面可能存在相同的使能信号,门控时钟通过设定一个最小的位宽来决定出触发门控时钟的最小寄存器数目,一般地,它通过多次试验,采用折衷的最优值。
门控时钟的插入,增加了电路的复杂度,显然会对设计的可测性造成一定的影响。而且通常状况下,在扫描寄存器组,门控寄存器的插入会造成测试很难控制,所以扫描链上一般不宜插入门控时钟。可如果扫描链上没有寄存器的话,寄存器输入和输出端的可测性就没办法控制,而且现在的大多数设计都存在众多的门控寄存器,由此使得设计的故障诊断率显著减小,为解决这一问题,可以在锁存器的前后加入控制点,选项“-control_point before”表示在锁存器的前面插入控制点,选项“-control_signal scan_enable”表示控制点信号采用的scan_enable的模式。控制点信号有scan_enable和test_mode两种模式,一般情况下,前者比后者能够提供更高的故障覆盖率;前者仅仅在扫描模式是激活的,而后者在整个测试期间都处于激活状态,所以在设计中采用默认的scan_enable模式。值得注意的是当采用test_mode模式时,可以使用选项“-observation_point”和“-observation_logic_depth”来提高设计的可观测性。另外,选项“-max_fanout”指定在RTL级门控单元的最大扇出数,当使用这个选项的时候,“hdlin_no_group_register” 变量必须被设置为true,使Power Compiler共享在逻辑上等同的门控单元的寄存器组。
4. 功耗优化和时序分析结果
本文以基于EPON的ONU控制器中的MPCP模块为例,采用SMIC 的0.25um CMOS工艺库,来验证门控技术的优化结果。
使用Physical Compiler进行综合,表1显示了使用时钟门控前后的功耗报告。从报告中可以看出,采用门控时钟技术后,功耗降低了约70%,其中网点开关功耗下降了68%,而泄漏功耗仅下降了6.5%;逻辑单元数目减少了6.4%,单元面积也减少了2%,由此说明门控时钟的插入,不仅使动态功耗显著下降,而且对逻辑单元的面积也有一定的优化。
另外,引入门控时钟,因为时钟偏差(clock skew)的存在,相应的时序问题也会发生一定的变化。为了验证设计的正确性,该设计使用primetime 进行静态时序分析(STA,Static Timing Analyze),以检测门控时钟的建立和保持时间是否满足,在对建立时间进行时序分析时,信号要求到达的时间(data required time)必须大于信号到达时间(data arrival time),才可以满足时间盈余为正(slack(MET)),否则出现VIOLATED的情况;相反对保持时间进行时序分析时,data required time必须小于data arrival time才可以使时间盈余MET。表2为加了门控时钟后,最坏情况下的一条setup延时报告的结果。
加入门控时钟优化后最坏一条路径的setup时序报告
Startpoint: ex33/ex_burst/StartTime_reg_reg[0]
(rising edge-triggered flip-flop clocked by my_clk)
Endpoint: ex33/ex_burst/stopTime_reg[31]
(rising edge-triggered flip-flop clocked by my_clk)
Path Group: my_clk
Path Type: max
Point Incr Path
---------------------------------------------------------------------------
clock my_clk (rise edge) 0.00 0.00
clock network delay (ideal) 1.50 1.50
…… …… ……
data required time 32.89
data arrival time -23.87
-------------------------------------------------------------------------
slack (MET) 9.02
5. 结论
门控时钟技术是目前实现低功耗的一种主要方法,它主要降低内部门控寄存器和开关网络上的功耗,而且它的使用和采用的工艺无关。本文在MPCP模块设计中,加入门控时钟进行功耗优化,考虑时序分析和可测性的影响,不仅有效减小了功耗,而且面积也有所下降。可见在集成电路规模日趋增大的形势下,该技术是一种很好的降低功耗的方法,对于控制片上系统芯片的功耗有着广泛的应用前景。
本文作者的创新点在于通过加控制逻辑,解决了因为门控时钟插入后造成的测试很难控制的问题。 |