clockGating

更新时间:2023-06-15 00:24:47 阅读: 评论:0

clockGating
⼀、为什么要做clock gating?
芯⽚中的功耗可以⼴义的定义为动态功耗和静态功耗。
静态功耗通常包含芯⽚在不翻转的状态下产⽣漏电功耗(关不紧产⽣的功耗)、衬底电流产⽣的功耗、热电⼦效应导致的电流效应⽽产⽣的功耗等及部分组成。通常情况下,静态功耗在前端设计阶段很难做出⼀些优化(可以做电源关断处理)。⽽是⼀般要基于ME/BE的流程或者⼯艺⽅⾯的改善才能够达到更好的结果。
静态功耗如下图:
sheila
redline>overlook
iuo动态功耗的来源通常包含了两个部分,第⼀部分,芯⽚中功耗消耗所占⽐例最⼤的⼀部分,是由于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的形式 – 基于AND/OR GATE电路的clock gating。
hug
这种基本形式的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的
tup/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的时间。
ezio
i will be therehuman nature如果要想LATCH+AND 电路能够为EN信号提供⼀整个cycle的运算时间的话,那么EN信号的source register⼀定要是rising-edge触发的;同理LATCH+OR电路如果想能够为EN信号提供⼀整个cycle的稳定时间,那么就需要EN信号的source register是falling-edge触发的。

本文发布于:2023-06-15 00:24:47,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/145350.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:功耗   信号   能够   过程   电路   状态   翻转
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图