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

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

3天内不再提示

AMD Vivado Design Tool综合中的门控时钟转换

XILINX开发者社区 来源:XILINX开发者社区 2025-05-14 09:05 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

本文作者:AMD 工程师Alan Schuler

传统上,使用门控时钟ASIC 设计中降低系统功耗的常见方法。通过门控时钟,可在非必要时阻止整组寄存器的状态转换。

4185581e-2a6a-11f0-9310-92fbcf53809c.png

图 1:使用与门进行时钟门控

在图 1 中,当“gate”信号设为低电平时,所有寄存器均关闭且不消耗动态功耗。

此类编码风格并非总能有效适配 FPGA。原因在于 FPGA 具有先进的专用时钟资源,其设计旨在将时钟结构的时序设为最佳设置以避免时钟偏差。在该结构中插入门电路可能干扰这些资源。此外,这些时钟资源并非无限,因此不同门控时钟的数量过多可能导致 FPGA 设计出现问题。

419d219c-2a6a-11f0-9310-92fbcf53809c.png

图 2:时钟结构内的 LUT

解决这些问题的方法之一是重写 RTL 代码以移除门电路。但这涉及大量工作,且在 FPGA 中进行原型设计时,大多数情况下不允许更改 RTL 代码。另一种解决方案是让综合工具转换这些门电路,使时钟直接驱动寄存器时钟管脚,而门控逻辑则转至时钟使能管脚。AMD Vivado Design Tool 支持此功能。

41b709e0-2a6a-11f0-9310-92fbcf53809c.png

图 3:相同电路完成门控时钟转换后的结果

有必要提醒设计者,执行此项转换虽有助于工具利用专用时钟资源,但现在也会改用不同的时钟使能信号。这意味着设计中将包含更多控制集,从而可能引发其他影响。

此外,仿真结果也可能受到影响。以图 2 和图 3 为例。在此示例中,时钟和门控信号均为低电平,随后门控信号在时钟保持低电平期间产生高低脉冲。在图 3 中这计为一次时钟脉冲,但在图 4 中则忽略此次脉冲。 应谨慎处理,避免此类情况。

控制门控时钟

门控时钟转换的控制是通过以下三项组合来完成的。XDC 文件中的时钟约束、GATED_CLOCK 综合属性,以及 gated_clock_conversion 综合设置。XDC 文件中的时钟约束会将设计中时钟的运行频率需求告知工具。其形式如下:

create_clock -period 5 [get_ports clk]

通过使用约束,该工具即可识别哪些信号可以转换为直接时钟。

GATED_CLOCK 属性允许用户直接告诉工具,门控逻辑中的哪个时钟应驱动寄存器的时钟输入。 该属性会被写于 RTL 文件内。

(* gated_clock = "yes" *) input clk;

gated_clock_conversion 选项用于对综合执行门控时钟转换的方式加以控制。若设为“off”,则永不转换门控时钟。若设为“on”,那么它将在具有 GATED_CLOCK 属性的信号上执行门控时钟转换。

若设为“auto”,那么当该工具通过 XDC 文件识别出哪些信号是设计中的真实时钟时,它将执行转换。此外,若有多个可转换的时钟,则可使用 GATED_CLOCK 属性将应使用的特定时钟告知工具。

当该工具能检测到门控时钟并开启转换功能时,它会尝试将该时钟与门电路中的逻辑其余部分分离。若能完成此操作,那么该时钟将直接驱动寄存器的 C 管脚,其余部分将被分配给寄存器的时钟使能逻辑。

执行门控时钟转换时需考虑的重点之一是层级。转换门控时钟时,该工具会将时钟与逻辑其余部分分离,并创建新时钟和时钟使能。若门控时钟与新时钟驱动的寄存器在相同层级内处于不同层次,且存在保持整个层级静态的约束(如 DONT_TOUCH、KEEP_HIERARCHY 等),工具将无法转换时钟。

41c9942a-2a6a-11f0-9310-92fbcf53809c.png

图 4:层级内不同层次的时钟门控电路

基础门电路

最常见的门控时钟形式之一是通过基础门电路(例如,与门)实现的时钟门控。

RTL 代码示例:

assign my_clk = clk1 & gate1 & gate2;

此代码通过两个不同使能信号对时钟进行门控,细化视图如下:

41dce3fe-2a6a-11f0-9310-92fbcf53809c.png

图 5:含与门的时钟门控

综合时,如果开启了门控时钟转换,并将 gated_clock_conversion 设置为 auto(自动),clk1 占一个时钟周期,或在 clk1 上将 GATED_CLOCK 属性置位,那么该工具将把 clk1 信号连接到寄存器的 C 输入,并把 gate1 和 gate2 信号连接到触发器的 CE 输入。

41ef8518-2a6a-11f0-9310-92fbcf53809c.png

图 6:前一电路的综合后结果

