DC概论三之setup time 与 hold time 之二
注明:如需转载,请注明作者出处,谢谢~,Author:pythonlong
以下根据资料和个人体会整理,如果错误,疑问欢迎请指正,讨论!!
前面一篇讲了基本的建立时间和保持时间以及时序路径划分。在这篇开始之前,先介绍一下很经典而且会时常用到的用来讲解的一个电路图,如下。这篇文章的讲解也会给予这个电路图,讲解的时候我把电路图分割成需要的部分:)
既然我们知道了建立时间和保持时间的含义,这篇主要是根据工厂提供的标准单元库中时序器件的建立时间和保持时间来预估我们的约束对设计的影响,是否满足时序要求,简单点就是说,时序有没有violator。
set_input_delay :
input_delay是设置外部信号到达输入端口的时间,dc会用它来计算留内内部逻辑的空余时间是多少。
之所以让ClkA和Clk的时钟周期不一致,主要是用来说明上图中黄色部分的。黄色部分的确认是很重要的。这是DC用来确定时间余量(slack)的关键。如上图所示,黄色部分已经确实是最小相位差。那么根据input_delay时间以及库中触发器的setup建立时间,可以知道留给内部逻辑的延迟时间是红色部分Tmin-Tinput_delay-Tsetup。综合过程中,dc会优化Logic2的时序,以使他达到时序要求。
同样set_output_delay是设置输出端口到数据采集处的延迟。如下图:
DC会根他来计算留给内部逻辑的时间。
这里还是要强调一下不同频率的问题:)
介绍完了input_delay和output_delay,以及skew(上篇:http://bb2hh.blogbus.com/logs/20563101.html)
在分析时间余量之前再介绍下时钟的latency。
Latency分为source lantency 和 一般的latency。
Source latency 指的是时钟源到时钟端口的延迟。
Latency指的是时钟端口到内部时序器件的时钟管脚的延迟。
一般只考虑latency即可。
再看下latency对于内部逻辑的影响.下图是不考虑latency的情况:
内部逻辑延迟的限度为T2-T1-Tinput_delay-Tsetup。
当考虑了latency的时候。D1上的clock会变成时序图中的红色部分
那么留给内部逻辑的最大延迟为:T2’(T2+Tlatency)-T1-Tinput_delay-Tsetup。会发现留给内部逻辑的延迟会变大,那么会给DC更大的空间来综合。
同样如果ClakA上面如果也设置了Latency在分析slack的时候也要算进去。
顺便介绍一下时钟的jitter,如下图
正常的时钟到来时蓝色的时序图。但是由于无法预知的因素,时钟可能提前(粉色)或者延迟(红色)到来,这就是jitter。提前到来充为setup jitter,延迟到来充为 hold jitter。
DC中把skew和jitter合成一个uncertainty。用set_clock_uncertainty来设置。
下文中提到的skew指的是合体,即uncertainty。
Uncertainty分为setup和hold,顾名思义,如上图理解即可。