关于建立时间,保持时间以及对应的slack的计算

juremy420 / 2023-09-03 / 原文

什么是建立时间,保持时间

  1. 建立时间是指,对于D Flipflop来说,在时钟上升沿到来之前,数据输入端保持不变的最小时间
2. 保持时间是指,对于D Flipflop来说,在时钟上升沿到来之后,数据输入端保持不变的最小时间
* 一旦数据输入端违反了建立时间和保持时间的要求,那么D Flipflop就可能会进入亚稳态。
* 对于复位信号,还存在两个与建立时间和保持时间平行的概念,恢复时间和撤离时间。为了让复位信号,不违反恢复时间和撤离时间的要求,采取异步复位同步释放的设计。

关于建立时间和保持时间的slack的计算。

  • 在理解建立时间和保持时间的基础上,才能理解建立时间和保持时间的slack的计算过程,
  • 首先要理解发射沿(launch edge),捕获沿(latch edge)。发射沿是时钟的发起时刻,捕获沿是计算是否违反时间要求的时刻。
  • 三个概念,时钟到达时间,数据到达时间,数据要求时间。


我们总共要计算两条数据通路,分别是②和③。②这条时序的数据到达时间为:
Tdata_arrival = lauch_edge + Tclk1 + Tco + Tdata



③这条路径要计算时钟到达时间:
Tclock_arrival = latch_edge + Tclk2

下面是计算建立时间的slack.

1.由于是建立时间,所以计算数据要求时间要用时钟到达时间减去Tsu
Tdata_required = Tclock_arrival - Tsu
2.现在已经有了两个时刻,分别是数据的到达时间和数据的要求时间。用要求时间减去到达时间,如果为正,那么说明建立时间没有满足要求。如果这个正数越小,就说明时序越紧张。
Tslack_setup = Tdata_required - Tdata_arrival

下面是计算保持时间的slack.

  1. 由于是保持时间,所以数据的要求时间要用时钟的到达时间加上Thold。
    Tdata_required = Tclock_arrival + Thold;
  2. 现在已经有两个时刻,分别是数据的到达时间和数据的要求时间。用数据的到达时间减去数据的要求时间,如果为正,说明保持时间满足要求。如果这个正数越小,说明时序越紧张。注意,这里的数据到达时间用的launchedge是下一时刻的,所以launchedge减去latchedge等于零
    Thold_slack = Tdata_arrival - Tdata_required