(5)clock gating
一、背景
随着工艺的发展和设计规模的增大,时钟树上产生的功耗占整个SoC功耗的比例越来越高,有时几乎能占到50%左右。通常情况下,数字电路中并非所有的逻辑电路都会一直处于工作状态,有些电路会经常处于等待状态,此时时钟信号的有无对逻辑电路的输出结果并无影响,但是时钟信号的接入会造成完全不必要的功耗浪费(比如寄存器时钟输入端的Switching Power以及时钟树上的动态功耗)。此时可以关掉这些电路的时钟信号,以避免功耗的浪费。
二、门控时钟概述
门控时钟有两种方案:一种直接针对寄存器的时钟进行门控,一种对模块级别的时钟进行门控。相比之下,直接对寄存器的时钟进行门控更为灵活。因为在很多时候,我们不能保证刚好将不需要门控的寄存器与需要门控的寄存器分配在不同的模块。因此下文主要介绍寄存器级的门控时钟。
门控时钟原理非常简单:在使能信号有效的时候,把时钟打开;使能信号无效的时候,时钟关闭。时钟关闭之后,它所驱动的寄存器就不会翻转,因此也就降低了动态功耗。
1.最开始的门控时钟
门控时钟最开始的电路如下:
这种门控时钟的有很严重的bug,具体我们从波形中可以看到:
可以看到,门控使能信号如果在时钟的高电平的时候开启或者关闭,就会导致产生的门控时钟高电平被截断,变成毛刺;门控使能信号对在时钟低电平时跳变对产生的门控时钟没有影响。因此我们的针对点就是高电平时的翻转。
2.改进后的门控时钟(现在所使用的结构)
通过改进电路,让门控使能信号在通过这个逻辑电路之后,仅仅在时钟低电平的时候进行翻转,而在时钟高电平的时候,不能翻转也就是保持。在此我们使用了D锁存器,使能信号通过低电平的锁存器之后,如果使能信号在高电平跳变,锁存器的输出信号是不会改变的,电路图如下所示:
为了详细说明,这里也给出了D锁存器的原理:
波形如下:
可以看到,改进后的电路中,在clk的上升沿,由于D锁存器处于锁定状态,因此gating signal的跳转不会造成影响。
三、门控时钟的优点
1.降低动态功耗
如下图所示的一款芯片,在90%的Flip Flop都采用了门控时钟之后,功耗甚至降低了70%,效果非常显著。
2.节省芯片面积
从下图可以看出,一个CG Cell取代了多个多路选择器。因此,在CG Cell选择合适的情况下还能减小系统面积。
四、clock gating的实现
clock gating是EDA工具自动优化出来的,一般使用的是Synopsys的DC工具,以下是一些如何在dc中插入门控时钟的教程博客:
基于design compiler中power compiler的低功耗设计方法 - 知乎 (zhihu.com)
【数字IC设计】DC自动添加门控时钟_为什么dc综合会插入很多clock gate-CSDN博客
ASIC设计学习笔记——使用DC工具自动添加门控时钟_dc门控时钟-CSDN博客
关于dc的综合过程,也有下面的博客介绍:
一文让你理解DC综合全过程 - 腾讯云开发者社区-腾讯云 (tencent.com)
Design Compiler入门 - 知乎 (zhihu.com)
小白的VCS与DC简单使用流程 - 知乎 (zhihu.com)
b站也有一些dc的使用教程
新新新手ICer练习(一):VCS+Makefile的基础操作_哔哩哔哩_bilibili
五、参考引用
数字设计中的时钟与约束 - IC_learner - 博客园 (cnblogs.com)
(数字IC)低功耗设计入门(五)——RTL级低功耗设计(续) - IC_learner - 博客园 (cnblogs.com)
https://mp.weixin.qq.com/s/NbxB8rhFGeNqkDsiFBhKUQ