Setup 和Hold (建立时间和保持时间)解析(1)

本文是第一篇,有空会继续更新。(转载请注明出处!!!)

STA分析是基于同步电路设计模型的,在数据输入端,假设外部也是同时钟的寄存器的输出并且经过若干组合逻辑进入本级,而输出也被认为是驱动后一级的同时钟的寄存器。在不设置约束的情况下,纯组合逻辑的输入->输出不得超过一个T,否则也会被认为是Timing violation.

1. Timing path

Timing path就是时间线。Timing就是从起始位置的时间点到终点位置的时间点之间的时间长度。Path是指跟位置相关,即时间起始或终点的位置。Timing path就是某位置的某一时间点到另一位置的某个时间点。对于DFF来说,上升沿类似于一瞬间的脉冲,只有在这短短的一瞬间,数据才允许通过。对于DFF来说,有两个输入点:数据D和时钟CK,有一个输出点:数据Q。由于是时间比较,所以对于D和CK一定要有一个共同的起始时间点,如下图中的A点出现clk上升沿的时刻。如下图,假设我们分析DFF2的数据和时钟到达的时间。二者共同的出发点是A的上升沿,因为A位于时钟通路上,FF1的时钟经过A点到达FF1-C点,在FF1-C上升沿打开FF1,然后数据才能从FF1-Q输出,进而传递到FF2-D。在A点, FF2的时钟沿经过clock tree,达到FF2-C点。所以数据走过的路程是:

Data path: A->clk_tree_buf1->FF1-C -> FF1-Q -> Comb_logic -> B

而对于FF2来说只要满足下个周期的上升沿能够采样即可,所以时钟到达FF2-C的路径是:

Clk path: A -> clk_tree_buf2-> C.

2. 什么是建立时间和保持时间?

对于某个DFF来说,建立时间和保持时间可以认为是此器件固有的属性。有关DFF的内部结构及setup和hold时间对应的逻辑门会在其他文章中进行细致描述。

在理想情况下,只要在时钟沿来临时,有效数据也来临(时钟沿之前或同时),则能够正确采集到数据;而在时钟沿之后(或同时),即使数据发生变化,也不会影响DFF的输出了。然而在实际中,上升沿打开开关需要时间,逻辑门的状态改变(电容充放电等)都需要时间,因此数据的采集是需要一定时间的,在这个时间内数据不能发生变化。上升沿时候开关关闭也需要时间,如果在这个时间段内数据有变化的话,那么新数据就有可能被传递到下一级,进而发生错误,所以数据必须保持一定时间不变。(细节部分可以参考DFF的内部结构)。

总而言之在DFF的输入端口上看,

  • 在clk上升沿来之前,数据必须提前一个最小时间量“预先准备好”,这个最小时间量就是建立时间;
  • 在clk上升沿来之后,数据必须保持一个最小时间量“不能变化”,这个最小时间量就是保持时间。

3. 建立和保持时间要求、及其公式

满足建立和保持时间要求,电路状态改变就是正确的,电路功能就不会发生错误;如果不满足,电容就没有足够的时间充放电,造输出点的电平可能既非0也非1,造成“亚稳态“输出。如果前级驱动够强劲,电路就能按照趋势变化下去,一定时间后该点的值就会变化为“正确值”,如果驱动不够强劲,电路就会恢复之前的值,最终得到何值是不可控的,所以我们要避免亚稳态。在使用DFF时,必须满足其建立时间和保持时间的要求。

建立时间

现在在回头分析data path和clk path,假设t0时刻FF1采集到数据并传递给FF2,那么FF2只要在t10上升沿采到数据即可,所以数据有一整个Tperiod的时间来传递到FF2-D端。因为要满足建立时间要求,所以对于FF2来说,数据要比时钟“走得快”:

Tdata_path+ Tsetup <= Tclk_path+ Tperiod

所以

