Vivado时序约束基础

news2024/10/6 19:26:23

      今天这篇博客,笔者向大家简单介绍Xilinx FPGA中的Vivado时序约束基础知识,也为后续的学习打好铺垫。

Xilinx Design Constraints (XDC) 概述

• XDC 在本质上就是Tcl 语言,但其仅支持基本的Tcl 语法,如变量、列表和运算符等等,对其他复杂的循环以及文件I/O 等语法可以通过在 Vivado中source 一个Tcl 文件的方式来补充。

• XDC 可以像UCF一样作为一个整体文件被工具读入,也可以在实现过 程中被当作一个个单独的命令直接执行。这就决定了XDC也具有Tcl命 令的特点,即后面输入的约束在有冲突的情况下会覆盖之前输入的约束。

• 不同于UCF是全部读入再处理的方式,在XDC中约束是读一条执行一条,所以先后顺序很重要。设置IO 约束之前,相对应的clock 一定 要先创建好。

•  UCF是完全以FPGA的视角看问题,所以缺省认为所有的时钟之间除非预先声明是同步的,否则就视作异步而不做跨时钟域时序分析。

• XDC恰恰相反,ASIC世界的血缘背景决定了在其中,所有的时钟缺省视作全同步,在没有时序例外的情况下,工具会主动分析每一条跨时钟域的路径。

XDC的基本时序约束可以分为时钟约束、I/O 约束以及时序例外约束三大类。

时钟约束

    首先时钟约束必须最早创建,对于7系列FPGA来说,端口进来的时钟和GT的输出RXCLK/TXCLK都必须用create_clock自主创建为主时钟,如果是差分输入的时钟,可以仅仅在差分对的P侧用get_ports获取端口,并使用create_clock创建。

      其次Vivado自动推导的衍生时钟,MMCM/PLL/BUFR的输出作为衍生时钟,可以由Vivado自动推导无需用户创建。

      再次存在用户自定义的衍生时钟,工具不能自动推导出衍生钟的情况,包括使用寄存器和组合逻辑搭建的分频器等,必须由用户使用creat_generate_clock来创建,举例说明:

I/O约束

      在设计的初级阶段,可以不加I/O约束,让工具专注于满足FPGA内部的时序要求,当时序要求基本满足后,再加上I/O约束跑实现。XDC中的I/O约束有以下几点需要注意:

  1. 不添加I/O约束的端口时序要求被视为无穷大;
  2. XDC中的set_input_delay/set_output_delay是从系统的角度来进行约束;
  3. 典型的I/O时序,包括系统同步、源同步、SDR和DDR等等,在Vivado图形界面的XDC templates中都有示例;

时序例外约束

      时序例外约束包括set_max_delay/set_min_delay,set_multicycle_path,set_false_path等,这类约束除了要满足XDC的先后顺序优先级外,还受到自身优先级的限制,不同的时序例外约束和同一约束中的不同条件优先级如下图所示:

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Go 语言基础

文章目录 Go 语言基础1. 程序基础2. 数据类型3. 字符串与复合数据类型4. 函数、方法、接口和反射5. 并发编程(核心重点)6. 包和代码测试7. 综合实战案例框架部分探索深度 Go 语言基础 1. 程序基础 了解常量和遍历【const var 关键词】 : 初始化以及赋值…

微服务如何治理

微服务远程调用可能有如下问题: 注册中心宕机; 服务提供者B有节点宕机; 服务消费者A和注册中心之间的网络不通; 服务提供者B和注册中心之间的网络不通; 服务消费者A和服务提供者B之间的网络不通; 服务提供者…

Redux And Redux Toolkit

笔记介绍了react_redux和redux_toolkit react_redux只介绍了原理图,为理解redux_toolkit做铺垫。 本笔记是对一下课程做的输出,若大家有不理解的地方,可看完课程后,再借助课程理解笔记内容,同时也鼓励大家对自己的听…

【环境搭建】40系一些奇奇怪怪的环境问题

【设备信息】我的设备是4070ti,支持cuda12.0,但是目前用的还是11.7 1)fatal error: cusparse.h: No such file or directory 因为cuda版本和改名的原因,这个在cuda版本中比较有效的解决办法是: sudo apt search libcusparse得到…

matplotlib实操

