13

阎浮提 · 2020年06月14日

低功耗设计基础:Clock Gating

大多数低功耗设计手法在严格意义上说并不是由后端控制的,Clock Gating也不例外。在一颗芯片中,绝大多数的Clock Gating都是前端设计者或者EDA综合工具自动加上去的,后端只有在极端例外的情况下才会动到它们。

尽管如此,Clock Gating的影响与后端息息相关,甚至会引起后端的一些问题,因此我们有必要从头理解一下它的原理。

芯片功耗从原理上区分主要有两大类:静态功耗(Static Power)动态功耗(Dynamic Power)。二者的形成原因如下:

动态功耗和静态功耗

所谓动态功耗,主要是由于信号的翻转从而导致器件内部的寄生RC充放电引起的,而静态功耗则是由器件在通电状态下的泄漏电流(Leakage Current)引起的。对此,为了节约动态功耗,最初有个十分简单的想法:在芯片实际工作过程中,有些信号或者功能并不需要一直开启,那么就可以在它门不用的时候将其时钟信号关闭。这样一来信号不再翻转,从而能够有效减少动态功耗,这就是Clock Gating。

那么Clock Gating是如何被加入到design中的呢?下面的例子介绍了在RTL阶段加入Clock Gating的方法:

RTL Clock Gating

可以看到在加入Clock Gating之后,DFF的clock信号前多了一个使能端EN,从而可以控制该时钟信号的打开与关闭。

除此之外,在综合阶段,EDA工具同样支持自动插入Clock Gating。以Synopsys公司的Design Compiler工具为例,简单的插入Clock Gating的方法如下:

Synthesis Clock Gating

Clock Gating在后端会引起一些问题,尤其在Setup Timing以及时钟树综合阶段,有时候会需要做一些特殊的处理。关于为何Clock Gating容易引起setup timing 的问题,请参考本专栏的文章【后端Timing基础概念之:为何ICG容易出现setup violation?

为了尽量避免ICG的setup timing,解决办法之一是将ICG放在距离register(sink)尽量近的地方:

ICG Setup

当然,EDA工具也提供了一些优化方法以便在早期发现和解决ICG的问题,这些技巧希望大家在实践中多多尝试和挖掘。

相关文章

如果大家有任何后端技术与职业发展方面的问题,抑或关于数字后端感兴趣的技术话题想要了解和探讨,欢迎关注我的知乎专栏: 数字IC后端设计工程师修炼之路

同时欢迎关注微信公众号:数字后端芯讲堂,一起探讨技术,共同提升!
本极术专栏也会同步更新芯片设计后端的技术干货,也请关注数字IC后端设计工程师修炼之路

推荐阅读
关注数
3845
内容数
46
本专栏致力于将数字芯片后端设计的技术,经验和技巧介绍给想入门或提高的你。一方面从基础知识方面的讲解使初学者少走弯路,另一方面用实际工作中的经验技巧方便从业者提高和交流。
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息