关于Vivado的建立时间分析,写了两篇,如下:
保持时间,就简短一点。
总之,关于建立保持时间分析,几个关键点就是:
裕量计算公式:数据要求时间 减去 数据到达时间
时序分析的起点,以及Launch edge以及Latch edge的理解
建立时间描述的是数据从源寄存器到达目的寄存器,目的寄存器时钟采样时刻之前,也就是时钟到达之前,数据保持稳定的最小时间,即数据要在这个时间之前到达。
如下图时序模型以及时序图:
时序关系
蓝线即是一个界限,数据要在这个时刻之前到达就能达到建立时间要求,满足时序。
对于保持时间,描述的是数据在时钟有效沿(这里就是指latch edge)之后,数据保持稳定的时间。
一个数据通常持续一个时钟,或者说总有数据持续一个时钟,要想满足保持时间,数据从源寄存器到目的寄存器之间的延迟就不能太小,否则到达目的寄存器之后,持续时间就会太小,就有可能满足不了时序要求。
Vivado是如何分析建立时间裕量的呢?
分三步分析:
数据到达时间,即源时钟路径+数据路径的延迟时间;
仍然以Vivado示例工程WaveGen为参考,随意找一条建立时间路径:
这条路径即是数据到达目的寄存器(时序单元,不一定是寄存器)的时间;
目的时钟路径延迟时间;
目的时钟到达目的寄存器的时间加上保持时间构成数据要求时间:
- 计算保持时间裕量
保持时间裕量的含义是数据要在我的数据要求时间之后到达,方可达到时序要求。
画一个时序示意图:
标号1表示数据到达时间,标号2表示数据要求时间,这种情况就满足不了保持时间要求,因为在保持时间窗口内,数据就发生了变化;
反之,如果标号1为数据要求时间,标号2位数据到达时间,就能满足保持时间要求。
示例路径:
数据要求时间在数据到达时间之前,所以保持时间裕量为正,时序满足。
注意,最后提醒的是保持时间的分析是在发起沿分析的,因为发起沿的保持时间分析和锁存沿的保持时间分析,是一个道理,我们使用发起沿的数据要求时间,与发起沿的数据到达时间进行比较,也能够反应在锁存沿的保持时间是否满足。
最后说一句,保持时间是要求数据延迟(数据到达时间)必须大于一定的时间(数据要求时间),这个时间是时钟的偏斜加上保持时间。
没有回复内容