基本概念
建立时间就是时钟触发事件来临之前,数据需要保持稳定的最小时间,以便数据能够被时钟正确的采样。
保持时间就是时钟触发事件来临之后,数据需要保持稳定的最小时间,以便数据能够被电路准确的传输。
建立时间和保持时间的由来:
G1~G4 与非门是维持阻塞电路,G5~G6 组成 RS 触发器。
时钟直接作用在 G2/G3 门上,时钟为低时 G2/G3 通道关闭,为高时通道打开,进行数据的采样传输。
但数据传输到 G2/G3 门之前,会经过 G4/G1 与非门,将引入时间延迟。引入建立时间的概念,就是为了补偿数据在 G4/G1 门上的延迟。即时钟到来之前,G2/G3 端的输入数据需要准备好,以便数据能够被正确的采样。
数据被时钟采样完毕后,传输到 RS 触发器进行锁存之前,也需要经过 G2/G3 门,也会引入延迟。保持时间就是为了补偿数据在 G2/G3 门上的延迟。即时钟到来之后,要保证数据能够正确的传输到 G6/G5 与非门输入端。
如果数据在传输中不满足建立时间或保持时间,则会处于亚稳态,导致传输出错。
约束条件
建立时间约束条件
下图是一个典型的触发器到触发器之间的数据传输示意图。其中 “Comb” 代表组合逻辑延迟,“Clock Skew” 表示时钟偏移,数据均在时钟上升沿触发。
时钟到来之前,数据需要提前准备好,才能被时钟正确采样,要求数据路径 (data path) 比时钟路径 (clock path)更快,即数据到达时间(data arrival time)小于数据要求时间(data required time)。则建立时间需要满足的表达式为:
Tcq + Tcomb + Tsu <= Tclk + Tskew
各个时间参数说明如下:
- Tcq: 寄存器 clock 端到 Q 端的延迟;
- Tcomb: data path 中的组合逻辑延迟;
- Tsu: 建立时间;
- Tclk: 时钟周期;
- Tskew: 时钟偏移。
对上式进行变换,则理论上电路能够承载的最小时钟周期和最快时钟频率分别为:
最小时钟周期 = Tcq + Tcomb + Tsu - Tskew
最快时钟频率 = 1 / (Tcq + Tcomb + Tsu - Tskew)
保持时间约束条件
时钟到来之后,数据还要稳定一段时间,这就要求前一级的数据延迟(data delay time)不要大于触发器的保持时间,以免数据被冲刷掉。则保持时间需要满足的表达式为:
Tcq + Tcomb >= Thd + Tskew
各个时间参数说明如下:
- Tcq: 寄存器 clock 端到 Q 端的延迟;
- Tcomb: data path 中的组合逻辑延迟;
- Thd: 保持时间;
- Tskew: 时钟偏移。
余量与解决办法
建立时间余量: T + Tskew - Tsetup - Tco - Tcomb > 0
措施:
- T:降低频率
- Tskew:布局布线
- Tcomb :减小组合逻辑延迟,代码优化
- Tsetup、 Tco:厂家决定
保持时间余量: Tco + Tcomb - Tskew - Thold > 0
措施:
- T:与频率无关
- Tcomb :增加组合逻辑延迟
- Tskew:布局布线
- Thold、 Tco:厂家决定
此例是一个触发器自身到自身的反馈,一定要分析好数据路径和时钟路径,下面再看一道此类型的扩展例题。
例4:
- (1)以下电路固有的建立时间和保持时间?
- (2)该电路最高的工作频率?
解:
该电路数据路径和时钟路径上均有延迟,为达到与触发器相同建立时间和保持时间的条件约束,则触发器 D 端和时钟端 CK,以及等效的数据端 Data 和时钟端 Clock 时序图如下(_):
(1) 由图可知:
该电路固有的建立时间为:2.1 + 2 - 1.2 = 2.9ns
固有的保持时间为:1.2 + 1.5 - 2.1 = 0.6ns
由此可知,数据路径的延迟会增加电路固有的建立时间,但是会减少电路固有的保持时间。而时钟偏移会减少电路固有的建立时间,增加电路固有的保持时间。
(2) 此电路仍然是自身到自身的反馈电路。所以没有时钟偏移,也无需考虑 T1= 0.9ns 的延迟。所以最高工作频率为: 1 / (1.8 + 1.2 + 2)ns = 200MHz
推荐一个文章
静态时序分析——Time Borrowing浅析