IC常用基础知识1-setup time和hold time 总结

  • Post author:
  • Post category:其他




1. 静态时序分析与动态时序分析

静态时序分析:STA,主要目的是为提高系统工作主频以及增加系统的稳定性。我们用软件在综合和实现之后的timing analysis都是静态时序分析。

动态时序分析:DTA,主要目的是在验证器件在实际延时情况下的逻辑功能。通常就是我们所说的仿真。

比较:STA不需要输入向量就能穷尽所有的路径,运行速度快,占用内存小。不仅可以对芯片设计进行全面的时序功能检查,还可以利用时序分析的结果来优化设计。DTA的优点是结果精确,并且适用于更多的设计类型;缺点是速度慢,并且可能会遗漏一些关键路径。



2. 同步设计中的建立时间和保持时间

  1. 建立时间(Tsu)

    建立时间指的是在时钟沿到来之前数据从不稳定到稳定所需的时间,如果建立时间不满足要求那么数据将不能在这个时钟上升沿被稳定的打入触发器
  2. 保持时间(Th)

    保持时间是指在时钟沿到来之后数据稳定保持的时间
  3. 输出响应时间(Tco),Tclk->Q

    触发器输出的响应时间,也就是触发器的输出在clk时钟上升沿到来之后多长的时间内发生变化,也即触发器的输出延时。



3. 时钟相关的概念



3.1. 时钟偏移(skew)

skew:时钟信号到达相邻两个时序单元的时间差就叫做时钟偏移,Tskew = Tc2 – Tc1 ,Tskew为正时,有利于setup满足条件。

image.png

  1. 如何减小时钟偏移

    采用全铜工艺和树状结构,并且设计了专用的时钟缓冲和驱动网络,这么做的目的就是尽量使时钟到达不同时序单元的路径一样长,从而使时钟偏移非常小,可以忽略不计。总的来说,Skew 问题的解决方法就是:

    设计中的主要信号应该走全局时钟网络。



3.2. 时钟抖动(jitter)

  1. 周期抖动 period Jitter:实际时钟信号周期与理想时钟周期的差值的变化。这是最早最直接的一种衡量抖动的方式,这个指标说明了时钟信号每个周期的变化.
  2. 因为这个差值是个随机变量,并且满足高斯分布,所以可以用期望和方差来描述。一般随机选择很多个周期,然后计算平均周期、标准差、峰峰值。标准差称为 “RMS 抖动”,峰峰值称为 “Pk-Pk 周期抖动”。知道 Pk-Pk 周期抖动,对于恰当配置系统和保持时间很有用。
  3. 周期差抖动:cycle-to-cycle jitter 两个相邻时钟周期的差值的变化。根据定义可知,对周期抖动做一阶差分,就可以得到周期差抖动。
  4. 相位抖动:Phase Jitter 一个时钟沿相对于基准对齐之后,经过一段时间后,与理想位置的偏差。这个指标说明了周期抖动在各个时期的累计效应。
  5. 由于 周期抖动 和 周期差抖动 是单个周期或者相邻周期的偏差,所以表征为短期抖动行为。而相位抖动需要累积一段时间,所以表征为长期抖动行为。

    时钟抖动的原因就是噪声

    。相位抖动因为需要累积一段时间,所以这个误差又称为 时间间隔误差(TIE, Timer Interval Error)。



3.3 占空比(Duty Cycle Distortion)

占空比失真,即时钟不对称,有脉冲的时间和无脉冲的时间发生了变化。DCD 会吞噬大量的时序裕量,造成数字信号的失真,使过零区间偏离理想的位置。DCD通常是由信号的上升沿和下降沿之间时序不同而造成的。



4. 异步信号中的恢复时间和撤销时间

  1. 恢复时间 recovery time : 对于异步信号(比如异步复位/置位),

    信号变无效的边沿

    和下一个时钟沿之间必须满足一个最小的间隔。其意义在于,如果保证不了这个最小时间,也就是异步信号无效边离时钟边沿太近了,异步信号解除(无效)之后,没有给 DFF 足够的时间来恢复(recovery)到正常状态,那么就不能保证在时钟沿到来时 DFF 可以正常工作。
  2. 撤销时间 removal time : 对于异步信号(比如异步复位/置位),

    信号变有效的边沿



    前一个时钟沿

    之间必须满足一个最小的间隔。其意义在于,如果保证不了这个最小时间,也就是异步信号的有效沿离时钟太近了,在时钟信号去除(无效)之前,异步信号提前有效了,可能会造成 DFF 处于不确定状态。



