verilog学习笔记- 2)时序约束文件

news2024/12/28 2:29:51

目录

为什么要创建时序约束文件?

时序:

创建时序约束文件:


为什么要创建时序约束文件?

对于一些简单的工程时序的要求并不是特别的严格,添不添加时序约束文件影响不大。但是对于一些复杂的工程,涉及到高频时钟,多个时钟信号,跨多个时钟域等等时序比较混乱的工程添加时 序约束文件就很有必要了,不添加时序约束极有可能会导致功能不正常或者时而正常时而不正常。

时序:

简单的讲就是时钟与数据的关系,这里我们要引入“建立时间”和“保持时间”这 两个概念,大家要明白,FPGA 内部是有大量的触发器的,而“建立时间”和“保持时间”就是针对触发器来讲的。要想完成一次数据的正确采样,那么就必须满足“建立时间”和“保持时间”的要求,那么什么 是“建立时间”和“保持时间”呢,我们先看下图:

上图中的 Tsu 就是建立时间,它是指在触发器的时钟信号上升沿到来以前,数据稳定不变的时间,如 果建立时间不够,数据将不能在这个时钟上升沿被稳定的打入触发器,Tsu 就是指这个最小的稳定时间。而 保持时间是指在触发器的时钟信号上升沿到来以后,数据稳定不变的时间,如果保持时间不够,数据同样不能被稳定的打入触发器,Th 就是指这个最小的保持时间。

因此我们在开发工程时一定要注意这两个时间,切忌在数据亚稳态时对数据进行采样,那么采样的数 据就不准确。当然时序约束不仅仅如此,还需要考虑各个触发器的延时时间,例如数据需要从寄存器 1 传 向寄存器 2,那么假设在寄存器 1 进行触发时数据被准确采样,当数据从寄存器 1 出来是需要一定延时的, 延时完成后我们再经过组合逻辑处理又会进一步延时,再之后到达寄存器 2 进行采样,这个时候我们就需 要考虑寄存器 2 时钟的上升沿到来前我们的数据是否已经保持稳定并且能够满足建立时间,如果不满足那 么寄存器 2 极有可能是在数据处于亚稳态的时候对数据进行了采样那么数据是不准确。

创建时序约束文件:

点击 Tools 选中 TimeQuest Timing Analyer 如下图所示:

然后我们创建一个文件格式为.SDC 的约束文件,步骤如下图所示:

 

创建好 SDC 文件后我们回到工程,可以看到工程里已经出现一个空白的 SDC 文件,如下图所示:

接下来我们就可以在这个空白约束文件中编写约束语句了

我们在空白的 SDC 文件中输入:create_clock -name sys_clk -period 20.0 [get_ports sys_clk]。这条语句就 是创建一个时钟( create_clock),这个时钟的名字是 sys_clk(-name sys_clk,注意这里的名字是可以随意 起的,但是建议大家命名的时候可以一眼看出其含义),这个时钟的周期是 20ns(-period 20.0,这里大家 要注意如果没有约束占空比,那么默认 50%的占空比),映射到工程的 sys_clk 端口上(get_ports sys_clk, 这里映射的端口就是工程的实际端口了,这里代表输入的系统时钟)。这样我们就把输入时钟约束好了, 他就是一个严格的 50Mhz 标准时钟。

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

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

相关文章

【SpringBoot应用篇】SpringBoot 启动扩展点/常用接口

【SpringBoot应用篇】SpringBoot 启动扩展点/常用接口SpringBoot常用的接口ApplicationContextInitializerBeanDefinitionRegistryPostProcessorBeanFactoryPostProcessorInstantiationAwareBeanPostProcessorSmartInstantiationAwareBeanPostProcessorBeanFactoryAwareApplica…

Dom 重点核心

关于dom操作,主要针对元素的操作。 主要有创建,增,删,改,查,属性操作,事件操作。 一、创建 1.document.write 2.innerHTML 3.createElement 二、增 1.appendChild(在后面添加&am…

【iOS】块与大中枢派发

文章目录[TOC](文章目录)前言理解“块”这一概念块的基础知识块的内部结构全局块,栈块,堆块为常用的块类型创建typedef用handler块降低代码分散程度用块引用其所属对象时不要出现保留环多用派发系列,少用同步锁多用GCD,少用perfor…

Linux/ARM下QT MQTT库的编译安装

💂 个人主页:风间琉璃🤟 版权: 本文由【风间琉璃】原创、在CSDN首发、需要转载请联系博主💬 如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连)和订阅专栏哦目录 一、 Linux 环境下编译安装 二、 ARM Linux 环境下安装 一、 Linux 环境下…

破解分布式光伏运维难题,光伏+屋面数字化监控融合是关键

2022年5月,在东南地区某城市一幢写字楼上,技术人员们正不辞辛苦爬上数十米高的墙面,对写字楼的屋面和墙面进行勘察。随后,他们准备赶在台风季来临之前完成该写字楼的建筑光伏一体化项目安装与部署。 这是森特士兴集团股份有限公司…

