关于建立时间,保持时间以及对应的slack的计算
什么是建立时间,保持时间
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.
- 由于是保持时间,所以数据的要求时间要用时钟的到达时间加上Thold。
Tdata_required = Tclock_arrival + Thold; - 现在已经有两个时刻,分别是数据的到达时间和数据的要求时间。用数据的到达时间减去数据的要求时间,如果为正,说明保持时间满足要求。如果这个正数越小,说明时序越紧张。注意,这里的数据到达时间用的launchedge是下一时刻的,所以launchedge减去latchedge等于零
Thold_slack = Tdata_arrival - Tdata_required