时序中useful skew和timing borrowing

for example, a path form regA to regB, if the clock arrived at regB later than at regA, thus the constraitn on the path form regA to regB would be a little loosen.
it may help us to meet timing.it names "useful skew".

Timng borrow is popular method of latch-based design.

一、useful skew

摘自http://www.elecfans.com/d/714093.html

今天要介绍的时序分析基本概念是skew,我们称为偏差。由于时钟到每个寄存器的路径延迟不一样,造成信号到达 clock pin 的时间也不一样,我们把时钟信号到达不同寄存器的时间偏差称为skew。一直以来,Skew都是衡量时钟树性能的重要参数,传统CTS的目的就是为了减小skew。

Skew的类型分为很多种,根据clock和data path的方向,skew可以分为positive skewnegative skew。如下图所示:

 

对于positive skew,clock和data path在相同方向上。反之对negative skew来说,clock和data path在相反方向上。那它们对我们的design有什么影响呢?我们来看一下setup和hold的计算公式:

我们可以得到以下结果,

对于positive skew来说,它可以减少T的时间,相当于提升芯片的performace。但是它的hold时间会变得更加难以满足

对于negative skew来说,它的hold时间更加容易满足,取而代之的是,它会降低芯片的性能。

还有另外一种skew的分类方法,是我们更为常见的,根据时钟域以及路径关系, skew 可以分为 global skew ,local skew ,interclock skew

Global skew 是指,同一时钟域,任意两个路径的最大 skew 。如下图所示,注意是任意两条路径,不管是不是timing path,都会算作gloabl skew计算的对象。CTS时,工具更关注的是global skew, 会尽可能地将global skew做小。

Local skew 是指,同一时钟域,任意两个有逻辑关联关系的路径最大 skew 。这边需要注明,必须是存在逻辑关系的path才会计算local skew,也就是说必须要是timing path。如下图所示,我们在分析timing的时候,更多地是关注local skew。

interClock skew 是指,不同时钟域之间路径的最大 skew,如下图所示:

另外还有一种比较特使的skew,就是现如今用得较多的useful skew,我们称为有用偏差。一般来说,skew会恶化timing结果,但如果合理使用,那skew也可以起到修复timing的作用,从而提高设计的频率。

如下图:时钟周期为 4ns ,各时钟路径延迟如下:可以看到有一条路径的 slack 为 -1ns ,说明这条路径违规。可以看到与这条路径相关的 skew 是 t3-t2= -1ns 。

下面我们利用 useful skew 向前面一个 slack 比较充裕的路径(slack=2ns)借用1ns的 时间 ,这样两条path都meet了时序要求。如下图:

这就是 useful skew 的作用,可以向前,或者向后借time来修正 violation。

 

二、timing borrow

摘自https://zhuanlan.zhihu.com/p/35563526

今天吾爱IC社区为各位分享数字IC后端设计实现中关于Timing borrowing的概念及其应用。

我们假定时钟周期为10ns,clock skew和library setup time,library hold time 均为0,图1中所示为一个简单的电路示意图。我们以F1到F2这条timing path为例,寄存器F1在T=0时刻获得数据,寄存器F2在一个时钟cycle后进行数据采集。如果前一级的数据在T>10ns时刻到达寄存器F2,则存在setup违例。

 

图1 简单电路图

 

现在我们将寄存器F2替换成锁存器L2(Latch),如图2所示。此时如果前一级F1的数据在T>10ns时刻到达寄存器F2,setup是否还存在setup violation?

 

图2 寄存器F2替换成Latch L2后的电路图

我们知道Latch和触发器最大不同的地方在于,触发器是边沿edge触发,而锁存器是电平触发(敏感)。对于高电平有效的Latch来说,在Opening edge和Closing edge之间都是透明的。数据在opening edge之前到达,setup slack大于0,数据在opening edge和closing edge之间到达,setup slack等于0。只有当数据在closing edge之后到达,才会有setup violation。

图3 Latch Timing Violation Window

 

假设F1的数据在T=12ns时刻到达L2,由于在t=10ns时刻前一级的数据还没有ready,Latch还采集不到数据。但是由于锁存器在10ns---15ns期间是透明,因此F1的数据可以晚到一些,此时需要借用下一个cycle 2ns的时间(其实就是LatB的output晚了2ns,到达RegC的input晚了2ns,相当于向RegC borrow 2ns setup margin)。具体可以画波形图,非常清晰,波形图必须会自己画哦。这个就是Timing borrowing的概念(也称为cycle stealing)。

 

