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

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

3天内不再提示

低功耗之门控时钟设计

冬至子 来源:全栈芯片工程师 作者:Chiptist 2023-06-29 17:23 次阅读

clock gating和power gating是降低芯片功耗的常用手段,相比power gating设计,clock gating的设计和实现更为简单,多在微架构、RTL coding阶段即可充分考虑,在综合时(compile_ultra -gate_clock)即可自动mapping到clock gating结构上去。本文先讲解clock gating,ICG的基本结构如下图所示:

图片

门控时钟电路有效的降低了动态功耗,因为其减少了时钟树的翻转行为、减少了寄存器clock pin的翻转行为、减少了大量MUX逻辑消耗的功耗,一般可以节省20%-60%的功耗,同时也节省了MUX面积。

门控时钟单元分成两种,一种是带锁存器(latch based)的门控时钟单元,一种是不带有锁存器(latch free)的门控时钟单元。latch based的门控时钟单元能避免毛刺,因此更推荐使用。

门控时钟又分为离散的和集成的(ICG)两种:

  1. 离散的CG单元
    1)带latch的CG(默认)
    set_clock_gating_style -sequential_cell latch
    2)不带latch的CG
    set_clock_gating_style -sequential_cell none
  2. 集成的CG单元(ICG)
    set_clock_gating_style -negtive_edge_logic "integrated"

通常,在执行命令compile_ultra -gate_clock前需要设置好clock gating的相关配置选项,具体选项如下:

图片

set_clock_gating_style的options解析如下:

  • -sequential_cell none | latch

1)-sequential_cell latch(默认)指带latch的CG(latch based style), 并可指定使用具体某个latch cell,比如:-sequential_cell latch:lib_cell。

2)-sequential_cell none指不带latch的CG(latch free style),比如:

与门做CG,时钟使能为1时钟穿透AND,但posedge trigger存在毛刺;

或门做CG,时钟使能为0时钟穿透OR,但negesge trigger存在毛刺;

  • -minimum_bitwidth minsize_value

为了节省gating cell的数量,需达到一定寄存器数量的register bank才使用gating cell。

  • -setup setup_value 指定建立时间

  • -hold hold_value 指定保持时间

  • -positive_edge_logic {cell_list | integrated [active_low_enable]

    [invert_gclk]}

    1. {cell_list}用于指定“上升沿”触发使用的CG单元。需要注意的是-sequential_cell指定的是否有latch应该和cell_list的对应电路是否含有latch保持一致,如:

      set_clock_gating_style -sequential_cell latch -positive_edge_logic { latch and }

      set_clock_gating_style -sequential_cell none -positive_edge_logic { or }

    2. {integrated}用于表明使用上升沿触发的ICG单元。

      如下图所示,该ICG单元就是一个pre-conctrolled positive-edge triggered clock gating latch。

    图片

  • -negative_edge_logic {cell_list | integrated [active_low_enable]

    [invert_gclk]}

  1. {cell_list}用于指定"下降沿”触发使用的CG单元。需要注意的是-sequential_cell指定的是否有latch应该和cell_list的对应电路是否含有latch保持一致,如:

    set_clock_gating_style -sequential_cell **latch ** -negtive_edge_logic { latch or }

    set_clock_gating_style -sequential_cell ** none ** -negtive_edge_logic { and }

    如下图,-sequential_cell none指定latch-free模式,但是cell_list却指定了latch、and/or, 这种情况下,DC工具仍然会综合出latch-based clock-gating的电路。
    图片

  2. {integrated}用于表明使用下降沿触发的ICG单元。

如下图所示,该ICG单元就是一个pre-conctrolled negative-edge triggered clock gating latch。

图片

  • -control_point none | before | after
    对于DFT测试电路,为了满足电路可控,需要引入TE信号来控制latch的使能端。before就是在Latch之前插入或门,将TE信号和时钟使能信号或起来然后连接到Latch的D端。同理,after就是在Latch之后插入或门,将TE信号和Latch的Q端或起来然后连接到IGG的AND门。
  • -num_stages num_stages_count
    工具默认只使用一级门控时钟,而使用多级门控时钟可进一步节省面积、降低功耗。如下图,a信号被三个CG单元共享,那么将a信号做成第一级CG,b、c、d做成第二级CG。这样,增加了一个CG但减少了3个与门,同时节省了组合逻辑和第二级的CG的功耗。
    set_clock_gating_style -num_stages 2
    图片
    那么如何编写门控时钟的RTL代码风格呢?
    第一种风格:

图片

综合出来电路有32个MUX2选择器:

图片

我们换一种写法,DC工具就可将load_cond作为Latch的使能,从而一个clock gating cell便取代了32个MUX2,节省了大量面积的同时,还节省了32个寄存器的动态功耗,32MUX2组合逻辑的功耗,也节省了时钟树上buffer的功耗。