Tclk_delay_FF1 + Tc->q_FF1+ Tcomb_logic+ Tsetup <= Tclk_delay_FF2 +Tperiod

在分析STA时,不满足此公式的即为setup violation。对应时序图的分析,见下图:

保持时间

保持时间比较难理解,其实质是当前时钟沿的FF1输出不能太快在当前沿到达FF2。以上图为例,即在t10时刻,为防止FF1采到的新数据太快到达FF2而“冲掉”原来的正确数据,数据必须要在一定时间之后才允许到达,所以保持时间分析,分析的是FF1和FF2的同一个时钟沿。因为datapath和clk_path要满足保持时间要求,所以

Tdata_path– Thold >= Tclk_path

所以:

Tclk_delay_FF1 + Tc->q_FF1+ Tcomb_logic– Thold >= Tclk_delay_FF2

在STA分析时,不满足此公式的即为Holdviolation。

其中Tclk_skew =Tclk_delay_FF2– Tclk_delay_FF1. 这条公式在分析Tskew时用得上。

对应于时序图,见如下图的分析:

4. 实际电路的Setup和Hold公式及violation分析

因为在不同的情形下,例如不同的温度,电压,loading等等,每一段电路的delay是不同的,所以对于同一段电路,其delay可以在如下范围中:

Min_delay<= Delay <= max_delay

如下图:

建立时间

公式为:   Tclk_delay_FF1 + Tc->q_FF1+Tcomb_logic + Tsetup <= Tclk_delay_FF2 + Tperiod

应该满足MAX_data_path_delay + Tsetup  <= MIN_clk_path_delay + Tperiod,才能保证电路是可靠的。所以在实际电路中:

Tdata_path_max+ Tsetup <= Tclk_path_min+ Tperiod

对应上图,该公式应该是:

2ns+ 11ns + 2ns + 9ns + 2ns + 4ns <= 2ns + 5ns + 2ns + Tperiod

所以: 30 <= 9 + 15.因为违反了该公式,所以该电路出现了setup violation。

保持时间

公式为:  Tclk_delay_FF1 + Tc->q_FF1 + Tcomb_logic –Thold>= Tclk_delay_FF2

应该满足MIN_data_path_delay – Thold>= MAX_clk_path_delay.才能保证电路是可靠的。所以在实际电路中:

Tdata_path_min- Thold >= Tclk_path_max

对应上图,该公式应该是:

1ns +9ns + 1ns + 6ns + 1ns – 2ns >= 3ns + 9ns + 3ns

所以: 16ns >= 15ns,满足公司要求,所以该电路无holdviolation。

在某些电路中,可以认为clk tree上面没有延迟,可以认为wire没有延迟,那么setup和hold公式就得到简化。

