0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

什么是时钟门控技术?为什么需要控制时钟的通断呢?

冬至子 来源:老秦谈芯 作者:老秦谈芯 2023-06-29 15:38 次阅读

开始之前,我们首先来看一下什么是时钟门控(clock gating)技术,顾名思义就是利用逻辑门技术控制时钟的通断。

那么为什么需要控制时钟的通断呢?主要基于以下几个原因。首先,随着工艺的发展和设计规模的增大,时钟树上产生的功耗占整个SoC功耗的比例越来越高,有时几乎能占到50%左右。关于时钟树,可能前端的同学不熟悉,简单说几句,SoC的时钟一般是参考时钟经过PLL和数字分频器输出的,后面可能要连接驱动成千上万的寄存器clock端。

这时候任何一个单一的cell都不可能有这么大的驱动能力,因此要插入大量的buffer,而且为了保证到每个寄存器的延时一样,clock tree还要做balance。整个的时钟树大概长成下图这样,第一级buffer叫root,中间的buffer叫branch,最后一级的buffer叫leaf:

图片

图1 时钟树示意图

如果我们的芯片在不工作时,PLL依然有clock输出的话,那整个时钟树依然产生很大的功耗。

接下来我们再看一下边沿触发器的结构图。从图上我们能看出即使D端保持不动,clock端变化也会消耗一些能量。想深入研究的同学可自行推导(可以忽略两个复位信号)。

图片

图2 边沿D触发器

那么当D端长时间不变时,是不是可以把CP端的变化隔离掉以降低功耗呢?答案是肯定的。

最简单的办法就是把clock信号和一个EN信号做“与”操作,如下图:

图片

图3 简单的时钟门控逻辑

这个方法虽然简单,但是如果我们不能保证EN信号相对clock的到来时间和保持时间,那么就很可能不能产生门控时钟或者产生毛刺(glitch)。为了解决这个问题,人们提出了基于锁存器的时钟门控逻辑。由于锁存器能捕捉到EN信号并使它保持到产生完整的时钟脉冲,因此EN信号只需要在时钟活跃沿附近保持稳定即可。使用这种技术,每次只需要改变门的一个输入端来打开或关闭时钟就能保证电路的输出不含有任何毛刺或者尖峰脉冲了。

图片

图4 基于锁存器的时钟门控

现在的芯片生产商会提供时钟门控的标准单元,为了DFT测试的需要,标准门控单元还会带着test_en这种输入信号,今天为了不跑题就不介绍相关内容了。

接下来就是架构师和逻辑设计工程师关心的问题了,怎么设计门控逻辑。在SoC设计中,可以实现三种粒度的时钟门控设计,首先是粗粒度的设计,架构师要决定如何在时钟产生单元增加门控逻辑,根据SoC工作情况来判决是否关断某个时钟输出。这里提供一个思路,先根据功能划分出clock domain,然后再根据每个模块/IP之间的关系制定一张表,用于决定每个时钟域的开启和关闭状态。

有了这张表就相当于有了一个状态机,根据状态机的当前状态决定时钟是否关闭。至于状态跳转的判决,可以是硬判决也可以是软判决。硬判决的好处是相对速度快;缺点是灵活性较差,而且设计相对复杂,往往需要模块/IP有接口信号可用。软判决刚好相反,优点是灵活性高;缺点是延迟比较大,不适于频繁开关,对于某些设计来说,实现软判决还要增加处理器,毕竟不是所有SoC都有CPU/MCU/DSP的。

其次是中等粒度的设计,模块设计师来决定是否关断内部子模块的时钟输入。这里没啥好说的,完全取决于模块的功能和实现方案了。

最后,可以在逻辑综合阶段,由综合工具自动插入门控单元。前面两条依赖具体设计,最后一条不完全依赖设计,再多说几句。如果RTL代码写成下图左边的样子,在逻辑综合时不打开插CG的选项,综合出的电路如中图所示;而打开插入CG的选项,就会综合出下图右边的电路。由于CG单元本身也会产生功耗,一般一个CG单元后面要接多个寄存器才能达到节省功耗的效果。一般在综合时会通过选项选择3或4个。

图片

图5 综合插入CG的示意图

对于综合工具,其插入CG的判定很简单,就是看有没有上图代码中的enbale逻辑。如果没有就不插。所以如果逻辑设计师想要写出满足低功耗需求的RTL代码,就要尽量在代码中使用类似上图的enable逻辑。可能有喜欢刨根问底的同学要提问了“如果我的某段逻辑就没有enable怎么办?”这种情况下,可以试着向前或者向后找一找,有没有哪些逻辑可以借用过来。比如下图例子,绿色虚线代表可以增加的逻辑。RTL低功耗设计方法有很多,大家可以百度一下,或者等我以后写(此处有坑)。

图片

图6 前向借用逻辑产生时钟门控信号

最后,要说明一个关于clock gating的误区。时钟门控固然可以节省功耗,但并不是越多越好。当CG cell达到一定数量时,再增加CG cell对功耗节省的效果就不明显了。而且如前面所说,CG cell本身也是要产生功耗的,数量太多的话肯定要消耗不少,而且还会占用大量的面积,过犹不及。(再一次体现出做SoC的balance艺术,还是那句话,没有完美的SoC,只有完美的tradeoff)

图片

图7 CG数量与节省功耗的关系

结束前总结一下,clock gating技术对整体SoC设计的影响。

