时序约束,是保证门级电路正常工作的延迟约束,就好像高速公路上行驶的汽车,对其车速和安全车距的要求。速度过快,车距过近,就很容易发生撞车, 而速度过慢,车距过大,就容易造成拥堵。 所以,只有合适的速度和车距要求才能保证高速公路的安全和畅通。门级电路的原理类似,如果从前级寄存器到后级寄存器之间的数据路径,延迟过大,传输过慢,就可能造成数据“拥堵”,而延迟过小,传输过快,就会发生数据“撞车”。而数据的延迟约束是由建立时间和保持时间来约束的。

首先,我们需理解这两个很重要的是时序概念,建立时间(setup time)和保持时间(hold time),它们几乎贯穿整个时序分析阶段。大家在面试的时候,可能经常会被问到,什么是建立时间和保持时间。

建立时间是时钟有效沿到来数据至少要准备好的时间。保持时间是时钟有效沿到来数据至少要稳定的时间。

注意这几个加粗的关键字:

1.“有效沿”,正边沿触发的触发器,有效沿是时钟上升沿,负边沿触发的触发器,有效沿是时钟下降沿。 2.“前”和“后”, 建立时间是在时钟有效沿前去检查,而保持时间是在时钟有效沿后去检查。 3.“数据”,建立和保持时间都是针对数据路径的延迟要求,而不是针对时钟路径的延迟要求。

 

从上图看,建立时间和保持时间的要求构成了一个“时间窗口”,数据如果在这个窗口内发生变化,就会出现“亚稳态”。先解释下“亚稳态”,亚稳态就是数据的不稳定状态,其实就是处于0和1之间的震荡状态,这个时候去采触发器输出端(Q pin)的值的话,可能是0,也可能是1,这是由MOS管(门级电路的最底层单元)不充分的充放电造成的,但亚稳态只会持续一段时间,最终会稳定下来。 这是由触发器的结构决定的,因为触发器是有两级锁存器构成,每级锁存器都是两个首位相连的反向器构成的反馈环路,这个反馈环路会把 0和1之间的任何一个不稳定的电平最终通过充放电作用,拉回到稳定电平,有兴趣的同学可以参考相关资料。

我们再来了解两个术语,launch register和capture register。前级触发器,我们叫做launch register,后级触发器,我们叫做 capture register。只有触发器的建立时间和保持时间同时满足,门级电路才能正常工作。

那大家来思考下,如果建立时间和保持时间不满足,capture register的数据到底会出现什么问题呢?

如果setup有问题,以launch register的时钟有效沿为参考,那么在下一个 capture register的时钟有效沿到来前,新的数据还没有传到capture register的数据端(D pin),造成capture register的数据更新不成功。这个时候,数据一个周期处理不过来,造成数据拥堵。

当然对速度要求不高的话,可以用多周期路径(multi-cycle path)来处理,这个概念我们会在以后的文章中详细讲解。

如果hold有问题,同样以launch register的时钟有效沿为参考,那么在capture register的同一个有效时钟沿到来时,数据已经传到capture register的D pin,造成launch register刚更新完的数据在同一个时钟沿又被更新到capture register里,使数据同时贯穿两级register,造成数据“撞车”。

时序检查都是检查capture register的setup和hold。Setup或hold time不满足的话,就会造成capture register的数据发生错误,所以为了保证整个芯片能正常工作,每一级的capture register都要检查setup和hold。

在分析时序时,前级时序路径(timing path)上的capture register同时是后级时序路径的launch register。这样的递推检查,可以保证检查到每一级register。只有全部满足时序要求的设计才能做设计交付(sign-off)。业界常用的时序sign-off工具是PT(Prime Time)。

作者:ken

外资知名大型芯片设计公司后端工程师, 参与过多次28ns/14nm芯片顶层及模块级设计。擅长高频率高密度模块级版图设计以及芯片级版图设计,静态时序分析及签收。 具有很强的设计能力和丰富的项目经验。