仔细观察

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

一直以来我都没有搞清楚建立时间(setup time)与保持时间(hold time)到底指的是什么,以及怎么计算时序约束,今天写一篇博客来记录一下自己的理解。
简单来说建立时间就是有效时钟沿到来之前被采样的数据必须保持稳定,保持时间就是有效时钟沿到来之后被采样的数据还需要保持稳定一段时间。还是用下面这个经典的图来解释
image
首先来分析建立时间,简单起见假设两个触发器的时钟没有偏移。EDGE0到来之后,第一个触发器采样数据D0,这个数据需要经过从第一级触发器的输入到第二级触发器的输入,然后在EDGE1被第二级触发器采样。经过\(t_{cq}\)之后第一级触发器的输出端Q0变为数据A,\(t_{cq}\)是触发器输出的延时,即从有效时钟沿到来到触发器采样到输入并输出的时间,再经过\(t_{com}\)第二级触发器的数据输入端变为A,\(t_{com}\)指的是两级触发器之间组合逻辑的传输延时(这里还用A表示传输的数据)。在时钟不存在偏移的情况下,此时距离数据被采样还有\(T-t_{cq}-t_{com}\)的时间,T为时钟周期。如果这个时间小于触发器的建立时间要求\(t_{su}\),则代表当第二级触发器采样时数据可能不稳定,即违反了建立时间,所以建立时间的要求为

\[t_{cq}+t_{com}+t_{su}\leq T \]

建立时间的裕量\(slack\)

\[slack=T-t_{cq}-t_{com}-t_{su} \]

从分析过程可以看出分析建立时间是在两个时钟沿间进行的。下面分析保持时间。
保持时间的分析只需要看一个时钟沿,以上图为例,数据A如果到达的过早,即\(t_{cq}+t_{com}\)很小并且满足

\[t_{cq}+t_{com}\leq t_{hold} \]

则代表A之前的数据保持稳定的时间不够长,即违反了保持时间。
总结一下,分析建立时间和保持时间的公式是

\[t_{cq}+t_{com}+t_{su}\leq T\\ t_{cq}+t_{com}\leq t_{hold} \]

建立时间要求数据在路径上的延时不能过长,因此分析建立时间是需要考虑最长的路径,保持时间要求数据在路径上的延时不能过短,因此分析保持时间需要考虑最短的路径。

posted on 2022-04-05 16:57  注意看  阅读(224)  评论(0编辑  收藏  举报