如下图所示,这是典型的时序结构。 解释图中的符号:
Tlaunch:时钟源点到第一个触发器的时钟网络延迟,也就是时钟偏斜(skew);Tcapture:为时钟源点到第二个触发器的时钟网络延迟,也就是时钟偏斜(skew);Tck2q:是触发器的延迟,即D端到Q端的延迟,这是由触发器本身的电气特性所决定的;Tcycle:是时钟周期,即时钟频率 1\fclk;Tdp:是第一个触发器的输出端到第二个触发器的输入端之间的组合逻辑电路部分的电路延迟;我们分析这个电路,由下图可看出: 解释上图,第二个触发器要想满足setup time,就必须要满足:
上图中绿色竖线为时钟源点经过延迟,到第二个触发器的时间(对应绿色路径)对应红色的路径部分,经过组合逻辑,到达第二触发器的Q端,最晚只能到达上图的红色竖线部分,否则就没办法,满足建立时间。由此,我们可以推迟公式: Tlaunch + Tck2q + Tdp ≤ Tcapture + Tcycle - Tsetup
因为Tlaunch和Tcapture都表示为时钟偏斜(clock skew),所以我们合并之后就可得:
建立时间约束:Tsetup ≤ Tcycle +Tskew - Tdp - Tck2q
保持时间约束:Thold ≤ Tdp + Tck2q
其中参数意义:
Tclock:也就是时钟偏斜(clock skew);Tck2q:是触发器D端到Q端的延迟;Tcycle:是时钟周期,即时钟频率 1\fclk;Tdp:是组合逻辑电路部分的电路延迟;PS:这里可能你会觉得建立时间有点难记,我多啰嗦一句:
Tcycle + Tskew 是表示第二个触发器的时钟到达的时间;Tdp + Tck2q是表示经过第一个触发器+组合逻辑到达的时间;二者的差值就是建立时间最大的时间要求 解决建立时间和保持时间不满足的情况由上面推导的不等式,我们可以得出结论:
1.建立时间不满足当建立时间不满足时,即Tsetup值要大于实际的Tcycle +Tskew - Tdp - Tck2q,为了满足建立时间:
可以通过改进工艺,采取具有更小的Tsetup值的芯片;采用延迟更低的触发器,降低Tck2q;增大时钟周期Tcycle和时钟偏斜Tskew,但这会降低电路的性能;尽量减小两个触发器之间的组合逻辑电路的使用,从而降低Tck2q。 2.保持时间不满足当保持时间不满足时,也就是Thold要小于Tdp + Tck2q,可以通过:
理论上,可以增加Tdp和Tck2q来解决,也就是增加触发器的D端到Q端的延时,以及两级触发器之间的组合逻辑电路部分。目前大部分芯片的Thold时间都可以做到0ns。所以当保持时间不满足时,通常采用的做法是在传输路径上插入buffer,在不影响逻辑功能前提下,只具有增加延迟的作用。PS:尤其注意,保持时间Thold和时钟频率之间是没有关系,故降低时钟速度不能解决保持时间不满足的问题,很多面试题喜欢在这里挖坑。