建立时间和保持时间(setup time 和 hold time)_weixin_30376083的博客-程序员宅基地

建立时间和保持时间贯穿了整个时序分析过程。只要涉及到同步时序电路,那么必然有上升沿、下降沿采样,那么无法避免setup-time 和 hold-time这两个概念。本文内容相对独立于该系列其他文章,是同步时序电路的基础。

针对xilinx手册中一些概念的更新和术语的规范化,以及存在的一些问题,参考文档为UG906,已进行了一系列修改。--2019/5/5

系列目录 

    时序收敛:基本概念

    建立时间和保持时间(setup time 和 hold time)

    OFFSET约束(OFFSET IN 和OFFSET OUT)

    Clock Skew , Clock uncertainly 和 Period

    特殊约束From To

    OFFSET IN 使用举例

    Achieving Timing Closure

1. 什么是setup-time 和 hold-time

    同步时序电路设计中,只在时钟的上升沿或下降沿进行采样。为了正确得到采样结果,需要确保采样时刻数据有效,因此工具会对综合结果进行静态时序分析,以判断时钟和数据之间的相对关系是否满足要求。以寄存器-寄存器之间的路径为例子

image

图1

 

image

图2

  •     发射时间(launch edge):源时钟发射数据的时刻
  •     采样时间(capture edge):目的时钟采样数据的时刻(显然采样时刻要晚于发射时刻)

    而Setup time和Hold time,按照维基百科的解释为

Setup time is the minimum amount of time the data signal should be held steady before the clock event so that the data is reliably sampled by the clock. This applies to synchronous input signals to the flip-flop.

Hold time is the minimum amount of time the data signal should be held steady after the clock event so that the data are reliably sampled. This applies to synchronous input signals to the flip-flop.

image

    无论是Setup time 或者Hold time,都是指时间上的相对关系;在具体分析过程中,时钟有发射时钟和采样时钟,而各个路径上的数据也有不同的延时,因此仅提及Setup time/Hold time往往有指代不清的问题。因此,Xilinx在UG902中明确了

  •     setup relationship:时序分析工具给出的launch edge和capture edge之间setup关系
  •     setup requirement:launch edge和capture edge之间最严格的setup约束(分析得到所有的setup relationship中的最小值)
  •     hold relationship:时序分析工具给出的launch edge和capture edge之间hold关系
  •     hold requirement:launch edge和capture edge之间最严格的hold约束(分析得到所有的hold relationship中的最大值)

 

    如图2所示,在同一理想时钟下,假设时钟周期为5ns;lanch time记为0ns,则capture time为5ns,此时setup relationship为5ns,hold relationship为0ns。

 

2. 建立在Setup和Hold上时序分析

    建立在上一节基础上,可以对数据的具体采样时刻进行分析,以判断是否在数据有效时刻完成了采样。如果说采样时刻比数据到达时刻晚,则满足了setup的要求。

    如图1所示,由于源时钟可能有路径延时,因此Q端的输出会比launch time晚source clock path delay,同时由于在数据路径上有延时,因此到达下一寄存器Q端还需花费datapath delay时间,因此

    Data Arrival Time(Setup) = launch edge time + source clock path delay + datapath delay

    类似可计算实际的采样时刻

    Data Required Time(Setup) = Caputure edge time + destinationclock path delay – clock uncertainty – Synchronous Element Setup time

    其中Synchronous Element Setup time是寄存器的特性,Clock Uncertainty类似下图所示,由于时钟的不确定性,需要考虑最坏情况。

image

   Xilinx计算Slack来判断是否满足是需要求。Slack的中文意思是“松弛的”,可以简单的理解为设计余量。即如果slack是正数,那么设计满足要求,否则不满足要求。对于setup time的slack,有

        Slack = Data Required Time(Setup) - Data Arrival Time(Setup)

   如图2所示的理想情况下,Required Time(setup)为5ns,只要datapth delay不大于5ns,那么Slack就能满足要求。

   当然,在一个设计中会存在多条路径,所有的Slack均需要满足要求。

   

    类似的,也可以给出Hold的分析结果;与setup不同,要求数据完成采样之后下一个数据才能到达。

    Data Arrival Time(hold) = launch edge time + source clock path delay + datapath delay

    Data Required Time(Setup) = Caputure edge time + destinationclock path delay + clock uncertainty + Synchronous Element Hold time

    Slack = Data Arrival Time(Hold) - Data Requried Time(Hold)

   如图2所示的理想情况下,Required Time(Hold)为0ns,只要datapth delay大于0,那么Slack就能满足要求。

转载于:https://www.cnblogs.com/sea-wind/p/4680666.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_30376083/article/details/99268603

智能推荐

Rational 最新软件试用下载地址_weixin_30436891的博客-程序员宅基地

看到非常多 TX 都在问老版本号 Raitonal 软件相关的问题,可是因为产品升级的时候有非常多名字都发生了更改(比方说 Rational Rose 最新的版本号变成了 Rational Software Architect。Rational Robot 最新版本号变成了 Rational Functional Tester)。所以非常多 TX 都体验不到 Rational 最新的软件。...