5. Timing path

  1. 起点有两种:
  • 时序器件的时钟输入端
  • 电路的 输入端口
  1. 终点也有两种:
  • 时序器件的 数据输入端
  • 电路的 输出端口
  1. 输入和输出排列组合一共就有 4 种 path:
  • 电路输入端口 -> 触发器的数据D端 (Pad-to-Setup)
  • 触发器的clk端 -> 触发器的数据D端 (Clock-to-Setup)
  • 触发器的clk端 -> 电路输出端口 (Clock-to-Pad)
  • 电路输入端口 -> 电路输出端口 (Pad-to-Pad)

    image.png
  1. 关键路径(critical path)

    关键路径:从输入到输出,延时最大的那条路径称为 critical path。关键路径是系统中延时最大的路径,它决定了系统所能达到的最大时钟频率。



6. 到达时间和需求时间

  1. 到达时间:arrival time 信号到达某个特定位置所消耗的时间。一般将时钟信号到达的时刻作为参考的 0 时刻,为了计算到达时间,需要对路径中的所有组件的延时都进行计算。
  2. 需求时间:required time 所能容忍的路径最大延时,也就是信号到达的最晚的时间。如果路径上的延时再大一些,则必须降低时钟频率,否则会产生 setup/hold time violation。
  3. 时间裕量:slack 。slack = required time – arrival time。如果计算出某条路径的 slack 是正数,说明这条路径的时延是满足要求的;如果计算出某条路径的 slack 是负数,则表示路径上的延时太大了,必须做出修改(修改设计 or 修改约束 or 换芯片),否则包含它的电路不能以预期的频率工作。



7. launch和capture edge

  1. Launch edge是指时钟通过触发器来发射数据的时钟沿edge
  2. Capture edge是指时钟通过触发器捕获数据的沿edge

    image.png

    [Tlaunch + Tck2q + Tdp] <= [Tskew + TCLK – Tsetup]

    其中Tck2q也就是Tco, Tdq也就是Tcomb.

    [Tlaunch + Tck2q + Tdp] >= [Tskew + Thold]

    其中skew = Tclk2-Tclk1;当skew为正时,有利于减小Tclk,提高电路频率



8.setup time和hold time时序图

Screenshot from 2019-09-02 21-07-29.png

时序图如下:

image.png

数字系统设计常见的电路图,这里需要保证数据能够正确的在这两个触发器上进行传输,由此确定中间组合逻辑电路的传输延时的范围。

image.png

Tcomb: 组合逻辑电路的传输延时

2、第二个触发器要满足建立时间的约束条件

image.png

在第一个时钟上升沿,前边的触发器采集D1信号,将高电平打入触发器,经过Tco的触发器输出延时到达组合逻辑电路。又经过组合逻辑电路的延时Tcomb(我们假定组合逻辑电路此时没有改变信号的高低,可以把它假定为一个缓冲器)送到了D2接口上。在第二个时钟上升沿到来之前,D2数据线上的信号要满足稳定时间>触发器的建立时间Tsu。

image.png

3、第二个触发器要满足保持时间的约束条件

image.png

时序解释:

接着之前的时序图继续,在第二个时钟上升沿前边触发器采集到D1上的低电平,经过Tco的延时在Q1上得到表达。这个低电平在经过组合电路延时Tcomb到达D2。现在的问题是经过这么Tco+Tcomb的延时,D2上原本的高电平在第二个时钟上升沿到来之后的稳定时间 > 第二个触发器的保持时间。满足了这个条件,后边的触发器才能稳定的接收到最初由D1传过来的高电平。

image.png

4、问题的答案

我们得到中间组合逻辑电路的输出延时范围为:

(Tclk – Tco-max – Tsu) > Tcomb > (Th – Tco-min)



9. 另一种表达方式

image.png

image.png

image.png

image.png

参考链接:

https://wenku.baidu.com/view/8c53f9105f0e7cd18425364c.html

image.png



10. 相关问题

小结:

  1. 如果有时钟抖动的情况,那么我们知道时钟抖动肯定是对电路不友好的,所以我们会导致我们的时序不满足,电路可以正常运行的频率降低。因此会导致我们的时钟周期变大,因此在等式左边。而Tskew有利与建立时间满足条件,可以提高运行频率,因此在等式的右边 Tskew = Tcapture – Tlatch

    Tco+Tcomb+Tsetup+Tjitter <= Tclk + Tskew
  2. 一般我们求电路的最高工作频率,直接带入式子求Tclk,还有一种问题是求一个电路的建立时间和保持时间是多少,这种问题一般直接正向求解,观察时钟沿和数据哪个先到,如果时钟先到,那么setup就要减少。hold time增加。Tsetup_vld = Tsetup – (T_cap-Tcomb) ,Thold_vld =Thold + (T_cap-Tcomb),我们可以另Tskew=(T_cap-Tcomb),注意这只是为了方便记忆,真正的Tskew=Tclk2-Tclk1



