使用Vivado Design Suite进行BUFG 优化

在 Xilinx FPGA 设计中,BUFG 是一个不带使能功能的全局时钟缓冲器(Global Clock Buffer),它是与专用全局时钟输入管脚相连接的首级全局缓冲。所有从全局时钟管脚输入的信号必须经过IBUFG 单元,否则在布局布线时会报错。

一、CLOCK_BUFFER_TYPE

强制逻辑优化(Mandatory Logic Optimization,简称 MLO)在 link_design (在Vivado Design Suite中,link_design 命令是设计流程中的一个关键步骤。它负责将综合后的网表文件和约束文件整合起来,形成一个完整的、针对特定目标器件的设计)的开始阶段发生,支持使用 CLOCK_BUFFER_TYPE 属性来插入全局时钟缓冲器。

  • 对于 7 系列设备,支持的值是 BUFG。
  • 对于 UltraScale、AMD UltraScale+™ 和 Versal 设备,支持的值包括 BUFG 和 BUFGCE。
  • 对于所有架构,可以使用值 NONE 来通过 MLO 和 opt_design 禁止全局时钟缓冲器的插入。
  • 对于 BUFG 和 BUFGCE(带使能功能的全局时钟缓冲器),MLO 会插入相应的缓冲器类型来驱动指定的网络。

使用 CLOCK_BUFFER_TYPE 的优势在于可以通过 XDC 约束来控制缓冲器的插入,从而无需修改设计源代码或网表。使用 CLOCK_BUFFER_TYPE 插入的缓冲器不受任何限制,因此必须谨慎使用该属性,以避免在设计中引入过多的全局时钟,这可能会导致布局失败。
在优化过程中,应当仔细考虑何时以及在哪里使用全局时钟缓冲器。全局时钟缓冲器的主要目的是提高时钟信号的驱动能力和稳定性,确保时钟信号能够准确地传播到设计的每个角落。然而,过度使用全局时钟缓冲器可能会增加设计的复杂性和功耗,并可能导致布局和布线阶段的困难。
因此,在使用 CLOCK_BUFFER_TYPE 属性时,应该根据设计的具体需求和约束来仔细选择插入缓冲器的位置。通常,全局时钟缓冲器应该被放置在时钟树的关键节点上,以便最大化其效果并最小化对设计其他部分的影响。此外,还应该注意避免在设计中创建过多的全局时钟域,因为这可能会导致时钟管理和同步方面的问题。

二、BUFG 优化

MLO会保守地在时钟网络和高扇出非时钟网络(例如设备范围内的复位信号)上插入全局时钟缓冲器。

  • 在 Versal 设备上,对于高扇出的非时钟网络,会插入 BUFG_FABRIC 时钟缓冲器。
  • 对于 7 系列设计,只要不超过总共 12 个全局时钟缓冲器的限制,就会插入时钟缓冲器。
  • 对于 UltraScale、UltraScale+ 和 Versal 设计,只要不超过总共24 个全局时钟缓冲器的限制(不包括 BUFG_GT 缓冲器),就会插入时钟缓冲器。
  • 对于非时钟网络:
    • 扇出必须大于 25,000。
    • 由该网络驱动的逻辑的时钟周期必须低于特定设备/速度等级的限制。
  • 对于 fabric 驱动的时钟网络,扇出必须为 30 或更大。
    注意:为了防止在特定网络上执行 BUFG 优化,可以将该网络的 LOCK_BUFFER_TYPE 属性设置为 NONE。此外,在强制逻辑优化过程中,也可能发生一些必要的时钟缓冲器插入操作,以确保设计的合法性。

三、MBUFG 优化

对于 Versal 设备,新的多时钟缓冲器(MBUFG)在其 O1、O2、O3、O4 输出上提供了时钟输入的 1、2、4、8 分频时钟。MBUFG 的时钟输出都使用相同的全局时钟路由资源,并且只在到达 BUFDIV_LEAF 路由通过块时才进行分频。由 MBUFG 驱动的时钟消耗的路由资源更少,并且由于公共节点更接近源和目标,因此由相同 MBUFG 驱动的时钟之间的同步跨时钟域(CDC)路径的时钟偏斜最小化。
MBUFG 优化将由公共驱动器或时钟修改块(CMB)如 MMCM、DPLL 或 XPLL 驱动的并行时钟缓冲器转换为 MBUFG。如果并行时钟的分频因子是公共时钟的 1、2、4、8 分频,则会发生这种转换。对于由 CMB 驱动的时钟,相位偏移必须为 0,占空比必须为 50%。如果由 BUFG 驱动的时钟网络具有冲突的约束,如 CLOCK_DELAY_GROUP 或 USER_CLOCK_ROOT,则也会阻止转换。只有当转换不会破坏时序约束时,才会进行转换。以下转换受支持:
• 连接到 CMB 的并行 BUFGCE 转换为 MBUFGCE。
• 连接到公共时钟驱动器的并行 BUFGCE_DIV 转换为 MBUFGCE。
• 连接到公共时钟驱动器的并行 BUFG_GT 转换为 MBUFG_GT。
除了使用 -mbufg_opt 选项的全局优化外,还可以使用 MBUFG_GROUP 属性来控制选定 BUFG 到 MBUFG 的转换。必须在直接连接到时钟缓冲器的网段上设置 MBUFG_GROUP 约束。以下示例显示了应用于两个时钟网络的属性,这两个网络由时钟缓冲器直接驱动:

set_property MBUFG_GROUP grp1 [get_nets -of [get_pins {BUFG_inst_0/O
BUFG_inst_1/O}]

在上面的 Tcl 命令中,MBUFG_GROUP 属性被设置为 grp1,并应用于与 BUFG_inst_0/O 和 BUFG_inst_1/O 这两个引脚直接相连的网段。这样,Vivado 会在优化过程中考虑将这些 BUFG 转换为 MBUFG。
图1 MBUFG 优化
图1中所示的是一个MMCM(混合模式时钟管理器)驱动多个BUFGCE(带使能功能的全局时钟缓冲器)缓冲器的场景。由 CLKOUTn 驱动的时钟是 CLKOUT1 驱动时钟的 1、2、4、8 分频整数倍。
在 MBUFG 优化之后,这四个 BUFGCE 被转换为一个单独的 MBUFGCE,并且原本由 CLKOUT1 驱动的时钟连接到 MBUFGCE 的 I 引脚。原本由 BUFGCEs 驱动的负载现在连接到 MBUFGCE 的 O1、O2、O3、O4 引脚。
这样的转换可以节省全局时钟路由资源,减少时钟偏斜,并简化时钟网络的设计。由于 MBUFGCE 提供了多个分频输出,因此可以方便地为不同的时钟域提供所需的时钟频率,同时保持较低的时钟偏斜和路由复杂性。
在进行这种优化时,Vivado 工具会检查时钟网络的约束和时序要求,以确保转换是安全的,并且不会破坏设计的时序性能。如果转换可能导致时序问题或违反其他设计约束,Vivado 将不会执行此优化。因此,在进行 MBUFG 优化时,最好对设计进行充分的时序验证和仿真,以确保最终设计的正确性和性能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/298897.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mac - Keychron K3 Pro 功能键改键 -via 改键配置 For Mac

前言 Keychron K3 Pro键盘连接Mac使用,顶部一排功能键,默认是Mac的多媒体功能键。F1~F12功能键,需要按:Fn F1~F12。 而在我的日常工作中,常用的是F1~F12,期望F1~F12功…

Excel列匹配VLookUp功能使用

生活中很多关于excel多列数据进行匹配计算等场景,其中最常用的一个函数就是VLookUp了,下面直接上图: 得到结果如下: 得到结果如下: 注意: 1.在需要把计算完的数据粘贴到另一列或者另个sheet时,复制后,不要直接ctrlv粘贴,这样会把计算公式粘贴到对应的列.正确做法是:右键粘贴,选…

硬件-1、体系架构

cpu 处理器 arm处理器的七种工作模式 arm寄存器 两张图是一样的,r0---r12是通用寄存器。其他寄存器可参考图一,cpu架构。 程序状态寄存器psr(cpsr/spsr) 程序异常处理 理解示例 当使用swi(软中断指令)指令…

rust项目组织结构和集成测试举例

概述 在学习rust的过程中,当项目结构略微复杂的时候,写集成测试的时候发现总是不能引用项目中的代码,导致编写测试用例失败。查阅了教程,一般举例都很简单。查阅了谷歌和百度以及ai,也没有找到满意的答案。这里记录一…

论文笔记:Large Language Models as Analogical Reasoners

iclr 2024 reviewer打分5558 1 intro 基于CoT prompt的大模型能够更好地解决复杂推理问题 然而传统CoT需要提供相关的例子作为指导,这就增加了人工标注的成本——>Zero-shot CoT避免了人工标注来引导推理 但是对于一些复杂的任务难以完成推理,例如c…

Prometheus+grafana环境搭建redis(docker+二进制两种方式安装)(四)

由于所有组件写一篇幅过长,所以每个组件分一篇方便查看,前三篇 Prometheusgrafana环境搭建方法及流程两种方式(docker和源码包)(一)-CSDN博客 Prometheusgrafana环境搭建rabbitmq(docker二进制两种方式安装)(二)-CSDN博客 Prometheusgrafana环境搭建m…

Android APP加固利器:深入了解混淆算法与混淆配置

Android APP 加固是优化 APK 安全性的一种方法,常见的加固方式有混淆代码、加壳、数据加密、动态加载等。下面介绍一下 Android APP 加固的具体实现方式。 混淆代码 使用 ipaguard工具可以对代码进行混淆,使得反编译出来的代码很难阅读和理解&#xff…

基于单片机多功能充电器系统设计

**单片机设计介绍,基于单片机多功能充电器系统设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机多功能充电器系统设计是一个集电源管理、充电控制和用户界面于一体的综合性项目。以下是对该系统设计的概…

Pnpm + Turbo 搭建 Web Component Monorepo 组件库

技术选型 使用 Pnpm Turbo 搭建 Web Component Monorepo项目 stencil-component-ui 组件库 pnpm 作为包管理器Turborepo 作为构建系统Vitepress 管理文档 pnpm 技术 什么是 pnpm? 它有哪些优势? pnpm 跟 npm、yarn一样,都是用于管理Node包依赖的管…

比nestjs更优雅的ts控制反转策略-依赖查找

一、Cabloy5.0内测预告 Cabloy5.0采用TS对整个全栈框架进行了脱胎换骨般的大重构,并且提供了更加优雅的ts控制反转策略,让我们的业务开发更加快捷顺畅 1. 新旧技术栈对比: 后端前端旧版js、egg2.0、mysqljs、vue2、framework7新版ts、egg3…

JVM基础

初识JAM JVM就是JAVA虚拟机,本质上是一个运行在计算机上的程序,他的职责是运行JAVA字节码文件. 下面是java代码执行过程 JVM的功能 1.解释和运行 对字节码文件中的指令实时的解释成机器码 2.内存管理 自动为对象,方法等分配内存自动的垃圾回…

java中大型医院HIS系统源码 Angular+Nginx+SpringBoot云HIS运维平台源码

java中大型医院HIS系统源码 AngularNginxSpringBoot云HIS运维平台源码 云HIS系统是一款满足基层医院各类业务需要的健康云产品。该产品能帮助基层医院完成日常各类业务,提供病患预约挂号支持、病患问诊、电子病历、开药发药、会员管理、统计查询、医生工作站和护士工…

MySQL-排序与分页

1. 排序 如果没有使用排序操作,默认情况下查询返回的数据是按照添加数据的顺序显示的。 SELECT * FROM employees;1.1 基本使用 1)使用 ORDER BY 对查询到的数据进行排序操作。 升序:ASC(ascend)降序:DESC (descend) 练习&am…