fixed:error:0308010C:digital envelope routines::unsupported

目录1.故障现场2. 问题分析3. 修复方案4. 参考文献1.故障现场 最近由于一些原因,从Mac OSX 迁移到 Windows 平台,在尝试运行基于vue-element-admin 项目时,发生了如下异常: error:0308010C:digital envelope routines::unsuppor…

MySQL的一些指令,函数以及关键字

这个里面我准备记录一些比较有意思的MySQL的指令和函数,当然使用函数的时候我们要注意,会不会因为函数导致不走索引,走全表扫描的情况。 因为对索引字段做函数操作,可能会破坏索引值的有序性,因此优化器就决定放弃走树…

导读:21 世纪中叶的精准肿瘤学奇点?循环肿瘤细胞和单细胞测序?

Tips: 组学时代的循环肿瘤细胞:我们离实现“奇点”还有多远?(Br J Cancer,IF:9.075),原文链接: https://pubmed.ncbi.nlm.nih.gov/35273384/ 循环肿瘤细胞的生物学、脆弱性和临床应用&#xff0…

用javascript分类刷leetcode22.字典树(图文视频讲解)

目录 Trie树,即字典树,又称前缀树,是一种树形结构,典型应用是用于统计和排序大量的字符串(但不限于字符串),所以经常被搜索引擎用于文本词频统计。它的优先是,最大限度的减少无谓的…

数据挖掘与机器学习作业_06 决策树

决策树 步骤 1.计算不纯度2.选取不纯度最高的特征进行分支3.计算不纯度4.继续划分 from sklearn import tree from sklearn.model_selection import GridSearchCV from sklearn.model_selection import cross_val_score from sklearn.model_selection import train_test_spl…

单点登录 SSO 解决方案选型指南|身份云研究院

单点登录(SSO)是目前企业降本增效以及提升用户体验的主流选择方案。常规的单点登录指“登录一次,即可访问所有互相信任的应用,用户不再需要记住每一个应用的账号密码”,这有效解决了密码疲劳、登录效率等问题&#xff…

(深度学习快速入门)第三章第二节:通过一个二分类任务介绍完整的深度学习项目

文章目录一:数据集介绍二:一个完整的深度学习项目必备文件三:项目代码(1)config.py——超参数文件(2)preprocess——数据预处理文件(3)dataloader——数据集封装&#xf…

后端人眼中的Vue(一)

一、简介 1.1、Vue简介 ​ Vue是渐进式 JavaScript 框架,啥叫渐进式?渐进式意味着你可以将Vue作为你应用的一部分嵌入其中,或者如果你希望将更多的业务逻辑使用Vue实现,那么Vue的核心库以及其生态系统。比如CoreVue-routerVuexax…

Homekit智能家居DIY之智能灯泡

一、什么是智能灯 传统的灯泡是通过手动打开和关闭开关来工作。有时,它们可以通过声控、触控、红外等方式进行控制,或者带有调光开关,让用户调暗或调亮灯光。 智能灯泡内置有芯片和通信模块,可与手机、家庭智能助手、或其他智能…

RabbitMQ、Kafka、RocketMQ消息中间件对比总结

文章目录前言侧重点架构模型消息通讯其他对比总结参考文档前言 不论Kafka还是RabbitMQ和RocketMQ,作为消息中间件,其作用为应用解耦、异步通讯、流量削峰填谷等。 拿我之前参加的一个电商项目来说,订单消息通过MQ从订单系统到支付系统、库存…

ORB-SLAM2 --- KeyFrame::UpdateConnections 函数

目录 一、函数作用 二、函数流程 三、code 四、函数解析 一、函数作用 更新关键帧之间的连接图。 更新变量 mConnectedKeyFrameWeights:当前关键帧的共视信息,记录当前关键帧共视关键帧的信息(哪一帧和当前关键帧有共视,共视…

用C++实现十大经典排序算法

作者:billy 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 简介 排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大…

喜报|知道创宇连续两年获评北京市企业创新信用领跑企业!

近日,2022年度北京市企业创新信用领跑名单正式发布。知道创宇凭借过硬的技术实力、创新能力及良好的企业信用记录成功入选2022年度北京市企业创新信用领跑企业。值得一提的是,这是知道创宇继2021年以来,连续两年获得此项殊荣。连续两年蝉联双…

CPU是如何执行程序的?

CPU是如何执行程序的?1、硬件结构介绍1.1、CPU1.2、内存1.3、总线1.4、输入/输出设备2、程序执行的基本过程3、a11执行的详细过程现代计算机的基本结构为五个部分:CPU、内存、总线、输入/输出设备。或许你了解了这些概念,但是你知道a11在计算…

【Kubernetes | Pod 系列】Pod 的镜像下载策略和 Pod 的生命周期 Ⅰ—— 理论

目录4. 镜像下载策略5. Pod 的生命周期5.1 Pod 生命期与特性说明5.2 Pod Phase 阶段说明备注5.3 容器状态说明(1)Waiting (等待)(2)Running(运行中)(3)Termin…