文献标识码:A
DOI:10.16157/j.issn.0258-7998.2017.01.016
中文引用格式:喻贤坤,姜爽,王磊,等. 数字集成电路门控时钟可靠性研究[J].电子技术应用,2017,43(1):60-63,67.
英文引用格式:Yu Xiankun,Jiang Shuang,Wang Lei,et al. Research on the reliability of clock-gating clock in digital integrated circuits[J].Application of Electronic Technique,2017,43(1):60-63,67.
0 引言
对于超大规模集成电路来说,功耗指标是最重要的技术参数之一。为了降低功耗,研究出来许多行之有效的方法,包括静态多电压(MV-Design)、动态电压频率缩放(DVFS)[1]、门控电源(Power-Gating)、门控时钟(Clock-Gating)等。其中门控时钟技术是最早发展起来,并且是采用最多的低功耗设计技术,甚至可以使得电路功耗降低一半以上,具有实现简单、高效的特点。
门控时钟技术,是通过在时钟路径上增加逻辑门对时钟进行控制(Gating),使得电路的部分逻辑在不需要工作时停止时钟树的翻转,而并不影响原本的逻辑状态[2]。
如图1所示,在插入门控时钟前,前级寄存器输出经过组合逻辑产生控制信号EN,EN选择后级寄存器组的输入是DATA IN还是其自身的Q,即选择更新还是保持数据,可以看出后级寄存器组即使保持数据,其CLK仍在不停地翻转。插入门控时钟后,首先后级寄存器组的输入不再有其自身的Q,而只有DATA IN,其次增加了门控逻辑,EN连接到了门控逻辑,不再用于控制数据端,而是用来控制时钟端。当需要更新数据时,门控打开,用门控后的时钟ENCLK来采集新数据;而当不需要更新数据时,门控关闭,后级寄存器组的时钟是静止的,并能保持原有数据。而当一个芯片中有许多类似的逻辑,并且不是每周期都更新数据时,门控时钟结构对于降低功耗的贡献是非常大的。
1 门控时钟设计的风险和影响
时钟是集成电路内部最重要的逻辑组成部分,是数字集成电路的命脉。门控时钟是对时钟路径的修改、控制,因此在门控时钟设计时,必须充分考虑门控时钟带来的风险和影响。
1.1 门控时钟带来功能错误的风险
门控时钟控制的对象是寄存器、存储器等时序逻辑的时钟,一旦控制不得当,会造成时钟出现高低电平宽度不足(corruption),甚至出现毛刺(glitching),带来时序问题甚至功能错误。
如图2所示,一种典型的门控时钟结构的基本组成部分包括:门控信号EN、被门控时钟CLK,二者经过锁存器latch和与门and的逻辑,形成了门控后时钟ENCLK。在这个典型结构中,latch在LG(CLK)为低电平时导通,在LG(CLK)为高电平时关闭。在CLK为低电平期间,and与门输出结果一直为0;在CLK为高电平期间,and与门打开,但是此时latch已经锁定,EN信号上即使有意外翻转或者毛刺也不会通过latch传递给ENL而造成ENCLK的污染。
从时序角度来讲,发生风险的地方在CLK电平转换的时刻附近,此时如果EN发生变化,latch从低变高的过程会把EN锁存在latch中,并产生有效的ENL;由于CLK变高,就把ENL发生的变化传递给ENCLK,ENCLK上将会出现本不应出现的毛刺,导致功能错误。不满足时序情况下的门控时钟时序图如图3所示。
如果产生EN的时钟与ENCLK后级逻辑的时钟是同一个时钟,或是同一时钟域的时钟,图3中描述的情况是不会发生的,因为在满足时序约束的情况下,同步电路不允许存在这种违反建立保持时间的路径,如图4所示。反之,如果EN信号来自于异步时钟域或端口,则这种情况是一定存在的。
1.2 门控时钟对测试覆盖率的影响
在当前超大规模数字集成电路设计中,可测性设计是必备的设计流程之一。可测性设计的原理就是通过特意设计的逻辑,使得电路的内部节点从输入端口可控制,并且通过特意设计的测试向量来激活内部潜在故障,然后通过输出端口可观测,从而大幅度提高电路的测试覆盖率。
而门控时钟天然对可测性设计不友好,因为在测试状态下,增加了门控逻辑的寄存器的时钟往往是不可控的。门控时钟导致被门控逻辑时钟不可控的示意图如图5所示。
在测试状态下,由于产生EN逻辑的前级寄存器无论是否被串入扫描链,寄存器中的值都是由原始输入值和串行扫描数据决定,无法受端口直接控制,因此门控时钟的打开和关闭无法受端口直接控制,进而导致门控时钟的后级寄存器因为不符合可测性设计规则而无法串入扫描链,降低测试覆盖率。
因此在门控时钟设计中必须采取相应的措施,最大程度地消除门控对于可测性设计的不良影响。
1.3 门控时钟对时序的影响
由于门控逻辑在时钟路径上额外增加了逻辑,也就额外增加了延时,会对时钟树本身造成影响;同时,门控逻辑通常包含latch、or、and等逻辑结构,这些逻辑结构本身也有时序检查要求。门控时钟对时序的影响,相应地分为3个方面:
(1)由于门控时钟的加入,导致设计最终无法时序收敛;
(2)门控时钟本身逻辑,最终无法时序收敛;
(3)由于约束不严,导致尽管时序收敛,但实际上仍然存在风险。
2 门控时钟优化技术
针对前文提出的门控时钟对电路功能、可测性和时序3方面的风险和影响,下文将逐一提出可实现的解决方案,通过脚本语言、设计约束、设计优化等多种手段,规避门控时钟带来的风险,最大程度降低门控时钟对于可测性和时序的影响,并最终实现功耗最优化。
2.1 异步门控时钟和端口门控时钟的优化技术
从图3中可以看出,当门控信号和被门控时钟存在不确定的相位关系时,就可能出现问题,这类门控信号有两个可能来源:异步时钟域和端口。为了避免此种现象的发生,有两个方法:
(1)采用LEDA、CDC等工具进行跨时钟域信号检查,确认不存在异步时钟域间的数据交互;如果必须采用异步时序,则在异步界面上增加两级同步寄存器,消除亚稳态;
(2)在逻辑综合或时序分析工具中,利用脚本语言(例如Tcl)将设计中所有产生门控信号的前级逻辑的时钟、被门控时钟抓取出来。具体操作:采用all_fanin -to [get_pins -hierarchical -filter "full_name =~ */clk_gate*_reg*/EN"] -flat -startpoints_only抓取所有门控信号EN的前级寄存器的时钟,采用get_pins -of [get_cell $latch_name/main_gate] -filter "full_name =~ */B"抓取被门控时钟[3]。
如果产生门控信号的时钟、被门控的时钟不是同一个时钟,或同一个时钟的不同沿,或产生门控信号的是端口输入,则为异步或端口门控时钟。如果存在图6中的情况,则立即可以发现。
在第一次综合结束后,通过命令确认上述3种极有可能造成逻辑错误的门控时钟情况后,采用综合工具的命令(set_clock_gating_registers -exclude_instances),将上述门控逻辑屏蔽掉,重新进行综合。经过上述流程,可以保证所有门控逻辑:门控信号和被门控时钟永远保持稳定的、合法的时序关系,门控时钟后级逻辑可以稳定正常地工作,不会因为被门控时钟上的毛刺而产生功能错误,极大地提高了设计的可靠性。
2.2 门控时钟可测性设计的优化技术
门控时钟可测性设计的优化技术包含两方面:
(1)在没有加入可控制逻辑的情况下,门控时钟驱动的后级寄存器的时钟在测试状态下不可控。针对此问题,在门控时钟插入过程中,增加门控时钟旁路结构,使得门控时钟在测试状态下保持常通,如图7所示。
在门控逻辑上增加了一个输入管脚TE和一个旁路的或门,TE通常连接顶层的测试模式信号test_mode。在测试状态下,test_mode为固定高电平,因此latch的输入LD为固定高电平,ENL为固定高电平,CLK直接传递给ENCLK。因此在测试模式下,ENCLK与CLK保持一致,门控逻辑被旁路掉了,时钟从外部输入端口可控,不会对可测性造成影响。
(2)选择最优化的门控时钟可控制逻辑,实现可测性的最优化。提高门控时钟可测性的方法,也可以在latch的LQ端进行旁路,并且采用顶层的scan_enable进行控制,如图8所示。
对比图7和图8可以看出,or逻辑在latch之前还是之后,对于旁路时钟的作用没有区别,但是考虑到or逻辑在latch之前可以多一次同步,因此一般把or逻辑放在latch之前,通过命令set_clock_gating_style-control_point before实现;在控制信号方面,test_mode在测试状态中都是固定的,而scan_enable信号在shift和capture下会出现翻转,对于激活故障是有利的,能够有效地提高测试覆盖率,因此选择scan_enable作为控制信号,通过命令set_clock_gating_style -control_signal scan_enable实现。
通过上述门控时钟可测性设计的优化技术,可以明显提高具有门控时钟逻辑的电路的测试覆盖率,具有现实的工程意义。
2.3 门控时钟时序的优化技术
针对前文提出的门控时钟对于时序影响的3个方面,本论文提出了一套针对整个设计流程的不同阶段的优化方法:
(1)代码设计阶段
在代码设计阶段,尽量避免多级门控时钟。因为多级门控时钟会逐级增加时钟树延时,相比于其它没有门控逻辑的时钟节点出现差异,可能会导致在综合阶段出现时序优化问题。建议采用合并多级门控逻辑的设计方法,如图9所示。
(2)逻辑综合阶段
在逻辑综合阶段,由于尚未形成时钟树,时钟网络是0延时的理想网络。为了预估门控逻辑在后续设计阶段可能带来的时序影响,需要提前留出裕量,可以通过set_clock_gate_latency来实现。
此外,一般工艺库中,组合逻辑默认的建立保持时间都是0,对于门控逻辑中的and与门来说,意味着在门控信号和被门控的时钟沿同时翻转的情况下,工具也不会报出时序违例。针对此种情况,通过逻辑综合的set_clock_gating_style和时序分析的set_clock_gating_check命令来加严约束[4]。
(3)布局布线阶段
在布局布线阶段,对于时序非常紧张的门控单元,需要将这些单元紧密排列,在布局布线工具中应当设置布局限制约束,例如ICC中的placement bound等命令[5];此外,如果意外地将门控时钟的层次打平,需要防止布局布线工具把门控的latch当作时钟树的终点来调整skew,从而造成扇出的被门控逻辑的时钟树超长。
3 结语
通过本文提出的对于门控时钟功能稳定性、可测性、时序3方面的优化技术,可以实现进行门控时钟设计时不会产生毛刺、芯片故障覆盖率最大化、以及时序最优3方面的目标,为超大规模数字集成电路的功耗优化设计提供了完整的解决方案和优化手段,并已经在数字专用集成电路的设计过程中进行了充分的工程化应用,取得了良好的效果。
参考文献
[1] CHOI K,SOMA R,PEDRAM M.Dynamic voltage and frequency scaling based on workload decomposition[M].ACM International Symposium on Low Power Electronics and Design.2004.
[2] 卜爱国,余翩翩,吴建兵,等.基于自适应门控时钟的CPU功耗优化和VLSI设计.东南大学学报(自然科学版).2015,45(2):219-223.
[3] Power Compiler User Guide.Synopsys.2014.
[4] PrimeTime User Guide.Synopsys,2014.
[5] IC Compiler Implementation User Guide.Synopsys.2014.
作者信息:
喻贤坤,姜 爽,王 磊,王 莉,彭 斌
(中国航天科技集团第九研究院第七七二研究所,北京100076)