一个时序单元的同步引脚的建立时间约束和保持时间约束通常用二维表来描述,如下图所示。下图为触发器的非线性延迟模型(NLDM,Non-linear Delay Model),包含了数据引脚(D端)的建立时间和保持时间信息。
例子里的一些保持时间值是负值。这是可接受的,这通常发生在当数据路径从触发器的引脚到内部的锁存点(Latch Point)比对应的时钟路径长。所以,保持时间为负值意味着触发器的数据引脚可以先于时钟引脚变化,并且依然满足保持时间检查。
触发器的建立时间也可以是负值。这代表在触发器的引脚上,数据可以在时钟引脚后变化,且依然满足建立时间检查。
建立时间和保持时间可以都是负值吗?不行。为了让建立时间和保持时间检查一致,建立时间和保持时间的和必须为正。所以,如果建立时间(或者保持时间)检查包含负值,那相应的保持时间(或者建立时间)必须是足够大的正值,以保证建立时间加上保持时间的和是正值。如下图2中的例子,它有负保持时间。因为建立时间必须发生在保持时间之前,建立时间加上保持时间是正值。建立时间加保持时间的时间宽度就是信号必须保持稳定的区间。
对于触发器,在扫描数据输入(Scan Data Input)引脚有负的保持时间是很有帮助的。这给了时钟偏移(Clock Skew)一定的灵活性,在扫描模式(Scan Mode)下就不需要为了修复保持时间违例而插入大量的缓冲器(Buffer)(扫描模式是指在该模式下,触发器被串联在一起行程扫描链,一个触发器的输出通常被连接到下一个触发器的扫描数据输入引脚,这种连接发生是为了可测试性)。