clock gating是一种在不需要时将时钟关闭的技术。
clock gating的必要性
由于大多数SoC受到功耗预算的严重限制,尽可能地减少功耗至关重要,clock gating是降低设计动态功率的最简单、最常用的方法之一。概念很简单,也就是在不需要的情况下关闭通过关闭设计的时钟,基本上减少了设计的切换活动,从而减少了动态功率,而不影响功能。clock gating应用于数字设计的最小部分(单个FF),直到完整的子系统或整个SoC。
clock gating技术
一般来说,有两种不同的技术来实现clock gating。
- 基于意图的clock gating/这种类型的clock gating通过RTL作为功能的一部分引入设计中。
- 工具生成的clock gating-这种类型的时钟门控是在综合过程中由工具引入的,通过识别所有共享相同控制逻辑的触发器,并在需要时启用所有这些触发器。
我们在这里只关注第一种类型的时钟门控。通常,完整的时钟门控策略在系统架构中定义,然后设计实施该策略。有不同的技术来实现时钟门控。
时钟门控概述
在最简单的形式下,可以使用AND门来实现时钟门控,如下图所示
基于AND门的时钟门控
由组合逻辑生成的时钟enable信号,控制何时将时钟提供给下游逻辑(上图中的触发器)。当enable为1时,时钟将提供给触发器,当enable为0时,时钟将关闭,因此触发器将不处于活动状态。
然而,这种最简单的时钟门控技术存在一些问题,即在提供给触发器的时钟中产生glitch,这是不可取的。
AND门控时钟中的glitch
这些glitch可以通过在时钟enable信号输出处引入低电平latch来消除。
基于latch的时钟门控
这将确保时钟enable信号中的任何 glitch都不会被门控时钟输出所显示。latch输出仅在负时钟周期内更新,因此输入到AND门将稳定为高。
无glitch的clock gating
集成clock gating cell(ICG)
在实现这种设计时,人们可以从库中使用一个集成的时钟门控单元。每个工艺库都提供这些集成门控时钟单元,供设计师与enable输入信号、输入时钟信号和门控输出时钟信号一起使用。