企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
https://zhuanlan.zhihu.com/p/48159476 大多数低功耗设计手法在严格意义上说并不是由后端控制的,Clock Gating也不例外。在一颗芯片中,绝大多数的Clock Gating都是前端设计者或者EDA综合工具自动加上去的,后端只有在极端例外的情况下才会动到它们。 尽管如此,Clock Gating的影响与后端息息相关,甚至会引起后端的一些问题,因此我们有必要从头理解一下它的原理。 芯片功耗从原理上区分主要有两大类:**静态功耗(Static Power)**和**动态功耗(Dynamic Power)**。二者的形成原因如下: ![](https://img.kancloud.cn/ef/cd/efcd4666723c6c871fd02a238d2fdd9e_1375x447.png) 所谓**动态功耗**,主要是由于信号的翻转从而导致器件内部的寄生RC充放电引起的,而**静态功耗**则是由器件在通电状态下的泄漏电流(Leakage Current)引起的。对此,为了节约动态功耗,最初有个十分简单的想法:在芯片实际工作过程中,有些信号或者功能并不需要一直开启,那么就可以在它门不用的时候将其时钟信号关闭。这样一来信号不再翻转,从而能够有效减少动态功耗,这就是Clock Gating。 ![](https://img.kancloud.cn/35/a2/35a2f7703a7b24cd084f0f5b5390a9c9_1053x642.png) 那么Clock Gating是如何被加入到design中的呢?下面的例子介绍了在RTL阶段加入Clock Gating的方法: ![](https://img.kancloud.cn/08/2d/082d9c6ab0165edbe1e10e87ac1e30fb_426x334.png) 可以看到在加入Clock Gating之后,DFF的clock信号前多了一个使能端EN,从而可以控制该时钟信号的打开与关闭。 除此之外,在综合阶段,EDA工具同样支持自动插入Clock Gating。以Synopsys公司的Design Compiler工具为例,简单的插入Clock Gating的方法如下: ![](https://img.kancloud.cn/19/e5/19e5f1eefdae953e8e352713084223b3_1325x336.png) Clock Gating在后端会引起一些问题,尤其在Setup Timing以及时钟树综合阶段,有时候会需要做一些特殊的处理 为了尽量避免ICG的setup timing,解决办法之一是将ICG放在距离register(sink)尽量近的地方: ![](https://img.kancloud.cn/02/74/0274e9d15fb7d0ad9b7c1dc7e8336a5d_1312x875.png)