IC设计:clock Gating是什么?

本文来自:https://blog.csdn.net/weixin_43727437/article/details/104966528

本文仅作学习记录,精彩内容访问前辈原文。

一、为什么要做clock gating?

1-静态功耗

芯片中的功耗可以广义的定义为动态功耗和静态功耗。

静态功耗通常包含芯片在不翻转的状态下产生漏电功耗(关不紧产生的功耗)衬底电流产生的功耗热电子效应导致的电流效应而产生的功耗等及部分组成。

通常情况下,静态功耗在前端设计阶段很难做出一些优化(可以做电源关断处理)。而是一般要基于ME/BE的流程或者工艺方面的改善才能够达到更好的结果。
静态功耗如下图:
在这里插入图片描述

2-动态功耗

动态功耗的来源通常包含了两个部分,

1-第一部分

  • 第一部分,芯片中功耗消耗所占比例最大的一部分,是由于cell的充放电产生的功耗,如下图,以Inverter(变换)电路为例,由一个PMOS和一个NMOS构成,在输出端可以等效认为有一个对地电容,

每次IN从0到1,PMOS会从导通状态变为断开状态。相反NMOS会从断开状态变为导通状态。从而导致电容从NMOS对地放电。

相反, 当IN从1到0,会导致电容通过PMOS充电,这种充放电的过程会消耗很大一部分电能,从而产生功耗。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

第二部分

动态功耗的另一部分是由于cell在翻转过程中PMOS和NMOS同时导通的瞬间产生的功耗,又称作internal power,如下图,cell在翻转过程中,总会出现一小段时间PMOS和NMOS同时处于导通状态,这时就会出现从VDD到GND的一条直流通路,这个过程虽然很短,但是处于这个过程中,电路中的电阻是非常小的,所以整个通路中电流就非常大。

但是尽管如此,与上面所讲的动态功耗相比,所占比例还是相对较小。
在这里插入图片描述

小结

由上面分析可以看出,动态功耗到产生都是由cell翻转导致的。而在芯片中,翻转频率最高的路径便是clock path了。并在时钟路径上要做的就是CTS处理(clock tree)的,就会导致整个clock路径上的CK-BUF或CK_INV特别多。

而clock每个cycle的翻转会带动整条path上所有cell的翻转。据统计,一个芯片中,clock路径上的这种功耗消耗会能够占据到整个芯片功耗比例的40%甚至更多。所以对clock路径做动态关断,能够很大程度上节省功耗消耗这种对clock进行关断的技术就被称作是clock gating。

二、如何做clock gating(基于CELL)?

在这里插入图片描述

如上图所示,data_out在被实现之后可以认为是一个DFF,此DFF的数据并不是每个clock cycle都会有效,只有在data_en==1的时候。DFF在clock的上升沿才会被重写一次。而在其他clock cycle的上升沿,DFF数据实际上是不会被重新覆盖额。这就给我们提供了一个思路,clock的翻转其实只有在data_en为1的前提下才是有意义的,其他cycle都是无效的翻转。

**那如何将这些无效的clock翻转带来的功耗消耗节约下来呢?**我们其实只要能够实现如下的clock波形就可以了。

在这里插入图片描述

有了这个思路,我们就容易寻找解决方案了。看到波形我们很容易的就能够想到可以通过AND-GATE或者OR-GATE的方式,将clock做与/或运算,这样就能够达到我们想要的效果了。

通过AND-GATE或者OR-GATE的方式跟原来CLK做运算,**将原来的CLK转化为CLK_G之后,**就得到了一个只有在EN有效的时候clock 才会翻转的波形。这种形式的转化过程就是最基本clockgating的形
在这里插入图片描述
这种基本形式的clock gating虽然电路简单,但在真正实现和使用的过程中是要考虑和规避一些问题的。
在这里插入图片描述
基于AND-GATE形式的clock gating,由于AND的功能,会将clock在高电平时的信号放过去。这样就会引入一个问题,我们必须要保证EN信号在clock高电平期间是稳定的,不能有glitch,否则就会使得到的clock –CLK_G产生glitch(毛刺)。

那如何保证EN信号在clock高电平期间时稳定的呢?很容易想到,EN信号的产生source,不能是源于上升沿触发的register。如果EN信号的产生源于上升沿触发的register,那么经过组合逻辑之后,很容易在clock的高电平期间产生如下glitch
在这里插入图片描述
如果要解决这个问题,将EN的source在register的下降沿触发,**这样EN信号在第一个clock上升沿来临之前有半个cycle的时间,可以让EN信号稳定下来,**即,达到了让EN信号在clock上升沿到来之前稳定的目的。

