为什么对保持时间检查时不需要设置时钟抖动
如题目
hold 一般是检查时钟的同一周期的同一沿,时钟抖动不影响。
哦,明白了, 谢谢您啊,
抖动对hold也是有影响的,对hold也是有害的。检查hold也应设置抖动吧。
不用吧,我在一本书上看到说不用,2楼解释了为啥不用考虑。
One can specify different clock uncertainties for setup checks and for hold checks. The hold checks do not require the clock jitter to be included in the uncertainty and thus a smaller value of clock uncertainty is generally specified for hold.这是原话。
那uncertainty都包括什么呢?
uncertainty 主要为了安全性(包括model 和 工具的不准确性)。
至少:
1,fab 对工艺提取模型误差。
2,IR-drop 的考虑与否?
3,OCV的考虑与否?
4,lib cell 的模型与实际的差异。
5,工艺自身的不均匀性。
等等。
但是和setup不同,不包括时钟的周期不均性的jitter。
The uncertainty in the timing of the clock edge is to account for several factors such as clock period jitter and additional margins used for timing verification.In general, before the clock
tree is implemented, the set_clock_uncertainty command is used to specify a value that includes clock jitter plus estimated clock skew plus additional pessimism.这句话是书上的, additional margins就是7楼所说的吧。
赞同2楼的说法,DC中uncertainty对HOLD设置的约束值比对SETUP设置的约束值小,因为JITTER对DATA的第二个沿的影响和对第二个时钟触发沿的影响是一样的,所以HOLD的约束不考虑JITTER
明白了,因为检查hold时,在同一时钟域中,jitter对上一个flipflop的->Q的影响(即本flipflip的D端)相对于CK沿是同一时钟沿,影响是一样的。
但是,如果对于不是flipflop输出的路径,比如,芯片的输入端口到一个flipflop的D端的路径,同时clock也存在延迟,检查hold时需不需要考虑jitter呢?
这么说,比较牛的Jan M.Rabaey的教材Digital Integrated Circuits A Design Perspective(中文版:数字集成电路:电路、系统与设计(第二版)366页)中关于jitter对hold的影响的相关讨论有错误了。
是与不是啊?请大家一起来讨论甄别一下啊。
这个问题其实很简单, 看你怎么定义JITTER了, 要从本质上理解JITTER, JITTER一般都是说对周期的影响,但是JITTER本质上是由温度,IR DROP, 串扰等随时间变化的因素引起的, 那么从个简单的例子看下:
FLOP_A------ CLB------- FLOP_B
只要FLOP A的CLK和B的CLK不是同一个连线, 那么就是说CLK源到A和B的路经情况就是不一样的, 各个地方的IR DROP,温度,串扰都不一样, 那么CLK源头的正沿到FLOP A和B的正沿时间就是不一样的, 所以肯定要考虑流余量, 只是这个余量你是叫他JITTER还是别的, 一般来说SKEW是与时间没关系的, 只是指空间位置差异的延迟差, 我把在某一个地点信号来的时间偏差与时间相关的叫JITTER。
有道理!
小编有没有看看Jan M.Rabaey的教材Digital Integrated Circuits A Design Perspective(中文版:数字集成电路:电路、系统与设计(第二版)366页)中的内容,关于jitter对hold的影响,应该说是有问题的,或者说至少不完整。