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

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

3天内不再提示

clock gating基础知识介绍:基本逻辑门控/ICG

冬至子 来源:黑的路白的路 作者:黑的路白的路 2023-12-01 14:50 次阅读

一、何为clock gating

芯片中大部分的动态功耗消耗在时钟网络中。这是由于时钟树上的单元(cells)有较高的翻转率、驱动能力较大且数量较多所导致的。

因此,为了有效减小时钟树上的动态功耗,人们引入了门控时钟(clock gating)技术,即用一个控制信号控制时钟的开启,在模块不工作时关闭时钟,在工作时打开时钟,从而降低触发器总的翻转率,达到降低功耗的目的。

插入门控时钟单元来降低芯片功耗的效果主要由单个门控时钟单元所控制的触发器或锁存器的数量决定。

• 新增的clock gating单元本身也会增加功耗和面积;当clock gating单元输出端控制的寄存器数目较少时,可能会导致增加的功耗比时钟翻转降低的动态功耗还要大。控制的寄存器数量越多,效果越明显。在综合的时候,可以设置采用clock gating的最低RegisterBank位数。

• 降低动态功耗和时钟关断的时间比例有关。如果一个模块关断的时间很短,那么加入clock gating就用处不大。

• clock gating的效果取决于其在时钟树的位置,是靠近clock tree的root还是sink。靠近root时,可以控制更多的寄存器,对功耗降低更有效;而靠近sink时,则timing更容易满足。

图片

例如,在这个电路中,只有当EN为1时,CLK信号才会重写DFF的数据,否则的话,所有的翻转都是无效的。因此,只需要实现CLK_G的波形即可。

对于简单逻辑门的clock gating,最简单的实现方式是使用AND门或OR门来实现,对CLK信号进行与或运算。

1. AND门clock gating

(1)基本概念

图片

对于AND门的clock gating,即高电平有效的gating,当EN为1时,门控打开,CLK_IN信号可以传递出去;而当EN为0时,门控关闭,CLK_IN信号则无法通过门控传递出去。

图片

如上图所示,对于AND门的clock gating,EN信号的切换必须发生在CLK_IN的低电平区间,否则在输出CLK_OUT时可能会出现glitch,如下图所示。

图片

(2)timing check

1)上升沿触发

图片

在上图中,UAND0/B pin是clock信号,而gating信号则由UDFF0/Q经过组合逻辑后输入到UAND0/A pin中。

在前面的讨论中,我们已经得知,如果EN信号来自上升沿触发的寄存器,则对于setup check来说,要求门控信号在上升沿之前到达;而对于hold来说,则要求门控信号只能在下降沿之后发生变化。

因此,针对上图电路中的UAND0/B pin,CLKA发出的gating信号只能在5 – 10ns的范围内达到,才能满足时序要求。

图片

此时,hold是半周期check,比较难meet;

以下是setup和hold check的timing report:

setup:
图片

hold:
图片

2)下降沿触发

如果使用下降沿触发的寄存器产生EN信号,则对于hold来说是0 cycle check,而对于setup来说则是半周期check。因此,在使用基于AND门的gating时,EN信号通常由下降沿触发的寄存器产生。

图片

如下图所示,即使使用下降沿触发的寄存器产生EN信号,对于基于AND门的gating,gating信号依然需要在5 – 10ns之间到达,以满足时序要求。

图片

setup和hold check的timing report:

setup
图片

hold
图片

2. OR门clock gating

(1)基本概念

图片

对于OR门的clock gating,即低电平有效的gating,当EN为0的时候,门控打开,CLK_IN可以传递出去;当EN为1的时候,门控关闭。

图片

需要注意的是,在实现OR门的clock gating时,EN信号的切换必须发生在CLK_IN的高电平区间,以避免在输出CLK_OUT时出现glitch,如下图所示。

图片

(2)timing check

1)上升沿触发

图片

类似于之前的讨论,如果EN信号来自上升沿触发的寄存器,则对于setup check来说,要求门控信号在下降沿之前到达;对于hold来说,则要求门控信号只能在上升沿之后发生变化。

因此,针对MCLK发出的gating信号,在这种情况下需要在0 – 4ns的范围内到达,才能满足时序要求。

图片

根据上述时序要求,此时hold为0 cycle check,而setup为半周期check。

setup和hold check的timing report:

setup
图片

hold
图片

2)下降沿触发

与之前讨论类似,如果EN信号来自下降沿触发的寄存器,则hold为半周期check,比较难以满足。因此,在基于OR门的gating技术中,建议使用上升沿触发的寄存器来产生EN信号,以确保时序要求的满足。