或门转换同样适用。

41ff637a-2a6a-11f0-9310-92fbcf53809c.png

图 7:在时钟电路中使用或门

上述电路转换后如下所示:

420f1018-2a6a-11f0-9310-92fbcf53809c.png

图8:或门转换结果

Vivado 综合工具还可转换比与门及或门更复杂的门电路。

寄存的门电路

Vivado 还可转换已寄存的门电路。例如,以下编码风格将创建一个寄存器,供另一个寄存器用作时钟:

42227ce8-2a6a-11f0-9310-92fbcf53809c.png

若首个 clk 信号有适当约束,那么该工具亦可转换此类门电路。例如:

create_clock -period 5 [get_ports clk]

4235b498-2a6a-11f0-9310-92fbcf53809c.png

图 9:用作时钟的寄存器的细化视图

转换后如下所示:

424499d6-2a6a-11f0-9310-92fbcf53809c.png

图 10:寄存的门电

时钟分频器(1 位)

Vivado 还可处理更复杂的门电路,例如,时钟分频器。

此时钟的代码如下所示:

425e7c3e-2a6a-11f0-9310-92fbcf53809c.png

该模块会将输入时钟“clk_in”分频,得到一个新时钟“clk_out_div_2”,速度减半。

这两个时钟均被指定为模块输出。设计其余部分会使用这两个时钟来驱动设计中的时序元件。

4275040e-2a6a-11f0-9310-92fbcf53809c.png

图 11:时钟分频器

由于此类时钟频率不同,因此需使用生成时钟约束。

428bb7b2-2a6a-11f0-9310-92fbcf53809c.png

这些约束会基于输入 clk_in 创建另一个名为 clk_in 的时钟,其周期为 2.5 ns。

随后,它会创建另一个新时钟,其频率为 clk_in 一半,其时钟源为 div_2_reg 触发器的 Q 管脚。

若不转换时钟而直接综合并检查时序,会发现由 div_2_reg 时钟驱动的寄存器路径的周期均为 5 ns。

命令示例:

report_timing -name timing -to out1_2_reg/D

该工具将返回:

4298a2ec-2a6a-11f0-9310-92fbcf53809c.png

图 12:无时钟门控的 2 分频时钟的时序报告

若以时钟门控来运行相同的设计,会引发问题。

新网表如下所示:

42b7633a-2a6a-11f0-9310-92fbcf53809c.png

图 13:时钟分频器上的门控时钟转换

如您所见,所有寄存器现在均由原始时钟驱动,但若在新寄存器上执行 report_timing,那么其周期会从 5 ns 变为 2.5 ns。原因在于 div_2_reg/Q 的时钟路径不再驱动寄存器时钟管脚,导致生成时钟命令不再影响时序分析。

为修复此问题,Vivado 综合工具为您提供了锚点以创建新的生成时钟约束。 在上图中,请注意时钟线产生分叉,并穿过一个新的层次,该层次只驱动完成时钟转换的寄存器。 此外,综合 log 日志文件将为您提供该锚点名称以及需置于 XDC 文件内的新命令,以确保输出的时序正确无误。

42d69fd4-2a6a-11f0-9310-92fbcf53809c.png

图 14:时钟分频器的日志文件

时钟分频器(多个位使用同一计数器)

除时钟分频器外,计数器也可用作时钟。 例如,一个 4 位计数器可生成 4 个不同时钟。 即,2 分频、4 分频、8 分频和 16 分频。

42eabe6a-2a6a-11f0-9310-92fbcf53809c.png

这些计数器可用于创建时钟,具体用法如下:

43000978-2a6a-11f0-9310-92fbcf53809c.png

图 15:使用计数器作为时钟生成器

开启门控时钟转换后的运行结果如下:

431f010c-2a6a-11f0-9310-92fbcf53809c.png

图 16:含计数器的门控时钟转换

请注意,这样会为每个新时钟创建馈通锚点。

在 log 日志中也提供了相关报告以供后续运行使用。

432f1fc4-2a6a-11f0-9310-92fbcf53809c.png

图 17:计数器充当门控时钟的日志文件

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

    关注

    1665

    文章

    22581

    浏览量

    641063
  • amd
    amd
    +关注

    关注

    25

    文章

    5725

    浏览量

    140665
  • 寄存器
    +关注

    关注

    31

    文章

    5625

    浏览量

    130725
  • 时钟
    +关注

    关注

    11

    文章

    2007

    浏览量

    135423
  • Vivado
    +关注

    关注

    19

    文章

    860

    浏览量

    71532

原文标题:开发者分享|AMD Vivado™ Design Tool 综合中的门控时钟转换