使用 LLMLingua-2 压缩 GPT-4 和 Claude 提示

原文地址:Compress GPT-4 and Claude prompts with LLMLingua-2 2024 年 4 月 1 日 向大型语言模型(LLM)发送的提示长度越短,推理速度就会越快,成本也会越低。因此,提示压缩已经成为LLM研究的热门领域。 …

JVM基础:类的生命周期详解

JDK版本:jdk8 IDEA版本:IntelliJ IDEA 2022.1.3 文章目录 一. 生命周期概述二. 加载阶段(Loading)2.1 加载步骤2.2 查看内存中的对象 三. 连接阶段(Linking)3.1 连接之验证3.2 连接之准备3.3 连接阶段之解析 四. 初始化阶段(Initialization)4.1 单个类的…

ChatGPT(3.5版本)开放无需注册:算力背后的数据之战悄然打响

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…

Logback日志框架(超详细)

logback-classic-1.2.3.jarhttp://链接: https://pan.baidu.com/s/1cA3gVB_6DEA-cSFJN6MDGw 提取码: sn8i 复制这段内容后打开百度网盘手机App,操作更方便哦 logback-core-1.2.3.jarhttp://链接: https://pan.baidu.com/s/19eCsvsO72a9PTqpXvXxrgg 提取码: 5yp…

元宇宙虚拟空间的场景构造(二)

前言 该文章主要讲元宇宙虚拟空间的场景构造,基本核心技术点,不多说,直接引入正题。 场景的构造 使用引入的天空模块 this.sky new Sky(this); 在Sky模块里,有设置对其中的阳光进行不同时间段的光线处理。而天空又是怎么样的…

微软云学习环境

微软公有云 - Microsoft Azure 本文介绍通过微软学习中心Microsoft Learn来免费试用Azure上的服务,也不需要绑定信用卡。不过每天只有几个小时的时间。 官网 https://docs.microsoft.com/zh-cn/learn/ 实践 比如创建虚拟机,看到自己的账号下多了Learn的…

非关系型数据库-----------探索 Redis高可用 、持久化、性能管理

目录 一、Redis 高可用 1.1什么是高可用 1.2Redis的高可用技术 二、 Redis 持久化 2.1持久化的功能 2.2Redis 提供两种方式进行持久化 三、Redis 持久化之----------RDB 3.1触发条件 3.1.1手动触发 3.1.2自动触发 3.1.3其他自动触发机制 3.2执行流程 3.3启动时加载…