图片

3. 基于latch的clock gating

根据之前的讨论可知,在基于基本逻辑门的clock gating技术中,EN信号的时间窗口只有半个周期的时间,因此对于一些时序要求较为严格的电路,可能需要使用latch来实现timing borrow,以确保时序的满足。

(1) Latch + AND门的gating

图片

如上图所示,在AND门前面加入low-active latch,EN信号来自上升沿触发器。

当时钟信号是低电平时,latch处于透明状态,根据输入更新输出;当时钟信号从低电平变为高电平时,latch会读取数据输入端的输入信号,并将其保存在锁存器内部的状态中;波形图如下:

图片

由于这种latch是低电平有效的,因此在时钟高电平期间,即使EN信号存在glitch(如上图中红色虚线1所示),也不会影响latch的输出EN_Latch。

而在时钟低电平期间,EN信号的glitch会传递到latch的输出(如上图中红色虚线2所示),但由于EN_Latch需要与CLK信号做与运算,此时gating信号CLK_Gated仍然不会受到影响。

图片

如上图所示,无论EN在0-1 ns还是1-2 ns之间变化,CLK_Gated均不受影响,即EN可以在0-2 ns一个周期的时间窗口内到达;此时,hold是0 cycle check,setup是一个周期check;

基于这种结构的clock gating,既可以避免毛刺,同时也避免了EN信号只有半个周期的要求。

(2) Latch + OR门的gating

图片

与Latch + AND门不同的是,需要使用low-active latch,且EN信号来自下降沿触发的寄存器。

图片

4. ICG

(1)分离时钟门控

上述讨论中提到的基于latch的clock gating结构,指的是分离的时钟门控单元,当考虑skew时,依然可能会引入glitch的问题(以latch + AND门为例)。

在下图中,delay是指,当CLK为0的时候,latch透明,数据信号EN要传输到latch的输出端EN_Latch,所经过的一个锁存器的延迟(CLK to latch/Q delay);

CLK一路送到latch,另一路送到AND/B,当latch和AND在layout中相距较远时,此时CLK和CLK_B之间就会有skew存在;

CLK和CLK_B之间的skew会引入到CLK_Gated信号中,并可能导致毛刺问题。如果skew的时间差大于delay,就可能会在CLK_Gated信号中引入毛刺,毛刺的宽度大约为skew-delay。

图片

因此,在物理实现的时候,需要设置net weight,将latch和AND门靠近摆放;并且latch/CK需要设置non-stop pin。

(2)集成时钟门控ICG

现在几乎所有的标准单元库都提供了集成门控时钟单元(ICG),这种单元将上述所述的latch+ AND门或latch + OR门组合成一个标准单元。

值得注意的是,latch前面的OR门是为了DFT加入的,而控制信号SE可以根据需要选择test_mode或scan_en。

图片

ICG的应用相对简单,无需特别的设置,且CTS对于ICG的时序分析更加自动化。ICG的setup和hold时间都已经在库中进行了建模,并且其CK引脚默认为implicit non-stop pin。

以上内容只是简单的示例,实际上,根据sequential cell的类型、控制寄存器触发边沿和测试控制信号的位置,库中可以提供多种不同的ICG单元。

图片

(3)什么情况下会做clock gating check(tool infer)

可以通过经过cell的信号和经过的cell类型这两个条件判断:

1)经过cell的信号

• 被gating的clock信号,在下游需要当做clock使用(即达到reg的CK pin、output port);

• gating的EN信号,不能带有clock属性;或者原来带有clock属性的EN信号,经过gating cell后不再当做clock使用,或者被后面的generated clock打断了。

图片

如图所示,在AND门的输出端,定义了一个generated_clock,其master为CLKA。因此CLKB无法传播到AND后面,相当于下游不再作为clock信号使用。

在这种情况下,PT会将CLKA视为时钟信号,CLKB视为门控信号,并对AND门进行clock gating check。

gating的EN信号和被gating的clock信号,要fanout到gating cell相同的输出pin;如图中一个EN和CLK,一个faout到了A,另一个fanout到了B,那么工具是不会自动的做clock gating check的。

图片

以上三个条件要同时满足,工具才会做clock gating check。

2)经过的cell类型

除了上述三个约束条件外,另一个需要满足的条件是信号必须通过非复杂类型的cell。如果一个cell是non-unate cell,那么这个cell可以被视为复杂类型的cell。

对于复杂类型的cell(如常见的异或、同或和MUX),工具不会自动执行时钟门控检查。