并且基于与门形式的clock gating电路,ME/BE工具在check timing的时候,一定能check并约束到这一点。

如果EN信号在clock上升沿之前能够稳定,即整个clock高电平期间EN信号不会有glitch,这样就能够保证最终产生的clock是稳定没有glitch的。(有待理解)

在这里插入图片描述
同理,基于OR-gate的clock gating也需要有类似的考量。只是通过分析之后会发现,其需要EN产生的register采用上升沿触发的register。

最后我们可以总结得到:如果要基于ANG-GATE做clock gating,需要EN产生logic是falling edge触发的DFF;如果要基于OR-GATE做clock gating,需要EN产生logic是rising edge触发的DFF。

上面我们在分析的过程中,也提到了基于这种基本CELL方式clock gating,EN信号出来到运算稳定,只有半个cycle的时间。

三、如何做clock gating(高频基于ICG)?

如果要gating的clock时钟频率特别高的话,此处就很有可能会存在很难收敛的timing问题。

要解决上面问题,可以让EN信号的稳定时间延长,换句话说,就是要“借”半个时钟周期来让EN信号稳定。这可以可以用另一个基本CELL —LATCH(锁存器)在电路中可以实现借时间的用途,称作timing borrow

关于latch在之前的文章有讲过,在数字电路中,很不希望出现锁存器,其中主要一点就是它的timing borrow属性,在做timing时候,会增加很大难度。

但是有两个地方经常使用到latch电路,一个就是这里要说的实现clock gating。

另一处就是DFT中为了解决hold timing问题。

latch + AND gating电路

原来的AND之前加入一级clock low-active的latch,构成如图所示的电路结构,其时序图如图中下所示。

由于加入的LATCH是低电平有效的,所以在CLK为高电平期间,EN信号就算是不稳定,有glitch存在,也不会通过LATCH往后传递。而LATCH之后加入的AND电路,又保证了低电平期间传给LATCH的EN毛刺被挡住了。

这就保证了EN信号在整个CLK cycle之内都可以随意toggle。而LATCH的特殊属性,在整个CLK为低的半个cycle期间EN信号都可以锁存进latch,只要保证EN信号在下一个CLK的上升沿来临之前稳定(保证latch的setup/hold time),就能够将正确的EN信号锁存进去。

在这里插入图片描述
基于这种结构clock gating电路,就能够很好地解决了之前提到的EN信号只有半个cycle的稳定时间的问题。

latch + OR gating电路

基于LATCH+OR的clock gating电路形式。如图二所示,其跟AND形式的不同点就是,前面的LATCH要换成clock high-active,并且根据EN信号的高低电平有效不同,会决定图中inverter CELL是否存在,可自行推导,不在赘述。

同样基于这种结构的clock gating电路,也能够为EN信号稳定争取到一个CLK cycle的时间。

在这里插入图片描述
如果要想LATCH+AND 电路能够为EN信号提供一整个cycle的运算时间的话,那么EN信号的source register一定要是rising-edge触发的;同理LATCH+OR电路如果想能够为EN信号提供一整个cycle的稳定时间,那么就需要EN信号的source register是falling-edge触发的。

STM32时钟

随着能源的日益短缺和地球的变暖,对电子产品的功耗要求越来越重要,如何降低电子产品的功耗是每一个电子工程师所要思考的问题。

对于半导体产品来说,一个数字电路的功耗有2部分构成,其一是静态功耗,通常表现为电子线路的漏电流,控制这部分功耗主要决定于生产工艺和所用的材料;其二是动态工作电流,而影响这部分功耗的因素很多,如电路设计的方式,线路的复杂程度,工作时时钟频率等。

本文谈的时钟门控技术就是一种非常简单和有效的功耗控制方法,它的基本原理就是通过关闭芯片上暂时用不到的功能和它的时钟,从而实现节省电流消耗的目的。

STM32中使用了这种时钟门控技术,请看下图是STM32的时钟分配示意图:

在这里插入图片描述
图中以橙色标注的那些与门就是用于控制不同模块的时钟,用户可以在程序中通过适当的寄存器位,打开或关闭对应模块的时钟,以达到减低功耗的目的。

(http://news.eeworld.com.cn/mcu/2015/0414/article_19372.html)

猜你喜欢

转载自blog.csdn.net/weixin_45264425/article/details/130329246