显然,改进后电路的性能有一个较大的提升。

 

其实在数字IC设计中,我们常常见到的是下面这个电路,如图4所示。值得注意的是LatchB是低电平有效的。

图4 典型电路结构

 

对应的波形图如图5所示。从图中可以看出,当RegA的数据在T=10ns之前到达锁存器B,setup都是meet的(因为可以借用半个cycle的timing)。对于RegA到LatchB之间的Hold check如往常一样。

对于图4中的电路,如果我们假设RegA和RegC的驱动时钟是不一样的(Func模式下),即分别被两个不同的时钟驱动,这两个寄存器是不需要做balance的。那么在Test mode下,寄存器A和寄存器C之间可能存在比较大的hold violation(两个clock latency差异较大)。或者换用下列表达:

如下图所示,DOMAIN1和DOMAIN2分别为两个clock domain,在func mode下两个domain不存在相互交互的path。因此,在做时钟树综合(CTS)时,会各自独立长clock tree,即他们之间的clock latency可能存在较大的差异。在func模式下不会有任何问题。但是,在做DFT的时候,我们将DOMAIN1和DOMAIN2的寄存器串在一条链上了。在scan shift时是有问题的。他们之间是需要做hold check(比如DOMAIN2的clock latency比较长)。

 

为了解决这种hold violation,我们在RegA和RegC之间插了一个低电平有效的LatchB(通常我们所说的Lockup Latch)。在LatchB到RegC进行hold check时,RegC对应的capture edge直接提前了半个周期,从而大大改善了hold违例问题。看到这里,有的人可能会觉得那LatchB到RegC的setup是否更紧了?其实不用怕,为什么?(test mode下clock频率比较低)

 

图5 setup和hold check 波形图

  • 29
    点赞
  • 261
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 全局偏斜(global skew)和局部偏斜(local skew)是指在数据分布存在的不均匀性。 全局偏斜是指整个数据集存在的不均匀性,例如某些数据点的数量远远超过其他数据点,导致在进行数据分析和处理时需要特别注意这些数据点的影响。 局部偏斜是指在某个特定的数据子集存在的不均匀性,例如在某个时间段内某个地区的销售额远远高于其他地区,需要针对这个子集进行特殊处理。 在数据分析和处理,需要对全局偏斜和局部偏斜进行识别和处理,以保证数据的准确性和可靠性。 ### 回答2: 全局偏斜和局部偏斜是数据分布的两个重要概念。其全局偏斜是指数据分布在其取值范围内不均匀的情况,而局部偏斜则是指数据分布在某个区域内不均匀的情况。 全局偏斜可能会导致某些值出现的频率非常高,而其他值出现的频率非常低。这种情况反映在数据分布的直方图上,就是直方图某些条形的高度非常高,而其他条形的高度非常低。全局偏斜通常是由于数据存在大量极端值或者异常值造成的。 而局部偏斜则是指数据在某一区域的分布不均匀。这可能是由于数据的特性或环境的影响造成的。例如,某一地区的气候条件可能会导致某些特定种类的植物或动物种群数量明显高于其他种类。 理解数据的全局偏斜和局部偏斜对于分析数据非常重要。全局偏斜可能会带来偏误或不准确的结果,因此需要对数据进行一些处理,如去掉极端值或异常值。而局部偏斜可能揭示了数据的特殊特征,需要注意这些特征对数据分析的影响。在处理数据时,需要考虑这两种偏斜以获得准确的结果。 ### 回答3: 全局偏斜(global skew)和局部偏斜(local skew)都是在数据处理常见的数据倾斜问题。 全局偏斜是指某个处理阶段某个或某些key值出现次数远远超过其他key值的情况。这种情况造成的影响是部分节点可能会负载过高,无法保证集群的整体性能。例如,在分布式计算,如果一个RDD分区有很多被处理的条目,而其他的分区的条目相对较少,那么就会出现全局偏斜的情况。为了缓解全局偏斜的问题,可以采取对数据进行重新分区,或者使用更为均衡的数据划分策略。 而局部偏斜则是指某个或某些节点的处理负载较高,导致处理速度变慢的情况。这种情况可以在单机计算等场景常见。在这种情况下,需要对任务进行划分与调度,将处理负载较高的部分拆分成多个子任务,通过多线程或多进程并行执行,来提高处理速度。 总之,解决全局偏斜和局部偏斜问题的方法各有不同,需要根据具体情况进行调整与优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值