图片

那么如何保证ICG中Latch的时序呢?

除in2reg、reg2reg、reg2out、in2out类型路径外,我们会经常看到reg2cgate的setu/hold检查,即clock gate上enable信号要比clock信号提前到达一段时间setup和保持一段时间hold。

通常clock gate上的setup较难收敛,如下图

  1. register CK端作为launch clock发起端,latch的CK端作为capture捕获端,它们之间天然会存在skew k,即clock tree必然不balance。
  2. Latch的时序检查只有半个时钟周期;
  3. register Q到Latch EN的combo逻辑延迟;

解决办法:

  • 一般将clock gate 单元放在寄存器附近以减小skew。
  • 也可以采用set_clock_gating_check,加大对clock gating时序约束。

图片

对于clock gating cell,synthesis时就会插入,和CTS没太大关系,一般只要确保clock timing check打开的就行。

另外,CTS工具会对其做clone、declone操作。

  • ICG cell Clone: 同一个ICG单元控制的寄存器较多或者分布不均匀时,就会导致ICG时钟连线过长,可通过clone ICG cell进行优化;
  • ICG cell De-Clone: 同一个ICG单元控制的寄存器较少,导致ICG cell数量过多,可通过De-clone ICG cell进行优化;
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    31

    文章

    5336

    浏览量

    120230
  • 锁存器
    +关注

    关注

    8

    文章

    906

    浏览量

    41496
  • RTL
    RTL
    +关注

    关注

    1

    文章

    385

    浏览量

    59761
  • DFT
    DFT
    +关注

    关注

    2

    文章

    231

    浏览量

    22712
  • 门控时钟
    +关注

    关注

    0

    文章

    27

    浏览量

    8948
收藏 人收藏

    评论

    相关推荐

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

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

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

    的竞争,因此将电路分成多个电源域并根据要求关闭它们,并且在设计每个时序电路的同时节省功耗,这两点至关重要。时序电路(如计数器和寄存器)在现代设计中无处不在。本文以约翰逊计数器为例介绍了如何采用有效门控时钟
    发表于 09-30 16:00

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

    什么是时钟门控?有几个因素会影响电路的功耗。逻辑门具有静态或泄漏功率,只要对其施加电压,该功率大致恒定,并且它们具有由切换电线产生的动态或开关功率。Flip-flop触发器非常耗电,大约占总功率
    发表于 12-19 17:09

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

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

    基于门控时钟低功耗电路设计方案

    在众多低功耗技术中,门控时钟对翻转功耗和内部功耗的抑制作用最强。本文主要讲述门控
    发表于 02-21 09:31 3512次阅读
    基于<b class='flag-5'>门控</b><b class='flag-5'>时钟</b>的<b class='flag-5'>低功耗</b>电路设计方案

    应用于片上系统中低功耗IP核设计的自适应门控时钟技术

    摘要:门控时钟技术一直以来是降低芯片动态功耗的有效方法,文章结合片上系统(SOC)的结构特性和设计特点,分析已有的各种门控时钟技术的优缺点,
    发表于 02-23 13:53 36次下载

    低功耗时钟门控算术逻辑单元在不同FPGA中的时钟能量分析

    低功耗时钟门控算术逻辑单元在不同FPGA中的时钟能量分析
    发表于 11-19 14:50 0次下载

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

    constrained,mobile端不能够充更多的电就只能尽可能地降低功耗了(无法开源只能节流呀),也因为时钟门控是降低芯片动态功耗最简单,最常用的方法之一。
    的头像 发表于 06-13 16:48 2648次阅读

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

    门控时钟的设计初衷是实现FPGA的低功耗设计,本文从什么是门控时钟门控
    的头像 发表于 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>降<b class='flag-5'>低功耗</b>的原理

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

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

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

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

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

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

    PyTorch教程10.2之门控循环单元(GRU)

    电子发烧友网站提供《PyTorch教程10.2之门控循环单元(GRU).pdf》资料免费下载
    发表于 06-05 18:15 0次下载
    PyTorch教程10.2<b class='flag-5'>之门控</b>循环单元(GRU)

    门控时钟低功耗在Placement阶段有什么技巧?

    门控时钟技术可以用来降低电路的动态功耗,且在一定程度上能减小电路的面积。
    的头像 发表于 06-29 16:45 1343次阅读
    <b class='flag-5'>门控</b><b class='flag-5'>时钟</b><b class='flag-5'>低功耗</b>在Placement阶段有什么技巧?

    FSMs低功耗设计

    低功耗设计是当下的需要!这篇文章:低功耗设计方法论的必要性让我们深入了解了现代设计的意图和对功耗感知的需求。在低功耗方法标签下的时钟
    的头像 发表于 10-17 10:41 678次阅读
    FSMs<b class='flag-5'>低功耗</b>设计