时序约束·

建立时间 tsetupt_{setup}:在时钟上升沿的 tsetupt_{setup} 时间前数据必须是稳定的;

保持时间 tholdt_{hold}:时钟上升沿之后的 tholdt_{hold} 时间内数据必须是稳定的;

传播延迟 tpcqt_{pcq}:时钟上升沿到输出端信号稳定所需要的时间;

污染延迟 tccqt_{ccq}:时钟上升沿到输出端信号开始变化所需要的时间;

建立时间与保持时间·

如左图所示,对 R2R2 的输入要在 tsetupt_{setup} 之前稳定,因此要满足关系:

tpcq+tpd+tsetupTct_{pcq} + t_{pd} + t_{setup} \leq T_c

如右图所示,在 R2R2 接收数据后要保持 tholdt_{hold} 时间,这段时间内不能被干扰,因此组合逻辑的输入必须在 tholdt_{hold} 之后,因此要满足关系:

tccq+tcd>tholdt_{ccq} + t_{cd} > t_{hold}

时钟偏移与抖动·

时钟偏移(Clock Skew)·

时钟信号到达各寄存器的时间不同,将 tskewt_{skew} 定义为两个时钟边沿的间隔。

如左图,由于 CLK2CLK1 早了 tskewt_{skew},因此输入到来要更提前,需满足关系

tpcq+tpd+tsetupTctskewt_{pcq} + t_{pd} + t_{setup} \leq T_c - t_{skew}

如右图,CLK2CLK1 晚了 tskewt_{skew},因此前面组合逻辑的输出要再晚一段时间到达 R2R2,才能保证不干扰 R2R2 本来的数据,需满足关系

tccq+tcd>thold+tskewt_{ccq} + t_{cd} > t_{hold} + t_{skew}

注:相反的时钟信号关系不会影响上述的时序约束。

时钟抖动(Clock Jitter)·

Skew 会改变时钟边沿的顺序,不会改变时钟信号的占空比;时钟抖动会改变时钟信号的占空比。

考虑时钟抖动时,要考虑 “最差的情况”。分析过程与 时钟偏移(Clock Skew) 相似。

参考资料·

Sequential Circuits: Timing