《笨办法学 Python》PDF下载10000000次,学python的入门佳作_程序员_大白的博客-程序员宅基地_笨办法学pythonpdf

为什么要学习python主流编程语言世界上的编程语言有600多种,但真正大家主流在使用的最多二三十种,不同的语言有自己的特点和擅长领域,随着计算机的不断发展,新语言在不断诞生,也同时有很多老旧的语言慢慢无人用了。有个权威的语言排名网站,可以看到主流的编程语言是哪些!2022年2月数据(https://www.tiobe.com/tiobe-index/ ),python已经荣升编程类语言使用排行榜第一名!python的就业范围广Python 就业方向:网络爬虫: 顾名思义,就是用Pytho

WinMain函数_KenneySH的博客-程序员宅基地

WinMain是一个函数,该函数的功能是被系统调用,作为一个Win32程序的入口点。WinMain函数应初始化程用程序,显示主窗体,进入一个消息接受发送循环,这个循环是应用程序执行的其余部分的顶层控制结构。int WINAPI WinMain ( _In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _I

NYOJ 1249 物资调度(DFS+剪枝)_hhhh222222的博客-程序员宅基地

题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=1249描述某地区发生了地震,灾区已经非常困难,灾民急需一些帐篷、衣物、食品和血浆等物资。可通往灾区的道路到处都是塌方,70%以上的路面损坏,桥梁全部被毁。国家立即启动应急预案,展开史上最大强度非作战空运行动,准备向灾区空投急需物资。一方有难,八方支援。现在已知有N个地方

树莓派 -- oled 续(2) python_weixin_30872867的博客-程序员宅基地

上文中的代码通过wiringPi的API调用devfs API来显示图片。 这里分析的Python代码也通过类似的方法来显示图片。主要用到了两个Library.import spidev import RPi.GPIO as GPIORPi.GPIO在 https://blog.csdn.net/feiwatson/article/...

HTML制作手风琴效果,纯js和纯css+html制作的手风琴的效果_慕容圆月的博客-程序员宅基地

一:纯css+html的手风琴效果这种用css写的手风琴比较简单,主要是应用到css中的,transition属性。代码如下:body{background:url(‘bg.gif‘) repeat;}ul,li,p{margin:0px;padding:0px;list-style:none;}#div{width:1180px;height:405px;border:5px solid #cc...

随便推点

MyBatis -- 结果集映射_黄盖苦肉六张闪的博客-程序员宅基地_结果集映射

结果集映射,顾名思义跟结果集有关。无非就是把SQL的查询结果映射到JavaBean的字段上。一。字段映射比如有张数据表结构如下:在后台的JavaBean中,如果遵守规范的话,属性名和列名一致,那么我们就不需要手动做字段映射,MyBatis会自动帮我们把值填充到Bean中。但现在情况不一样,Bean的属性名和数据库列名对应不上。import java.util.ArrayList;import

Uber令人惊讶的大数据使用方式_weixin_34268579的博客-程序员宅基地

Uber是一款提供出租车预定服务的手机应用,自2009年在旧金山推出以来取得了巨大的成功。该公司立足于大数据,与传统出租车公司相比,他们利用数据的方式更有效。这是他们能够取得成功的一个重要原因。Uber的整个商业模型就是以大数据众包原则为基础。他们有一个巨大的司机数据库,其中包含了他们提供服务的城市中的司机信息。当乘客有搭乘请求时,它可以立即匹配出最合适...

计算机无法启动怎么重装系统,电脑开不开机怎么重装系统教程_我倒觉得你无趣的博客-程序员宅基地

电脑有时候开不开机,通过重新拔插电源线或者内存条又可以正常,但是最近电脑开不了机屏幕显示系统坏了,那么这个时候就需要重装系统,下面让小编教你电脑开不开机怎么重装系统吧。下面是介绍电脑开不开机怎么重装系统教程:一、准备工作:1、准备一个8G以上的空U盘2、准备一台正常进入系统的电脑二、安装步骤:1.首先将U盘插到正常的电脑上面,以及关闭电脑杀毒软件后,打开小白一键重装系统软件选择“制作系统”,然后单...

java 线程 invoke_Java Swing线程之SwingUtilities.invokeLater解释_weixin_39696197的博客-程序员宅基地

译者注:本文其实是一个各方见解评论的总结,已将其中于此处发布不妥的内容去掉,全文内容可查看原文。事件分发线程:Swing中事件处理和绘画代码都在一个单独的线程中执行,这个线程就叫做事件分发线程。这就确保了事件处理器都能串行的执行,并且绘画过程不会被事件打断。为了避免死锁的可能,你必须极度小心从事件分发线程中创建、修改、查询Swing组件以及模型。注意:我们过去常说只要你没有修改已经实现过的组件,你...

Mongodb学习笔记五、查询操作_xue251248603的博客-程序员宅基地

今天直接翻译官方文档算了:给出链接:http://docs.mongodb.org/manual/tutorial/query-documents/MongoDB中使用db.collection.find()从集合中搜寻文档。它返回获取到的文档的一个游标(_id这个键一直都会返回)。一、查询一个集合中的所有文档空的查询文档({})将查询出集合中的所有文档。db.inve