表1 低功耗技术总结

1.jpg

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    31

    文章

    5377

    浏览量

    121394
  • 分频器
    +关注

    关注

    43

    文章

    448

    浏览量

    50109
  • SoC设计
    +关注

    关注

    1

    文章

    148

    浏览量

    18832
  • 时钟门控
    +关注

    关注

    0

    文章

    7

    浏览量

    6862
  • PLL电路
    +关注

    关注

    0

    文章

    92

    浏览量

    6494
收藏 人收藏

    评论

    相关推荐

    XOR自门控时钟门控的不同之处

    时钟XOR自门控(Self Gating)基本思路和时钟门控类似,都是当寄存器中的数据保持不变时,通过关闭某些寄存器的时钟信号来降低设计的动
    的头像 发表于 01-02 11:34 1879次阅读
    XOR自<b class='flag-5'>门控</b>与<b class='flag-5'>时钟</b><b class='flag-5'>门控</b>的不同之处

    fpga门控时钟问题

    我在一个图像项目里用来很多的门控时钟来产生需要的时序波形,这样程序很不稳定,图像晃动很大,我猜想是不是因为门控时钟太多,程序不稳定,但是又没
    发表于 10-28 22:39

    什么是时钟门控?如何去实线时钟门控的设计

    的 20%。时钟消耗的可能更多,可能约为 40%!全局时钟无处不在,而且每个周期都会切换两次。正如我们将看到的,时钟门控避免了在不需要
    发表于 12-19 17:09

    基于门控时钟的CMOS电路低功耗设计

    阐述了如何运用门控时钟来进行CMOS电路的低功耗设计。分析了门控时钟的实现方式,如何借助EDA工具在设计中使用门控
    发表于 11-19 11:49 22次下载

    门控时钟时钟偏移研究

    所谓门控时钟就是指连接到触发器时钟端的时钟来自于组合逻辑;凡是组合逻辑在布局布线之后肯定会产生毛刺,而如果采用这种有毛刺的信号来作为时钟使用
    发表于 09-07 16:11 35次下载
    <b class='flag-5'>门控</b><b class='flag-5'>时钟</b>与<b class='flag-5'>时钟</b>偏移研究

    门控时钟

    门控时钟的资料,关于FPGA方面的资料。有需要的可以看看
    发表于 05-10 16:31 11次下载

    通常有两种不同的时钟门控实现技术

    时钟门控(Clock Gating)是一种在数字IC设计中某些部分不需要时关闭时钟技术。这里的“部分”可以是单个寄存器、模块、子系统甚至整
    的头像 发表于 06-13 16:48 2700次阅读

    什么是门控时钟 门控时钟降低功耗的原理

    clock) 是通过在时钟路径上增加逻辑门对时钟进行控制,使电路的部分逻辑在不需要工作时停止时钟树的翻转,而并不影响原本的逻辑状态。在AS
    的头像 发表于 09-23 16:44 1.4w次阅读
    什么是<b class='flag-5'>门控</b><b class='flag-5'>时钟</b> <b class='flag-5'>门控</b><b class='flag-5'>时钟</b>降低功耗的原理

    门控时钟实现低功耗的原理

    只有当FPGA工程需要大量降低功耗时才有必要引入门控时钟,若必须引入门控时钟,则推荐使用基于寄存器的门控
    的头像 发表于 07-03 15:32 2403次阅读

    什么是门控时钟?如何生成门控时钟

    由于门控时钟逻辑具有一定的开销,因此数据宽度过小不适合做clockgating。一般情况下,数据宽度大于8比特时建议采用门控时钟
    发表于 12-05 12:28 3275次阅读

    时钟门控的作用

    的可能更多,可能约为 40%!全局时钟无处不在,而且每个周期都会切换两次。正如我们将看到的,时钟门控避免了在不需要时钟脉冲时切换
    的头像 发表于 12-12 11:06 879次阅读

    一文详解门控时钟

    当寄存器组的输出端没有驱动或没有变化时,可以关掉寄存器组的时钟来减少动态功耗,此谓门控时钟 (Clock Gating, CG) 技术
    的头像 发表于 03-29 11:37 9842次阅读
    一文详解<b class='flag-5'>门控</b><b class='flag-5'>时钟</b>

    FPGA原型验证系统的时钟门控

    门控时钟是一种在系统不需要动作时,关闭特定块的时钟的方法,目前很多低功耗SoC设计都将其用作节省动态功率的有效技术
    的头像 发表于 04-20 09:15 1358次阅读

    FPGA原型平台门控时钟自动转换

    现代FPGA综合工具会自动执行门控时钟转换,而无需更改RTL代码中的设计,然而,我们可能需要适当地手动指导综合工具执行门控时钟变换。
    的头像 发表于 05-23 17:38 2012次阅读
    FPGA原型平台<b class='flag-5'>门控</b><b class='flag-5'>时钟</b>自动转换

    为什么需要时钟门控时钟门控终极指南

    时钟门控(Clock Gating)** 是一种在数字IC设计中某些部分不需要时关闭时钟技术。这里的“部分”可以是单个寄存器、模块、子系统
    的头像 发表于 06-29 15:58 2305次阅读
    为什么<b class='flag-5'>需要</b><b class='flag-5'>时钟</b><b class='flag-5'>门控</b>?<b class='flag-5'>时钟</b><b class='flag-5'>门控</b>终极指南