append

• 可以通过使用set_clock_gating_check命令来显式地指定门控单元的时钟门控关系。

• 如果用户使用set_clock_gating_check命令设置的时钟门控检查类型与工具推断出的不一致,则通常会报警告,并且以用户的设置为准。

• 此外,用set_clock_gating_check设置的setup/hold时间值优先级高于库中定义的值。

• 如果不需要进行某些时钟门控检查,则可以使用set_disable_clock_gating_check命令将其禁用。

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

    关注

    31

    文章

    5305

    浏览量

    119909
  • 锁存器
    +关注

    关注

    8

    文章

    904

    浏览量

    41432
  • 触发器
    +关注

    关注

    14

    文章

    1995

    浏览量

    61022
  • 门控时钟
    +关注

    关注

    0

    文章

    27

    浏览量

    8934
  • CLK
    CLK
    +关注

    关注

    0

    文章

    127

    浏览量

    17112
收藏 人收藏

    评论

    相关推荐

    clock-gating的综合实现

    在ASIC设计中,项目会期望设计将代码写成clk-gating风格,以便于DC综合时将寄存器综合成clk-gating结构,其目的是为了降低翻转功耗。
    的头像 发表于 09-04 15:55 1782次阅读
    <b class='flag-5'>clock-gating</b>的综合实现

    浅析clock gating模块电路结构

    ICG(integrated latch clock gate)就是一个gating时钟的模块,通过使能信号能够关闭时钟。
    的头像 发表于 09-11 12:24 2223次阅读
    浅析<b class='flag-5'>clock</b> <b class='flag-5'>gating</b>模块电路结构

    FPGA的时钟门控是好还是坏?

    queries regarding clock gating. from what i've read/learnt - clock gating can be used for l
    发表于 02-21 10:21

    逻辑电路的基础知识

    FPGA (Field Programmable Gate Aray,现场可编程门阵列)是一种可通过重新编程来实现用户所需逻辑电路的半导体器件。为了便于大家理解FPGA的设计和结构,我们先来简要介绍一些逻辑电路的
    的头像 发表于 10-13 11:21 2.8w次阅读
    <b class='flag-5'>逻辑</b>电路的<b class='flag-5'>基础知识</b>

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

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

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

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

    一文详解门控时钟

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

    门控时钟检查(clock gating check)的理解和设计应用

    通过门控方式不同,一个门控时钟通常可以分为下面基类,
    的头像 发表于 06-19 16:49 3743次阅读
    <b class='flag-5'>门控</b>时钟检查(<b class='flag-5'>clock</b> <b class='flag-5'>gating</b> check)的理解和设计应用

    低功耗设计基础:Clock Gating

    大多数低功耗设计手法在严格意义上说并不是由后端控制的,Clock Gating也不例外。
    的头像 发表于 06-27 15:47 1726次阅读
    低功耗设计基础:<b class='flag-5'>Clock</b> <b class='flag-5'>Gating</b>

    AND GATE的clock gating check简析

    一个cell的一个输入为clock信号,另一个输入为gating信号,并且输出作为clock使用,这样的cell为gating cell。
    的头像 发表于 06-29 15:28 3012次阅读
    AND GATE的<b class='flag-5'>clock</b> <b class='flag-5'>gating</b> check简析

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

    开始之前,我们首先来看一下什么是时钟门控clock gating)技术,顾名思义就是利用逻辑门技术控制时钟的通断。
    的头像 发表于 06-29 15:38 2522次阅读
    什么是时钟<b class='flag-5'>门控</b>技术?为什么需要控制时钟的通断呢?

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

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

    低功耗之门控时钟设计

    clock gating和power gating是降低芯片功耗的常用手段,相比power gating设计,clock
    的头像 发表于 06-29 17:23 3714次阅读
    低功耗之<b class='flag-5'>门控</b>时钟设计

    Clock Gating的特点、原理和初步实现

    当下这社会,没有几万个Clock Gating,出门都不好意思和别人打招呼!
    的头像 发表于 07-17 16:50 4144次阅读
    <b class='flag-5'>Clock</b> <b class='flag-5'>Gating</b>的特点、原理和初步实现

    ASIC的clock gating在FPGA里面实现是什么结果呢?

    首先,ASIC芯片的clock gating绝对不能采用下面结构,原因是会产生时钟毛刺
    发表于 08-25 09:53 974次阅读
    ASIC的<b class='flag-5'>clock</b> <b class='flag-5'>gating</b>在FPGA里面实现是什么结果呢?