文章出处:【微信号:gh_2d1c7e2d540e,微信公众号:XILINX开发者社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    如何使用One Spin检查AMD Vivado Design Suite Synth的结果

    本文讲述了如何使用 One Spin 检查 AMD Vivado Design Suite Synth 的结果(以 Vivado 2024.2 为例)。
    的头像 发表于 05-19 14:22 1581次阅读
    如何使用One Spin检查<b class='flag-5'>AMD</b> <b class='flag-5'>Vivado</b> <b class='flag-5'>Design</b> Suite Synth的结果

    《电子发烧友电子设计周报》聚焦硬科技领域核心价值 第11期:2025.05.12--2025.05.16

    。 7、AMD Vivado Design Tool综合
    发表于 05-16 19:47

    来自vivado hls的RTL可以由Design Compiler进行综合吗?

    您好我有一个关于vivado hls的问题。RTL是否来自xivix FPGA的vivado hls onyl?我们可以在Design Compiler上使用它进行综合吗?谢谢
    发表于 04-13 09:12

    当逻辑门控无法映射到Vivado的一个时钟区域时,BUFHCTRL能够复制自身并将逻辑映射到多个时钟区域吗?

    逻辑门控无法映射到Vivado的一个时钟区域时,BUFHCTRL能够复制自身并将逻辑映射到多个时钟区域吗?谢谢,雨翔
    发表于 07-27 14:26

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

    门控时钟的设计初衷是实现FPGA的低功耗设计,本文从什么是门控时钟门控时钟实现低功耗的原理、推
    的头像 发表于 09-23 16:44 1.6w次阅读
    什么是<b class='flag-5'>门控</b><b class='flag-5'>时钟</b> <b class='flag-5'>门控</b><b class='flag-5'>时钟</b>降低功耗的原理

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

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

    Vivado Design Suite用户指南:综合

    电子发烧友网站提供《Vivado Design Suite用户指南:综合.pdf》资料免费下载
    发表于 09-13 15:47 0次下载
    <b class='flag-5'>Vivado</b> <b class='flag-5'>Design</b> Suite用户指南:<b class='flag-5'>综合</b>

    Vivado Design Suite用户指南:I/O和时钟规划

    电子发烧友网站提供《Vivado Design Suite用户指南:I/O和时钟规划.pdf》资料免费下载
    发表于 09-13 15:10 2次下载
    <b class='flag-5'>Vivado</b> <b class='flag-5'>Design</b> Suite用户指南:I/O和<b class='flag-5'>时钟</b>规划

    如何在AMD VivadoDesign Tool中用工程模式使用DFX流程?

    本文介绍了在 AMD VivadoDesign Tool 中用工程模式使用 DFX 流程以及需要注意的地方。在使用 DFX 工程模式的过程
    的头像 发表于 04-17 09:28 2623次阅读
    如何在<b class='flag-5'>AMD</b> <b class='flag-5'>Vivado</b>™ <b class='flag-5'>Design</b> <b class='flag-5'>Tool</b>中用工程模式使用DFX流程?

    AMD Vivado Design Suite 2024.1全新推出

    AMD Vivado Design Suite 2024.1 可立即下载。最新版本支持全新 AMD MicroBlaze V 软核处理器,并针对 QoR 和 Dynamic Funct
    的头像 发表于 09-18 09:41 1558次阅读

    U50的AMD Vivado Design Tool flow设置

    AMD Alveo 加速卡使用有两种流程,AMD Vitis Software Platform flow 和 AMD Vivado Design
    的头像 发表于 11-13 10:14 1820次阅读
    U50的<b class='flag-5'>AMD</b> <b class='flag-5'>Vivado</b> <b class='flag-5'>Design</b> <b class='flag-5'>Tool</b> flow设置

    AMD Vivado Design Suite 2024.2全新推出

    AMD Vivado Design Suite 2024.2 全新推出,使用 AMD Versal Adaptive SoC 进行设计的重大改进。此版本为
    的头像 发表于 11-22 13:54 1885次阅读

    AMD Vivado Design Suite IDE的设计分析简介

    本文档涵盖了如何驱动 AMD Vivado Design Suite 来分析和改善您的设计。
    的头像 发表于 02-19 11:22 1399次阅读
    <b class='flag-5'>AMD</b> <b class='flag-5'>Vivado</b> <b class='flag-5'>Design</b> Suite IDE<b class='flag-5'>中</b>的设计分析简介

    AMD Vivado Design Suite 2025.1现已推出

    AMD Vivado Design Suite 2025.1 现已推出,支持 AMD Spartan UltraScale+ 和新一代 Versal 器件。这一最新版本还新增了多项功能
    的头像 发表于 06-16 15:16 1774次阅读

    AMD Vivado Design Suite 2025.2版本现已发布

    AMD Vivado Design Suite 2025.2 版本现已发布,新增对 AMD Versal 自适应 SoC 的设计支持,包含新器件支持、QoR 功能及易用性增强。
    的头像 发表于 12-09 15:11 1533次阅读