Clock Uncertainty释义

Clock  uncertainty

在理想情况下,时钟信号应该同时到达所有的触发器的时钟端。但实际上这是不可能达到的。

物理实现后的电路里时钟沿到达各触发器的时钟端时间总是不一样的,会有差异。

那么在物理实现之前要模拟这样一种差异,就用set_clock_uncertainty来模拟。

set_clock_uncertainty 100 -clock clk1

表示的是clk1有100ps的clock uncertainty,即每一个时钟沿会在既定时间的正负50ps的区间内出现。

set_clock_uncertainty的值表示的是一个时间区间。

 

形成clock_uncertainty或者说形成时钟沿不对齐到达各Flop的原因主要有

1) 本身launch flop的clock latency与capture flop的clock latency不同。换言之,launch flop的insertion delay和capture delay不同。

    这里的insertion delay(插入延时)的意义指的是“插入”到clock tree上的inverter和buffer们构成的延时。

    称其为insertion delay其实十分合理。

    具体来说,insertion delay又可以分为

          source insertion delay, 也叫source latency,

          network insertion delay,也叫network latency。

 

  以上所提到的launch flop和capture flop的insertion delay不同,其差值就是clock skew。

 

2. clock的沿本身并不精确而有抖动,这种抖动称为clock jitter。

    clock jitter也可以有不同的具体来源。

 

3. 即便是clock skew为零,clock jitter为零,仍然有PVT来影响launch flop和capture flop的时钟到达。

    launch flop和capture flop位于同一片子上的不同地方,有PVT引起其clock path的不同的传输延时。

    这个被称为OCV(on-chip-variation)。

 

在综合以及前仿阶段,需要模拟的clock uncertainty主要是clock jitter。对于clock skew和ocv只能留一部分裕量(margin)来过约,不能直接模拟。

因为clock skew要具体的物理实现后才能计算出来。

例如,pll jitter是100ps,pll 输出的clock在被定义时要设为:

set_clock_uncertainty $PLL_JITTER + $MARGIN -clock clk1

给后端实现留的裕量假设为50ps,那这个clock的uncertainty就被设为150ps。以这样过约的方式来模拟时钟的uncertainty。

在后仿阶段,物理实现已经初步完成。物理的布线可以在报timing path时直接计算出来 clock skew和OCV

这时候就看,在PLL jitter + MARGIN +实际的SKEW+OCV因素后,其slack是否仍然能meet。不能meet的话可以抠一点margin。

但不能抠太多。

 

[1] http://88physicaldesign.blogspot.com/2015/09/what-is-clock-uncertainty.html

[2] http://vlsi.pro/insertion-delay-set_clock_latency/

[3] http://vlsiuniverse.blogspot.com/search/label/Clock%20insertion%20Delay

转载于:https://www.cnblogs.com/zhichengwu/p/8157647.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值