10.1问题1

下图是某电路的一条关键路径,其中路径各参数如下:

Tco = 1ns,Tsu = 2ns,Thold = 1ns,Tlogic_max = 4ns, Tlogic_min = 3ns, Jitter = 2ns。求算出最小时钟周期。

image.png

根据公式Tco+Tcomb+Tsetup+Tjitter <= Tclk + Tcapture,得

1+4+2+2 <= Tclk + 1; Tclk >= 8ns



10.2 问题2

image.png

根据公式Tco+Tcomb+Tsetup+Tjitter <= Tclk + Tskew得

Tclk+T5 <= T1 +T2+T3+T4+Tsetup;

根据公式Tco+Tcomb >= Thold + Tskew,得

T1+T2+T3+T4>=Thold+T5

因此答案选4



10.3 问题3

image.png

一个触发器自身的反馈,我们可以认为Tskew为0,因为是同一个触发器,所以时钟到达触发器的时间一致。

根据公式Tco+Tcomb+Tsetup <= Tclk + Tskew得

Tco = 6ns, Tcomb为INV_2的时延2ns,Tsetup=2ns ,Tskew = 0

因此 Tclk >= 6+2+2=10ns,最高工作频率为100Mhz



10.4 问题4

将框内的电路作为一个寄存器,那么其有效的建立时间和保持时间是多少?

image.png

  1. 对于D触发器而言,其本身的建立时间是2ns,也就是说数据必须在时钟有效沿到达之前2ns保持稳定,这样到达D端后就一定是稳定的数据了。
  2. 时钟CLK要早于触发器的时钟1ns到达,因此对于D触发器建立时间的满足是有害的,电路有效建立时间

    Tsetup_valid = Tsetup – 1ns = 1ns(因为数据需要提前1ns稳定下来)
  3. 考虑数据路径延迟影响:Tsetup_valid = Tsetup – 1ns + 2ns = 3ns;(经过组合逻辑后的数据需要在时钟有效沿之前Tsetup时间稳定下来)
  4. 考虑到电路时钟对于触发器时钟早到1ns,所以电路有效保持时间Thold_valid = Thold + 1ns = 3ns;考虑路径延迟影响:数据需要经过一段组合逻辑之后才能保持稳定,因此电路的有效保持时间为:

    Thold_valid = Thold + 1ns – 2ns = 1ns。



10.5 问题5

image.png

Tsetup_vld = Tset_up – Tskew’ = 2ns-(-0.90ns) ;Thold_vld = Thold +Tskew’ = 1.5+(-0.9)=0.6ns

还有一种计算方式,

根据定义来计算



根据两根时间轴,其中需要注意的是,Tsetup是时钟沿到来之前数据需要稳定的时间,因此data的起点为0。Thold是时钟沿到来之后数据需要稳定的时间,因此clk的起点为0


image.png



10.6 问题6

image.png

这个题目让求setup time margin,意思大概就是建立时间裕量,就是系统周期减去Tco,Tgate以及Tsu之后还可以有多少裕量,那,Tco,Tgate以及Tsu当然要用最大的来代入,因为要保证系统在最恶劣的情况下,能有多少裕量。

根据公式 Tlanch+Tco+Tcomb+Tsetup+Tmargin <= Tclk+Tcap,因为裕量是小于一个最小值的,所以前面几个参数都用最大值。0.2+0.65+0.35+0.45+Tmargin <= 10+0.6 ,Tmargin <= 8.95ns。

###问题7

image.png

根据公式Tclk+Tcap >= Tco+Tcomb+Tsetup代入得 Tclk+2>= 2+5+3 因此Tclk >= 8ns,最高工作频率为125MHz

根据公式Tco+Tcomb >= Thold+Tcap得2+5>=6+2不满足,因此存在hold vloation。可以通过增加组合逻辑的时延或者减少时钟路径的时延



11 . 时序违约该怎么办

setup vilation:主要是因为关键路径的时延过大,造成setup time违约。

解决方案:

  1. 复制寄存器
  2. 插入寄存器
  3. 降低频率
  4. 优化关键路径

##11. 选择题

芯片测试过程中,发现Hold时序有问题,用什么方法有可能可以继续测试芯片的功能A

A. 降低电压

B. 降低温度

C. 降低系统时钟频率

D. 提高系统时钟频率

setup time是关键路径时延大造成的,hold time是关键路径时延小造成的。对于电压,升压电流大时延小,降压电流小时延大。温度的影响与工艺相关,对于40nm以下的工艺(先进工艺),升温使得vth显著降低,电流增大,时延减少。


参考链接:



https://blog.csdn.net/Reborn_Lee/article/details/100049997



版权声明:本文为mu_guang_原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。