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

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

3天内不再提示

一文详解门控时钟

CHANBAEK 来源:数字IC与好好生活的两居室 作者:除夕之夜啊 2023-03-29 11:37 次阅读

门控时钟

寄存器组的输出端没有驱动或没有变化时,可以关掉寄存器组的时钟来减少动态功耗,此谓门控时钟 (Clock Gating, CG) 技术。

最简单的一个带 EN 端的 D 触发器的 Verilog 逻辑描述如下:

always @(posedge CLK)
    if (EN)
        Q <= D ;

当不采用门控时钟结构时,DC 综合时会在触发器的输入端增加为带反馈端的多路选择器威廉希尔官方网站 ,如下图 (1) 所示。

当采用门控时钟结构时,DC 综合时仅会在触发器的时钟端增加一个时钟门控单元 (CG cell),而没有多路选择器结构,如下图 (2) 所示。

图片

当多个寄存器组共用一个控制端时,结构上的优化尤为明显,如下图所示:

图片

综上所述,门控时钟的优点有:

(1) 寄存器时钟端翻转率降低,动态功耗降低。

(2) 时钟树网络开关率降低,动态功耗降低。

(3) CG 扇出越大,结构上节省的选择器越多,硬件资源消耗越少。

(4) 相比于 PG (Power Gating),CG 结构相对简单,在综合时可自动插入。

产生门控时钟

产生门控时钟的条件为:

寄存器组共用同一个时钟;

寄存器组的控制端都是同步的;

寄存器组都是由同一个变量中推断而来的。

自动插入 CG

DC 综合时,使用以下命令与参数,设计中符合要求的寄存器便会被综合成带 CG 结构的触发器。

compile_ultra -gate_clk

DC 综合时插入的 CG 又分为离散的 CG cell 与集成的 CG cell (ICG)。离散的 CG cell 使用 Latch 与基本逻辑门单元组合而成,集成的 CG cell 是工艺厂家提供的一个带有时钟门控功能的特殊单元。

DC 中插入离散的 CG 命令为:

# 使用带 latch 结构的离散的 CG
set_clock_gating_style -sequential_cell latch
# 离散的 CG 中指定具体的 latch cell "lib_cell"
set_clock_gating_style -sequential_cell latch:lib_cell

DC 中插入没有 Latch 结构的离散 CG 时,命令如下:

# 使用或门逻辑,生成上升沿工作的寄存器的时钟门控
set_clock_gating_style -sequential_cell none -pos {or}

因为使用与门生成 CG 时在时钟上升沿容易出现毛刺,使用或门生成 CG 时在时钟下降沿容易出现毛刺,所以参数 -pos 一般配合 {or} 使用,-neg 一般配合 {and} 使用。

# 使用与门逻辑,生成下升沿工作的寄存器的时钟门控
set_clock_gating_style -sequential_cell none -neg {and}

假如 -sequential_cell 与 -pos/-neg 选项同时使用,那么两个选项指定的 CG 威廉希尔官方网站 结构应该保持一致,例如:

set_clock_gating_style -sequential_cell latch -neg {latch and}
set_clock_gating_style -sequential_cell none -neg {and}

DC 中插入 ICG 时,命令如下:

# 使用集成的 CG cell
set_clock_gating_style -negative_edge_logic {integrated}
# 指定使用具体的集成 CG cell "lib_cell"
set_clock_gating_style -negative_edge_logic {integrated:lib_cell}

手动插入 CG

如果设置了自动产生时钟门控(-gate_clk),DC 综合时会对 RTL 设计中符合要求的寄存器进行时钟门控。但如果在 RTL 设计中,人为的编写时钟门控逻辑,DC 对此不会插入 CG ,如以下 Verilog 描述。

assign gated_clk = clk & en ;
always @(posedge gated_clk or negedge rstn) begin
    if (!rstn)
        data_out <= 8'b0 ;
    else 
        data_out <= data_out + 1'b1;
end

人为编写的时钟门控逻辑中,时钟很容易出现毛刺,增加了设计的不稳定性。

为了消除人为编写时钟门控逻辑带来的隐患,DC 中需要使用以下命令对手动编写的 CG 进行识别与替换。

replace_clock_gates

此命令实现的优化结果示意图如下:

图片

禁止使用 CG

由于面积、时序等原因,需要禁止使用 lib 中的某一种 CG cell 时,可以使用以下命令:

#禁止使用指定的 CG cell:"lib_cell"
set_dont_use -power {lib_cell}

其中,-power 选项不可或缺,否则 ICG cell 的 dont_use 属性会被忽略。

门控时钟报告

可以使用以下命令,查看时钟门控单元的插入情况,以便确认是否需要对威廉希尔官方网站 进行修改。

report_clock_gating

但是如果 RTL 设计中,存在人为例化的 CG cell,命令 report_clock_gating 是不能识别的,需要设置以下命令:

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

    关注

    31

    文章

    5342

    浏览量

    120310
  • Verilog
    +关注

    关注

    28

    文章

    1351

    浏览量

    110091
  • 功耗
    +关注

    关注

    1

    文章

    810

    浏览量

    31943
  • 触发器
    +关注

    关注

    14

    文章

    2000

    浏览量

    61146
  • 门控时钟
    +关注

    关注

    0

    文章

    27

    浏览量

    8949
收藏 人收藏

    评论

    相关推荐

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

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

    fpga门控时钟问题

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

    什么是门控时钟

    什么是门控时钟
    发表于 11-05 07:26

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

    繁忙。它只需要用于分支指令。而浮点逻辑只需要用于浮点指令,等等。在下面的跟踪波形中,大多数信号值是灰色的,表明它们没有被使用。显示时钟门控的 CPU 波形如前所述,将时钟信号驱动到触发器会消耗总功率的很大
    发表于 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设计中某些部分不需要时关闭时钟的技术。这里的“部分”可以是单个寄存器、模块、子系统甚至整个SoC。 为什么需要
    的头像 发表于 06-13 16:48 2651次阅读

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

    门控时钟的设计初衷是实现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>降低功耗的原理

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

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

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

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

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

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

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

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

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

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

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

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