首先先介绍几个概念:

建立时间(Tsu):即时钟有效沿到来前数据应该保持的稳定的时间。

保持时间(Th):即时钟有效沿到来后数据应该保持的稳定的时间。

建立时间余量(Tsu_slack):数据要求到达的时间-数据实际到达的时间。即为满足建立时间最晚可以延迟的时间。

保持时间余量(Th_slack):数据结束时间-数据理论结束时间需求。即为满足保持时间需求,富余出来的时间长度。

接下来用两个寄存器的电路传输模型来进行分析:

对Reg2的建立时间进行分析。

其中:

Tclk1为FPGA PAD 时钟引脚到寄存器1的时钟延迟。

Tco为寄存器1时钟到Q端输出的延迟时间。

Tdata为寄存器1的Q端到寄存器2的D端中间经过的组合逻辑电路的延迟时间。

根据上面电路模型可知:

数据实际到达Reg2的D端的时间为:

T arrival time =Tclk1+Tco+Tdata

Lunch edge:发射沿        Latch edge:采样沿

根据上面电路模型可知:

数据理论上应到达的时间为:

T data_req =Tcycle+Tclk2-Tsu

分析完数据的实际到达时间与理论到达时间,接下来对Reg2的建立时间裕量进行分析:

根据建立时间裕量定义以及上图分析,可得建立时间裕量计算如下:

T setup slack = Tcycle+Tclk2-Tsu-(Tclk1+Tco+Tdata)

对于时钟的最大频率,当T setup slack为0时,可以得到最大时钟频率。

即               F = 1/(Tcycle-Tsetup slack)

对Reg2的保持时间进行分析。

根据上面电路模型可知:

数据到达Reg2实际结束的时间:

T finish time =Tclk1+Tco+Tdata + Tcycle.

Lunch edge:发射沿        Latch edge:采样沿

根据上面电路模型可知:

数据理论上结束的时间为:

T data_req =Tcycle+Tclk2+Th.

分析完数据的实际结束时间与理论结束时间,接下来对Reg2的保持时间裕量进行分析:

根据保持时间裕量定义以及上图分析,可得保持时间裕量计算如下:

Th_slack = Tclk1+Tco+Tdata- (Tclk2+Th)

可以看到Th_slack与时钟频率没有关系。

综上所述,可以得出寄存器建立时间裕量与保持时间裕量计算如下:

Tsetup_slack = Tcycle+Tclk2-Tsu-(Tclk1+Tco+Tdata)

Th_slack = Tclk1+Tco+Tdata- (Tclk2+Th)

而电路中经常会发生建立时间与保持时间违例的情况。根据建立时间裕量与保持时间裕量的计算公式可以提出相应的解决办法。

对于建立时间违例,解决办法如下:

1、降低频率

通过增加公式中的Tcycle,从而增加建立时间裕量。

2、提升芯片工艺

通过提升工艺减小寄存器时钟端到输出端Q的时间Tco,从而增加建立时间裕量。

3、减小组合逻辑延迟

通过减小Tdata,增加建立时间裕量。

  1. 路径优化(并行化,减小延时)
  2. 优化电路设计
  3. 卡诺图化简,减小门电路资源
  4. 插入寄存器,形成流水线

4、后端设计

通过布局布线增加Tskew(即Tclk2-Tclk1),从而增加建立裕量。

对于保持时间违例,解决办法如下:

1、在组合逻辑中插入延时buffer,或者链路拉长,使Tdata时间延长,从而增加保持时间裕量。

2、后端设计

后端版图设计、布局布线调整减小Tskew,从而增加保持时间裕量。

说明:以上内容都是从V3学院课程中总结得到的,博主也是新人,如有错误请不吝指出,谢谢!

寄存器建立时间与保持时间分析相关推荐

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

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

  2. 静态时序分析-建立时间和保持时间违例分析

    文章目录 单一分析模式 setup公式 hold公式 1.建立时间分析 2.保持时间分析 单一分析模式 时序分析模式分别为:单一分析模式(single mode).最好-最坏分析模式(BC_WC mo ...

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

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

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

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

  5. 建立时间和保持时间(1)

    Setup 和Hold (建立时间和保持时间)解析(1) 本文是第一篇,有空会继续更新.(转载请注明出处!!!) STA分析是基于同步电路设计模型的,在数据输入端,假设外部也是同时钟的寄存器的输出并且 ...

  6. 【综合】数字IC设计需要考虑的时序参数;Race Hazard;同步系统时序要求;建立时间、保持时间;偏斜;抖动;毛刺、竞争冒险;亚稳态

    [综合]数字IC设计需要考虑的时序参数:Race Hazard:同步系统时序要求:建立时间.保持时间:偏斜:抖动:毛刺.竞争冒险:亚稳态 数字设计时需要考虑的时序参数 传播延迟 propagation ...

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

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

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

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

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

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

最新文章

  1. 如何访问Linux服务器中RabbitMQ管理页面
  2. 大脑天天超负荷,三分天赋,七分练,世间惊现普通脑修炼秘籍
  3. 删除不再位于远程的跟踪分支
  4. MongoDB常用的操作命令(转)
  5. 字符编码在python中的处理与储存_python----字符编码与文件处理
  6. 喜马拉雅音频下载工具
  7. 台式计算机的配置清单(硬件和软件),计算机硬件配置清单大 全!值得收藏哦
  8. 作业3-6 查询水果单价
  9. hibernate get() load() 区别
  10. Chrome开发者工具详解(4)-Profiles面板
  11. new jQuery.common
  12. HTML5笔记:跨域通讯、多线程、本地存储和多图片上传技术
  13. file_get_contents(): php_network_getaddresses: getaddrinfo failed: Name or service not known
  14. Excel函数实战技巧精粹(六)如何在条件格式中使用函数
  15. 【C语言】输出杨辉三角形 - 杨辉直角三角形(杨辉三角最佳算法) 输出杨辉三角前十行
  16. 该信谁?跳槽究竟是涨工资还是毁一生
  17. html 文字段后间距怎么设置,p字间距 html段落内文字设置字间距间隔
  18. 郭店楚简——原简整理,文物出版社
  19. 下载到的电子书格式是Mobi,这种格式能否在MAC电脑上打开?
  20. 【OpenCV】 ⚠️高手勿入! 半小时学会基本操作 24⚠️ SIFT 算法

热门文章

  1. 2019智能家居白皮书-从智能单品到全屋智能
  2. 微信校园浴室预约小程序系统毕业设计毕设(3)后台功能
  3. 《思考致富》带给我们致富的“捷径”
  4. 一卡通系统人员培训方案
  5. JAVA租车网站计算机毕业设计Mybatis+系统+数据库+调试部署
  6. 1.基于深度学习的知识追踪研究进展_刘铁园
  7. 秒杀系统防止超卖解决方案
  8. ajax nginx 转发 sessionid_Nginx:初识Nginx(概念、在Docker中安装Nginx、常用命令、配置文件) - 怀梦想,致远方...
  9. 巴菲特致股东的信pdf_巴菲特2020年致股东信:长线持股胜过买债券;好企业具备三大特征...
  10. vc6.0使用DAO访问access2000的问题