matplotlib实操 问题1.分析离网用户的基本特征:包括但不限于地市、年龄、网龄、融合类型、套餐分布、用户价值等,年龄、网龄、用户价值(ARPU)、MOU、DOU;数据预处理处理异常值地市分布县级分布年龄分布网龄分布性别与年龄分布融合类型套餐分布用户价值(ARPU)MOU(每用…

vulnhub靶场之hackme2-DCHP

Burp联动xray 1.信息收集 探测存活主机,输入:netdiscover -r 192.168.239.0/24 ,发现192.168.239.179存活。 对目标主机192.168.239.179进行端口扫描,发现存活22、80端口。 在浏览器上输入:http://192.168.239.179&a…

axios解决跨域问题

Vue3中使用axios访问聚合的天气API,出现跨域问题,需要在前端进行一些配置: 首先是修改vue.config.js: const { defineConfig } require(vue/cli-service) module.exports defineConfig({transpileDependencies: true,devServe…

vue2.0基础

文章目录 VUEVue2.0vue特点事件处理键盘事件计算属性监听watch深度监视绑定class样式条件渲染列表渲染列表过滤列表排序Vue.set()的使用Vue检测数组的原理Vue监测原理总结指令生命周期Vue componentVue配置文件vue.config.JS其他:组件自定义事件组件自定义事件解绑全…

【Mysql数据库从0到1】-入门基础篇--用户与权限管理

【Mysql数据库从0到1】-入门基础篇--用户与权限管理 🔻一、Mysql 用户管理1.1 🍃 Mysql服务器登录1.2 🍃 用户创建1.3 🍃 用户修改1.4 🍃 用户删除1.5 🍃 用户密码修改1.6 🍃 用户密码管理 &…

深入浅出C语言—【函数】上

目录 1.函数的概念 2.C语言函数的分类 2.1 库函数 2.1.1 strcpy库函数举例学习方式 2.1.2 库函数扩展知识 2.2 自定义函数 2.2.1求两个整数中的较大值 3. 函数的参数 3.1 实际参数(实参) 3.2 形式参数(形参) 4. 函数的…

Linux安全之账户安全

账户安全 Linux用户账户概述: 用户账号 超级用户root系统用户普通用户组账号 基本组(私有组----每一个私有组里面只有一个用户)附加组(公共组----每一个用户都可以加入到这个组里面) UID和GID: UID&…

【minio】Ubuntu安装MinIO文件服务器并通过C++上传下载

😏★,:.☆( ̄▽ ̄)/$:.★ 😏 这篇文章主要介绍MinIO的使用。 学其所用,用其所学。——梁启超 欢迎来到我的博客,一起学习知识,共同进步。 喜欢的朋友可以关注一下,下次更新不迷路&…

pandas速学-DataFrame

一、理解DataFrame 他是一个表格结构:DataFrame 是一个表格型的数据结构 他是有序的,不同值类型:它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型值)。 他可以被看做一个由series组成的…

chatgpt赋能python:PythonIP匹配

Python IP匹配 随着互联网的不断发展,IP地址已成为人们最常使用的一种网络标识。在网络分析和开发中,经常会用到IP地址的相关操作,如IP地址的匹配。Python作为一种性能比较好的语言,也可以很好地完成IP地址的匹配工作。本文将介绍…

【学习日记2023.6.4】之 Linux入门

1. Linux简介 1.1 主流操作系统 不同领域的主流操作系统,主要分为以下这么几类: 桌面操作系统、服务器操作系统、移动设备操作系统、嵌入式操作系统。接下来,这几个领域中,代表性的操作系统是那些? 1). 桌面操作系统 操作系统特…

数据链路层:虚拟局域网(VLAN)

数据链路层:虚拟局域网(VLAN) 笔记来源: 湖科大教书匠:虚拟局域网(VLAN)概述 湖科大教书匠:虚拟局域网(VLAN)实现机制 声明:该学习笔记来自湖科大…

mybatis源码学习之mybatis执行流程分析

Mybatis执行流程分析 mybatis全局配置文件 mybatis全局配置文件中涉及的标签如下图所示 配置文件解析 public static void main(String[] args) throws IOException {// 读取配置文件InputStream is Resources.getResourceAsStream("org/apache/ibatis/builder/Mappe…

K8S部署Hadoop集群(七)

Hadoop是Apache软件基金会下一个开源分布式计算平台,以HDFS(Hadoop Distributed File System)、MapReduce(Hadoop2.0加入了YARN,Yarn是资源调度框架,能够细粒度的管理和调度任务,还能够支持其他…

UnityVR--EventManager--事件中心3

前期准备 接上一篇,来实现事件中心的管理:使用定义好的事件中心管理器EventManager,实现鼠标拖拽、角色移动、发射子弹等几个功能。 1. InputSystem的准备:需要设置输入设备并关联事件,比如监听键盘输入"WASD&quo…

自制操作系统第三站

修改haribote.nas,界面显示 ; haribote.nas ; TAB4ORG 0xc200MOV AL, 0x13MOV AH, 0x00INT 0x10fin:HLTJMP fin编译运行