建立时间和保持时间,余量和解决办法
建立时间约束条件(如图红线对比): Tco + Tcomb < Tskew + T - Tsetup
时钟到来之前,数据需要提前准备好,才能被时钟正确采样。要求数据路径比时钟路径更快到达D触发器。
- Tco: 寄存器 clock 端到 Q 端的延迟
- Tcomb :组合逻辑延迟
- Tskew:时钟偏移
- T:时钟周期
- Tsetup:建立时间
保持时间约束条件(如图绿线对比): Tco + Tcomb > Tskew + Thold
时钟到来之后,数据还要稳定一段时间,这就要求下一次的数据延迟在保持时间之后到来,以免数据被冲刷掉。
- Thold:建立时间
建立时间余量: T + Tskew - Tsetup - Tco - Tcomb > 0
措施:
- T:降低频率
- Tskew:布局布线
- Tcomb :组合逻辑延迟,代码优化
- Tsetup、 Tco:厂家决定
保持时间余量: Tco + Tcomb - Tskew - Thold > 0
措施:
- T:与频率无关
- Tcomb :增加组合逻辑延迟
- Tskew:布局布线
- Thold、 Tco:厂家决定
例子:
考虑线网延迟,某电路各种延迟值(单位:ns)如下,时钟周期为 15ns,请判断该电路的建立时间和保持时间是否存在 violation ?
考虑最极端的情况
建立时间余量
T + Tskew - Tsetup - Tco - Tcomb > 0
15 + 2 + 5 + 2 - 2 - 2 - 11 - 2 - 9 - 2 > 0
24 - 28 > 0
建立时间余量小于0,故存在违例。
保持时间余量
Tco + Tcomb - Tskew - Thold > 0
1 + 9 + 1 + 6 + 1 - 3 - 9 - 3 - 2 > 0
18 - 17 > 0
保持时间余量大于0,故不存在违例。