一、建立时间的检查
建立时间的检查是指检查电路里每一个触发器的数据和时钟的关系是否满足建立时间的要求。
我们以上图为例进行建立时间检查。由图可知,我们主要针对第二个触发器UFF1进行检查。我们可以梳理时序关系如下:
通过这个图,我们可以得到满足建立时间需要达成以下目标
即我们之前说到的Setup slack = Data Required Time(setup) - Data Arrival Time > 0 <===> 1+2+3<6+7-5
在考虑skew和jitter的偏差的情况下,上述的式子可以修改为:
其时序报告一般如下:
注意,在setup check中,为考虑最差情况,取所有延迟最大,故path type为max。
二、保持时间的检查
保持时间的检查与建立时间的检查具有以下的区别:
1、保持时间的检查是在同一个时钟边沿进行的,即数据的发射路径和数据的捕获路径是同一时钟边沿
2、保持时间与时钟周期是没有任何关系的
我们依旧以上面的时序路径图进行分析,其时序关系如下:
通过这个图,我们可以得到满足保持时间需要达成以下目标:
即我们之前说到的Hold slack = Data Arrival Time - Data Required Time (hold)> 0 <===> 1+2+3>6+Thold
考虑skew和jitter的偏差的情况下,上述的式子可以修改为:
其时序报告一般如下:
注意,在setup check中,为考虑最差情况,取所有延迟最小,故path type为min。
一般来说,setup可以通过时钟频率来调整,而hold time是不行的,是一定要满足的。