1、register-to-register模型

CLK是源寄存器(Source)和目的寄存器(Destination)的时钟源头,在SDC中一般用create_clock/create_generated_clock定义。

A点表示CLK的出口,B点表示源寄存器的CK端,C表示目的寄存器的CK端,D表示源寄存器的Q端,E表示目的寄存器的D端。在实际的电路实现(FPGA/ASIC)中,因为布局布线产生的线延时和组合逻辑产生的CELL延时,让电路实现起来不那么理想。

D0`指的是D0经过了组合逻辑之后的单bit数据。数字实现中,为了保证目的寄存器可以成功采样源寄存器发送的数据,用setup time和hold time来判断是否满足时序要求。

Setup time指的是在时钟触发寄存器采样(上升沿或下降沿,取决于寄存器)前数据必须稳定保持的最小时间,以保证数据能被时钟正确的采样。

Hold Time指的是在时钟触发寄存器采样(上升沿或下降沿,取决于寄存器)后数据必须稳定保持的最小时间,以保证数据能被时钟正确的采样。

Launch edge指的是源寄存器CK端发送数据的时刻,Capture edge指的是目的寄存器CK端接收数据的时刻,用于理想情况下(时钟和数据都没有延时)。

2、setup time

Setup Relationship是理想时钟下launch edge和capture edge之间setup关系。在图表 2‑1中源寄存器和目的寄存器用同一个源时钟且上升沿触发,setup relationship就是CLK的时钟周期。例如CLK为100MHz,setup relationship为10ns。

以时钟源CLK作为起点,数据的实际到达目的寄存器D端的时间(Data Arrival Time)为:

Data Arrival Time(Setup)= launch edge time + source clock path delay + data path delay =Tck1+Tco+Td

假定launch edge time是在0ns时刻,capture edge time就是在Tclk时刻,Tclk表示时钟周期,因为capture edge time-launch edge time=setup relationship=Tclk。

以时钟源CLK作为起点,数据实际被采样的时间(Data Require Time)为:

Data Require Time(Setup)= capture edge time + destination clock path delay – clock uncertainty-Destination Setup Time =Tck2+Tclk-Tuncertainty-Tsetup

为了满足目的寄存器的时序要求,数据的实际到达目的寄存器D端的时间(Data Arrival Time)必须比数据实际被采样的时间(Data Require Time)早Tsetup以上,Tsetup由寄存器库的特性决定。因此Setup的裕量(slack)为:

Setup Slack=Data Require Time(Setup)-Data Arrival Time(Setup)= Tck2+Tclk-Tuncertainty-Tck1-Tco-Td-Tsetup= Tskew +Tclk-Tuncertainty-Tco-Td-Tsetup

Tck2-Tck1称为时钟偏移(skew),用Tskew表示。Setup Slack必须大于0才能满足目的寄存器的setup time要求。

Tuncertainty包括时钟抖动(jitter)和人为设定的裕量(margain)。时钟抖动和时钟自身质量以及传输过程有关

如果Setup Time有了violation,可以采取的措施有:

1)优化DFF间的组合逻辑,使其路径减少(减少Td);

2)在组合逻辑中再加一个寄存器,将组合逻辑变成2条路径(减少Td);

3)将目的寄存器的时钟通过增加线长度和插入clk buffer往后延(增加Tskew);

4)降频(增加Tclk)。

3、hold time

Hold Relationship是理想时钟下launch edge和capture edge之间hold关系。在图表1-2中源寄存器和目的寄存器用同一个源时钟且上升沿触发,hold relationship就是为0。

以时钟源CLK作为起点,数据的实际到达目的寄存器D端的时间(Data Arrival Time)为:

Data Arrival Time(Hold)= launch edge time + source clock path delay + data path delay=Tck1+ Tco+Td

假定launch edge time是在0ns时刻,capture edge time就是在0ns时刻因为capture edge time-launch edge time=hold relationship=0。

与setup time的一样,区别是setup time中的Data Arrival Time指的是capture edge上一个cycle的,hold time中的Data Arrival Time指的是capture edge同一个cycle的,但是值相等。

以时钟源CLK作为起点,数据实际被采样的时间(Data Require Time)为(见图表1-2):

Data Require Time(Hold)= capture edge time + destination clock path delay+clock uncertainty+destination hold time = Tck2+Tuncertainty+Thold

和Tsetup一样,Thold由寄存器库的特性决定。为了满足目的寄存器的时序要求,新数据的实际到达目的寄存器D端的时间(Data Arrival Time)必须比旧数据实际被采样的时间(Data Require Time)晚Thold以上

Hold Slack=Data Arrival Time(Hold)-Data Require Time(Hold)=Tck1+  Tco+Td- Tck2-Tuncertainty-Thold=Td+Tco-Tskew-Tuncertainty-Thold 

Hold Slack必须大于0才能满足目的寄存器的hold time要求。

Hold Time的违例(violation)的处理办法为:

1)增加源寄存器Q端到目的寄存器D端的延时;

2)减少时钟偏移(skew)。

但是这两种方法都是以牺牲setup slack作为代价。Hold Slack与Tclk(时钟周期)无关,无法通过降频/提频的方式收敛,因此signoff时不能降低hold的标准,宁可牺牲setup time导致正常工作频率低,否则电路无法工作(DFF采错数据)。

Setup Time与Hold Time相关推荐

  1. FPGA知识查漏补缺——为什么setup summary和hold suammay的data path延时不一致

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 FPGA知识查漏补缺--为什么setup summary和hold suammay的data path延时不一致 前言 问题描述 时序 ...

  2. setup time和hold time

    在电路的设计以及优化中,经常会遇到setup time和hold time的概念,一般会用在静态时序分析(static timing analysis, STA)中,首先在这里推荐一篇讲解比较清晰的文 ...

  3. Setup time 和 Hold time

    一.定义         setup time:即建立时间,也就说数据在时钟到来之前保持稳定所需要的时间.         hold time:即保持时间,也就是说在时钟到来之后数据需要保持稳定的时间 ...

  4. DC概论四之setup time 与 hold time 之三

    注明:如需转载,请注明作者出处,谢谢-,Author:pythonlong 以下根据资料和个人体会整理,如果错误,疑问欢迎请指正,讨论!! 有了上篇的知识http://bb2hh.blogbus.co ...

  5. 【Basking Rootwalla】真正理解setup time/hold time(二)

    算是转的原文 http://www.edaboard.com/thread139461.html#post604717 核心就是setup time和hold time HOLD violations ...

  6. 真正的理解setup time/hold time

    转自:http://www.cnblogs.com/poiu-elab/archive/2012/10/29/2745390.html 什么叫做真正的理解setup time/hold time呢? ...

  7. STA基础分析-setup和hold

    首先普及一下基础概念 1.数据传输需要的时间( Data Arrival Time) : 信号到达时间是指信号到达电路中某一点的真实时间,一般等于信号到达时序路径起点的时间加上信号在该时序路径上传播所 ...

  8. setup time hold time violation

    目录 setup time violation的解决办法 hold time violation的解决办法 有关setup time和hold time的概念参考:建立时间.保持时间.亚稳态 数据信号 ...

  9. setup timing violation and hold timing violation in same path

    method: 1.切换memory VT 2.切换path上cell的VT 3.插入negative latch 4.early clk 5.加长common path 6.减小net delay ...

最新文章

  1. mkdir、rmdir命令、head、tail命令
  2. mqtt连接失败_Netty实战:如何让单机下Netty支持百万长连接?
  3. 【小白学习PyTorch教程】十四、迁移学习:微调ResNet实现男人和女人图像分类
  4. 音视频直播--技术架构
  5. kali 安装volatility_kali对Windows内存在线取证
  6. jmap 文件解析_干货分享丨jvm系列:dump文件深度分析
  7. 获取时间,并将时间的空格和特殊字符去掉,作为一个变量来使用
  8. 昆仑万维C++工程师笔试
  9. springboot实现数据库数据导出到Excel中并下载到浏览器本地
  10. 两种常用电容式麦克风 MEMS还是ECM
  11. mysql中反单引号的作用_mysql中反单引号(`)作用
  12. win7快捷关闭计算机,win7系统快速启动功能关闭的处理方法
  13. 联想IBM ThinkPad 笔记本BIOS设置手册
  14. android应用apn.xml,android之APN
  15. matplotlib库的pyplot的plot()函数详解
  16. 六十六条经典禅语提升人生境界
  17. BIOS、UEFI及系统安装
  18. 港星变身“单亲美妈” 陈松伶:中年女演员的舞台不应设限
  19. 将百度富文本编辑器(ueditor)中的内容转化为word文档格式
  20. SQL中的left outer join,inner join,right outer join用法详解

热门文章

  1. 物联网是什么?物联网前景如何?
  2. 使用Python将TXT文本内容读取后生成指定XML格式的文件
  3. Delphi2007来了
  4. Oracle的下载安装
  5. 安规之电气间隙和爬电距离
  6. hmailserver搭建一个公网可收发的自用邮局
  7. C++ 数组名a、数组名取地址a、数组首地址a[0]、数组指针*p
  8. 购物中心智能管理系统该如何选择
  9. python plot画简单的曲线图
  10. 统计英文名著中单词出现频率