谢晓娟,蒋见花
(中国科学院微电子研究所, 北京100029)
集成电路工艺节点的提升带来了芯片集成度的极大提高,同时也导致了功耗的急速增加[1]。另外,市场对电子设备的大量需求使得系统功耗成为系统性能的一个重要指标,功耗的高低成了芯片厂商竞争力的焦点之一,功耗控制与管理已成为绝大多数芯片厂商首要考虑的问题。 SoC设计的功耗包含两部分:静态功耗和动态功耗。静态功耗主要由泄漏电流引起,在130 nm工艺下,静态功耗相对较小,可以忽略不计。动态功耗主要包括短路功耗和翻转功耗,是本设计中功耗的主要组成部分。短路功耗即内部功耗,指由器件内部由于P管和N管在某一瞬间同时导通引起的瞬时短路引起。翻转功耗由CMOS器件的输出端负载电容充放电引起。芯片工作时,很大一部分功耗是由于时钟网络的翻转消耗的,如果时钟网络较大,这部分引起的功耗损失会很大。在众多低功耗技术中,门控时钟对翻转功耗和内部功耗的抑制作用最强。本文主要讲述门控时钟技术的具体实现。另外,基于高阈值单元具有较低的功耗,设计采用高阈值单元库。
图1 带有多路开关的同步使能寄存器
对于一个设计中的寄存器组,经DC编译后一般会生成如图1 所示的电路。由图1可以看出,当EN为1时, DATA_IN的值由多路开关传至寄存器组的数据输入端,当CLK上升沿来临时,传至DATA_OUT。当EN为0时, OUTPUT保持不变。但由于时钟信号CLK的翻转,寄存器组会持续在CLK的上升沿来临时读取数据输入端的数据,而这时读取的数据是不变的,这就消耗了额外的功耗[2]。
为保证此时寄存器组不受时钟翻转的影响,可在EN信号为0时关断寄存器组的时钟输入端,使其不受CLK端的变化而变化,这一操作可通过门控时钟技术来实现,如图2所示。图中的门控单元由一个Latch和一个与门组成。门控单元也可以采用非Latch结构,直接由与门或或门组成。但由于这种电路会引发毛刺[2],故此处采用基于Latch的门控单元电路。插入门控时钟后,当EN为1时, Latch单元在时钟低电平时将EN锁存至ENL,时钟上升沿来临时, ENCLK随CLK变化,寄存器组执行正常的读入读出操作。当EN为0 时,寄存器时钟输入端ENCL保持为0,不随源时钟CLK的翻转而变化,故此时寄存器组不消耗额外功率。
由此可见,插入门控时钟能消除寄存器组冗余翻转引发的内部功耗,同时由于多路选择器组被一个基于latch的门控单元代替,所以也减小了电路的面积[3]。
另外,为了进一步减小设计的功耗,可采用一些特定的门控技术。目前应用比较广泛的有多级门控时钟,层次化门控时钟等。在多级门控时钟技术中,一个门控单元还可用来驱动其他一个或一组门控单元。这样就通过分级控制减少了门控单元的数目,而且这种方法可组合尽可能多的寄存器组使得门控单元向顶层靠近,节省更多功耗。
图2 基于latch的门控单元电路
电路在功能仿真通过后,开始进行寄存器级综合。采用高阈值标准单元库和多级门控时钟技术相结合,在RTL阶段插入门控时钟单元,并在布局布线时在IC Compiler中进行了基于门控时钟的布局布线优化,布局布线正确完成仿真通过后,在PT中做静态时序分析并进行最终的功耗分析。以下分三个部分讲述。
在RTL级,门控时钟的实现不需要对设计本身进行修改,而只需在综合脚本中加入一些控制项。本文采用多级门控时钟,相关的脚本如图3所示。图中,传统的综合流程用实线标出。虚线部分为门控时钟的操作。
控制项set_clock_gating_style是门控时钟的核心。它的参数大小决定门控时钟的质量,对功耗的优化效果和对CTS的影响。目前尚无完备的体系介绍如何设置控制项以使门控效果达到最优。本设计中有以下各个参数的设置方法。
首先确定时序单元的类型。为了避免非Latch单元易产生毛刺的缺点,此处选定时序单元的类型为Latch。由于库中提供基于锁存器的门控单元,固正边沿逻辑positive_edge_logic采用工艺库提供的专用单元。采用集成单元的优势在于不仅不需要设置门控单元输入端建立时间和保持时间,因为集成单元的时序信息在单元库中已有说明,而且有效缓解了插入门控单元对延时带来的不利影响。以下重点阐述实验中bitwidth, fanout和stage的确立方法。
fanout的大小对功耗和时序都有影响。数值越大则表示一个门控单元可承受较多的负载,即代表越节省功耗,需要的门控单元也越少,但对门控单元输入端建立时间的要求也就更加严格。位宽决定一组寄存器能被门控的最小宽度。级数则确定多级门控时钟的最大级数。本设计在这三个参数的选取上,主要是依据设计本身对功耗的要求,结合综合时的时序约束和单元库中门控单元的时延信息加以估计,确定一个粗略的数值范围。 fanout的值在满足时序的前提下,不经编译就可确定,方法如下:首先按约束文件中的扇出值约束此处fanout,然后insert_clock_tree,加入时序约束并传递至门控时钟,用report_clock_gating– multi_stage查看报告,重点关注第1项。发现fanout按约束文件取值为15时,门控单元的数目达到61个, fanout取值为20 或更高时,门控单元数目为41,见表1,而被门控的寄存器数目却保持不变,多级门控单元的数目也由fanout取值为15时的7级减小到当前的6级。由于门控单元也会消耗相当大功耗,因此在被门控的寄存器数目相同的情况下门控单元数越少就越节省功耗。因此确定fanout为20。
图3 门控时钟的基本描述
num_stages最初取值为2,插入门控时钟后的报告显示平均级数为1.4,其值增至3时,平均级数为2.3, 如表1 所示。从对时钟网络的平衡性来讲,stage值为2时要优于取值为3时的情况,但结合其后的编译,综合考虑时序面积功耗因素,折衷考虑选定stage为3。
bitwidth初值为3,经过编译,得出了功耗和延时信息。以此为基准,根据设计改变bitwidth数值,然后再编译,对比功耗延时。发现当bitwidth取值为5时,设计的各个性能指标达到最优。
通过以上试验,得出下列结论:对门控时钟而言,若不考虑设计的平衡性,插入的门控单元越少且被门控的寄存器越多, 门控的效果就越好, 反之亦然。
经编译,查看时序功耗报告,在满足电路性能指标情况下, RTL级代码经综合生成层次化门级网表和门级时序约束文件。
为查看门控单元在不同设置下的插入情况,用report_clock_gating– multi_stage得到表1所示报告。
从中可知,有23.68%的寄存器没有被门控,原因在于位宽,使能等不满足门控要求,对设计无影响。
表1 门控时钟总结
在布局布线阶段,基于门控时钟的功耗优化流程主要如下:在布局之前,设置set_power_options–clock_gating true,之后在布局、时钟树综合和布线阶段的主要命令中添加选项-power即可。上述设置可实现最基本的门控时钟布局布线,但在本设计中生成的时钟网络分布不均匀,而且skew很大。需要采取额外的优化措施来消除其带来的不利影响。
门控单元的加入给CTS带来的影响主要有两个方面,一方面会造成整个时钟网络分布不平衡,另一方面导致时钟偏移增大。单采用上述措施,时钟偏移最大可达到1.11,见图4中的第二项,严重偏离了不采用门控时钟时的偏移量0.12。在优化时钟偏移上,目标有三个方面:构造一个相对平衡的时钟网络,使得在各个层上,层的各个分支上的单元数目相近;减小时钟偏移至可承受范围;尽量保持功耗同只采用门控时钟而不优化时钟偏移状况下的功耗相近或更小。
分析引起skew偏大的原因,通过在ICC中跟踪路径,查看时钟网络电路图,发现时钟层分布极不均匀,分支节点最大相差6层。在具体时序路径中,两条路径延时过大, 插入了许多不必要的buffer,为构造一个平衡的时钟树,减小skew并减少对功耗的影响,在CTS阶段采取了三个措施。第一,设置set_clock_tree_options– logic_level_balance为true。 CTS的操作模式有三种:模块模式,顶层模式,逻辑级平衡模式。默认为模块模式。此处选取逻辑级平衡模式可得到最佳的skew, 但对功耗有一定影响[4]。第二,复制门控单元。主要是通过修正ICG输出端的DRC来平衡扇出,并添加缓冲单元来驱动没有被门控的寄存器使得整个时钟树的结构更加平衡。首先设置cts_push_down_buffer为true。然后sp lit_clock_gate– objects{*./latch}– gate_sizing– gate_relocation。并且在时钟树综合时结合使用-inter_clock_balance选项。最后,为了弥补功耗优化方面的不足,在CTS完毕之后用psynopt– power。不采用门控时钟、采用门控时钟但不做skew优化、采用门控时钟且进行skew优化三种情况下的skew见图4。由此可见,优化后的skew较原来相比虽有所增大,但要远小于优化前的设计。
图4 各种操作方式下的时钟偏移
布局布线完成后, 导出网表到VCS中进行后仿,并得到分析功耗所需的saif文件。将此saif文件和布局布线后带有实际延时信息的网表读入PT中,加以适当的时序约束进行功耗分析,得到如图5所示的分析结果。
图5 布局布线完成后的功耗分析结果
由图5可知, 采用门控时钟技术后的设计总体功耗下降了 22.6 %。其中, 开关功耗下降了63.2 %,内部功耗下降了21.9 %,体现了引入门控时钟技术的优势,因为门控时钟主要用于降低动态功耗,泄露功耗略有下降。总功耗由原来的1 mW降低至778 uW, 功耗降低效果非常明显。除此之外,芯片核的面积也略有减小。
越来越多低功耗设计方法的出现为低功耗设计提供了无限的空间。门控时钟技术作为当前比较成熟的一种低功耗方法,已经得到普遍应用。本设计全面讲述了门控时钟的后端实现方法,并提出了一种门控控制项的设置方法,解决了由其引起的时钟偏移问题,对VLSI深亚微米低功耗电路物理层的实现有一定的实用价值。
[ 1] Michael Keating, David Flynn, Robert Aitken, etc.Low Power Methodology Manual For System-on-chip Design[ M] .Synopsys Inc, 2008, 13-15.
[ 2]Power Compiler User guide, Version C-2009.06 [ Z].Synopsys Inc.
[ 3] 张永新,陆生礼,茆邦琴.门控时钟的低功耗设计技术[ J] .微电子学与计算机, 2004, 21(1):23-26.
[ 4]IC Compiler Implementation User guide, Version C-2009.06[ Z].Synopsys Inc.