建立时间和保持时间 giltch1.jpg 图1 建立时间(setup time)是指在触发器的时钟信号上升沿到来以前,数据稳定不变的时间,如果建立时间不够,数据将不能在这个时钟上升沿被打入触发器;保持时间(hold time)是指在触发器的时钟信号上升沿到来以后,数据稳定不变的时间, 如果保持时间不够,数据同样不能被打入触发器。 如图1 。 数据稳定传输必须满足建立和保持时间的要求,当然在一些情况下,建立时间和保持时间的值可以为零。 QUOTE: DC,建立时间不满足,只能重新综合设计,并以违例路径为目标进行优化,以及对涉及到违例的组合逻辑以及子模块加紧约束。 保持时间不满足,可在布图前或者布图后再修改这些违例,通常布图后再修改。因为布图前综合,时序分析采用统计线载模型,在布局前修正保持时间违例可能会导致布图后建立时间违例。 QUOTE: 1、setup time 的意义:为什么 Data 需要在Clock 到达之前到达? 其实在实际的问题中,setup time 并不一定是大于零的,因为Clock 到达时刻并不等同于 latch 的传输门 A 关闭的时刻(更何况这种关闭并不是绝对的和瞬间完成的),这之间有一个未知的延迟时间。 为使问题简化,假设Clock 的到达时刻为传输门 A 关闭、传输们 B 打开的时刻。如果Data 没有在这之前足够早的时刻到达,那么很有可能内部的feedback 线路上的电压还没有达到足够使得 inv1 翻转的地步(因为inv0 有延时,Data 有 slope,传输门 B 打开后原来的Q 值将通过 inv2 迫使 feedback 保持原来的值)。如果这种竞争的情况发生,Q 的旧值将有可能获胜,使Q 不能够寄存住正确的Data 值;当然如果feedback 上的电压已经达到了足够大的程度也有可能在竞争中取胜,使得Q 能够正确输出。 如果inv0、inv1 和 inv2 的延时较大(Data 的变化影响 feedback 和 Q 的时间越长),那么为了保证正确性就需要更大的setup time。所以在实际测量 setup time 的时候,需要选取工艺中最慢的corner 进行仿真测量。 2、、hold time 的意义:为什么 Data 在Clock 到达之后仍然要保持一段时间? 和 setuptime 的情况不一样,因为 Clock 到达时刻并不等同于 latch 的传输门 A 完全关闭的时刻。所以如果Data 没有在Clock 到达之后保持足够长的时间,那么很有可能在传输门 A 完全关闭之前 Data 就已经变化了,并且引起了feedback 的变化。如果这种变化足够大、时间足够长...