时序分析基本概念介绍——建立时间和保持时间


前言

静态时序分析中最基本的就是setup和hold时序分析,其检查的是触发器时钟端CK与数据输入端D之间的时序关系。

一、建立时间和保持时间基本概念

建立时间(Tsu:setup time)是指在触发器的时钟信号上升沿到来以前,数据稳定不变的时间,如果建立时间不够,数据将不能在这个时钟上升沿被稳定的打入触发器,Tsu就是指这个最小的稳定时间。

保持时间(Th:hold time)是指在触发器的时钟信号上升沿到来以后,数据稳定不变的时间,如果保持时间不够,数据同样不能被稳定的打入触发器,Th就是指这个最小的保持时间。
 在这里插入图片描述

二、为什么触发器会有建立时间和保持时间?

下图展示的是一个用传输门和反相器做成的正沿D触发器内部结构,只有了解了其内部结构才能搞清楚为什么会存在建立时间和保持时间。
在这里插入图片描述
另外,传输门由一个P沟道和一个N沟道增强型MOS管并联而成,如下图所示。
在这里插入图片描述
当C端为0,输入信号取值在0到VDD范围内,所以T1、T2同时截止,输入与输出之间为高阻态(传输门断开);
当C端接VDD,当Vi在0到(VDD-VT)的范围内,T1导通;当Vi在VT到VDD的范围内,T2导通。因此T1、T2至少一个导通,从而使传输门导通。

1. 为什么会存在建立时间

当时钟上升沿还没来到的时候,CLK=0,时钟处于低电平,主锁存器工作(T1导通,T2关断),接收输入信号QB = D;从锁存器不工作(T3关断,T4导通),输出 Q 保持不变。
所以,该寄存器的建立时间就是上升沿到来之前D通过反相器的时间即数据D到达B点的时间
在这里插入图片描述

2. 为什么会存在保持时间

当时钟上升沿到来的时候,CLK=1时,主锁存器不工作(T1关断,T2导通),QB保持不变;从锁存器工作(T3导通,T4关断),将QB传送到输出端。所以,该寄存器在读出QB时,如果输入端D的变化会引起QB的变化,则读出QB失败,因此,保持时间为T1的关断时间
在这里插入图片描述

三、建立时间和保持时间约束

下面是两个触发器(flip-flop)组成的简单电路。以下图为例,分析建立时间及保持时间。发送数据的触发器称为Launch flip-flop,接收/捕获数据的触发器称为Capture flip-flop,两触发器时钟端信号为同一时钟。
在这里插入图片描述

1. 建立时间约束

两触发器间的数据传输通常在一个时钟周期内完成。
数据到达UFF1/D所需时间Arrival time为:Ta = T_launch + T_c-q + T_comb
满足setup要求时所允许的最长时间Required time为:Tr = T_capture + T_clk - T_setup
setup time要求可表示为:Tr - Ta = T_margin >= 0,因此,第二个触发器要满足建立时间的约束条件为
T_launch + T_c-q + T_comb + T_setup <= T_capture + T_clk
由此可见,setup check与时钟频率有关。
其中:
T_launch:CLKM到UFF0时钟端CK的延时
T_c-q:UFF0的CK->Q的传输时间
T_comb:组合逻辑延时
T_margin:设计裕量
T_setup:UFF1的setup时间要求
T_capture:CLKM到UFF1时钟端CK的延时
T_clk: 时钟周期
在这里插入图片描述
建立时间约束:当在时钟的上升沿传输D1数据时,由于datapath太长,可能会导致在一个时钟周期后,D1数据没有传到UFF1/D,导致UFF1在上升沿没有采到UFF0传过来的D1数据,所以必须满足建立时间约束即前一级触发器的数据赶紧过来。以此来防止UFF0的D1数据来的太晚,超过了一个周期,导致UFF1采不到D1。

2. 保持时间约束