建立时间和保持时间(1)相关推荐

  1. IC/FPGA笔试/面试题分析(七)建立时间和保持时间类型考题汇总分析

    自从召集2020届校招同行加入新建立的"IC/FPGA校招笔试面试交流群",见识到了很多关于建立时间和保持时间分析的题目,在为别人解答疑惑,以及别人为自己解答疑惑的同时,自己对于知 ...

  2. Setup 和Hold (建立时间和保持时间)解析

    本文是第一篇,有空会继续更新.(转载请注明出处!!!) STA分析是基于同步电路设计模型的,在数据输入端,假设外部也是同时钟的寄存器的输出并且经过若干组合逻辑进入本级,而输出也被认为是驱动后一级的同时 ...

  3. FPGA中建立时间和保持时间不满足如何解决

    问题: 建立时间和保持时间不满足如何解决 回答一: setup violation 主要就是设法剪掉critical path的delay,要么pipeline,要么retiming,要么把combi ...

  4. 为什么D触发器需要建立时间与保持时间

    为什么D触发器需要建立时间与保持时间 定义 建立时间:时钟有效沿到来之前的某段时间内,数据必须稳定,这段时间称为建立时间,用Tsetup或者Tsu表示. 保持时间:时钟有效沿到来之后的某段时间内,数据 ...

  5. 建立时间、保持时间与亚稳态

    文章目录 一.建立时间与保持时间 二.亚稳态现象 总结 一.建立时间与保持时间 建立时间(set up time)是指在触发器的时钟信号上升沿到来以前,数据从不稳定到稳定所需要的时间,一般用TsuT_ ...

  6. 数字电路中的建立时间与保持时间

    [转载]allenwxh的163博客(http://blog.163.com/allenwxh/blog/static/79372356200953111529497/) 建立时间与保持时间 时钟是整 ...

  7. (83)建立时间与保持时间时序分析技巧

    (83)建立时间与保持时间时序分析技巧 1 文章目录 1)文章目录 2)时序约束引言 3)FPGA时序约束课程介绍 4)建立时间与保持时间时序分析技巧 5)技术交流 6)参考资料 2 时序约束引言 1 ...

  8. (80)FPGA建立时间与保持时间及时序模型-面试必问(四)(第16天)

    (80)FPGA建立时间与保持时间及时序模型-面试必问(四)(第16天) 1 文章目录 1)文章目录 2)FPGA初级课程介绍 3)FPGA初级课程架构 4)FPGA建立时间与保持时间及时序模型-面试 ...

  9. (8)FPGA面试题触发器满足建立时间和保持时间的原因

    1.1 FPGA面试题触发器满足建立时间和保持时间的原因 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA面试题触发器满足建立时间和保持时间的原因: 5)结束语. ...

  10. 建立时间和保持时间关系详解

    图1 建立时间(setup time)是指在触发器的时钟信号上升沿到来以前,数据稳定不变的时间,如果建立时间不够,数据将不能在这个时钟上升沿被打入触发器: 保持时间(hold time)是指在触发器的 ...

最新文章

  1. Ubuntu解决开机屏幕默认亮度偏低问题
  2. Linux head和tail指令
  3. 数据流图软件_软件工程导论知识点梳理之概念题
  4. 手把手教你玩转ARP包(一)
  5. python实现 HmacSHA256加密算法
  6. 找到你的位置(JS在页面中的位置)最常用的方式是在页面中head部分放置script元素,浏览器解析head部分就会执行这个代码,然后才解析页面的其余部分...
  7. 蓝桥杯JAVA省赛2013-----B------3(振兴中华)
  8. Error:File read error (source insight 4.0错误)
  9. 项目管理学习总结(3)——产品文档的规划化管理总结
  10. RedHat Linux下获取snmp信息不全的解决办法
  11. 人生苦短,我用 Chrome!
  12. my04_Mysql复制数据一致性校验
  13. 文本框 只输入数字键和删除键
  14. python和java哪个更有前途_Java和Python现在都很热门,哪个更有前途?
  15. 新年跨出第一步:人工智能实施这样做!
  16. 文字转语音怎么真人发声
  17. 推荐一个GitHub项目!docker视频教程下载
  18. 关于 TCP协议和HTTP关系 | TCP的三次握手和四次挥手
  19. 基于LDA模型的知网Python论文主题挖掘
  20. Falsy Bouncer 过滤数组假值 Array.filter()方法

热门文章

  1. JavaWeb『Vue.js』快速入门
  2. 中小企业HR如何搭建人才培养体系
  3. 刷题记录:洛谷P4147玉蟾宫
  4. 秋招面试汇总,写给有需要的人
  5. 在硅谷,华人程序员创业者支棱起来!
  6. 北京大学工业工程系主任侍乐媛:工业大数据支撑企业智能决策
  7. 【网络编程入门】使用socket在Linux下实现即时通信软件
  8. 消失的预测、陨落的交叉熵
  9. (二十四)优秀员工 - 8
  10. Java是世界上最好的语言,但AI的高薪让我酸了