数据到达UFF1/D所需时间Arrival time为:Ta = T_launch + T_c-q + T_comb
满足hold要求时所允许的最短时间Required time为:Tr = T_capture + T_hold
hold time要求可表示为:Ta - Tr = T_margin >= 0,因此,第二个触发器要满足保持时间的约束条件为
T_launch + T_c-q + T_comb >= T_capture + T_hold **
由此可见,hold检查发生在同一时钟边沿,与时钟频率无关
其中:
T_launch:CLKM到UFF0时钟端CK的延时
T_c-q:UFF0的CK->Q的传输时间
T_comb:组合逻辑延时
T_hold:UFF1的hold时间要求
T_margin:设计裕量
T_capture:CLKM到UFF1时钟端的延时
T_clk: 时钟周期
在这里插入图片描述
保持时间约束:在时钟的上升沿会同时发生D1和D2的传输,由于当前数据D1数据有保持时间的要求,所以需要D1在时钟的上升沿之后仍需保持一段时间,但同时下一个数据D2也在传输,并且经过T_c-q + T_comb就会追上D1,我们要保证D1不被冲刷掉,所以必须满足保持时间约束即
前一级触发器的数据不要来的太快**。以此来防止UFF1的D1数据还没传完,UFF0的下一个数据D2已经传到UFF1的D端将D1数据冲掉。

四、如何修复建立时间和保持时间时序违例?

The following example shows how PrimeTime checks setup and hold constraints for a flipflop.
在这里插入图片描述

1. Setup Timing Violation的解决方案

Setup slack公式为T_setupslack = T_capture + T_clk - (T_launch + T_c-q + T_comb + T_setup) >=0
其中clock skew=T_skew=T_capture - T_launch,T_c-q是D->Q的传输延迟,T_comb是组合逻辑延迟,T_clk是时钟周期,T_setup是建立时间,T_setupslack是建立时间裕量。
如果出现了Setup Timing Violation,即T_holdslack为负数了,那么可以考虑:

  1. 增大时钟周期T_clk,即降低时钟频率
  2. 减小 D->Q的传输延迟T_c-q ,即更换更快的器件,使用更先进的器件库
  3. 减小 T_comb,即减小组合逻辑延时,主要是关键路径的处理,包括更换更快的器件、插入pipeline、重定时等
  4. 增大clock skew,如果T_skew为正,对setup是有利的,对hold是有害

2. Hold Timing Violation的解决方案

Hold slack公式为T_holdslack =T_launch + T_c-q + T_comb - (T_capture + T_hold)>=0
其中clock skew=T_skew=T_capture - T_launch,T_c-q是D->Q的传输延迟,T_comb是组合逻辑延迟,T_hold是保持时间,T_holdslack是保持时间裕量。
如果出现了Hold Timing Violation,即T_holdslack为负数了,那么可以考虑:

  1. 增大T_comb,即增大组合逻辑延时,主要是关键路径的处理。可以更换更慢的器件,增加Buffer或者后端布局布线拉长布线以增加延时
  2. 减小clock skew,如果T_skew为负,对hold是有利的,对setup是有害

但是上述方法只是理论的方法,实际P&R使用的方法可能略有不同。

五、什么是数据有效窗口?

“数据有效窗口”表示捕获的数据满足建立时间和保持时间,在此窗口中要捕获的数据不能发生变化,否则将引起不稳定的结果。
在这里插入图片描述
我们来看①、②、③三种情况:
①:当延迟时间大于T-Tsu时,Data在建立时间区域内才到达DFF1,所以不满足建立时间要求,这就是说数据来的“太晚了”;
②:当Data延迟了很小一段时间(<Th),Data在保持时间内就变化了,所以不满足保持时间,这就是说数据来的“太早了”;
③:当Data延迟了Th,Data则满足建立时间要求又刚好满足保持时间要求,这就是说数据来的“正巧”。
综上所述,数据的最大延迟是T-Tsu,最小延迟是Th。

总结

解决时序收敛的问题也是静态时序分析中的主要任务。

  • 11
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值