静态时许分析中的setup和hold存在负值的问题

What?Setup time is negative value!

“时光倒流 ! 难道,是失传已久的月光宝盒重现江湖?”

回想当时还是菜鸟的时候,感叹岁月蹉跎,现在已经是一名老菜鸟了。

当然,神话应该不会让我在工程设计中遇见。那么,这个负值,一定不是常规意义上的建立时间了(setup time)或保持时间 (hold time),了解静态时许分析(STA)的童鞋应该不陌生。下面就以setup time举例开始渐进式分析,一步一步揭开这个“倒流的时间”。

1.负值存在的合理性

从setup check的计算公式来分析:

slack = RT - AT = ( T + Dclks - setup ) - AT ;其中的RT就是到达时许单元的需求时间,AT是数据实际所用的时间,T是时钟周期,Dclks是时钟的工作延时,setup就是我们讨论的建立时间。slack的值越大逻辑元件正常工作的状态越好(当然也不能无限制的大)。那么setup为负时:

slack = RT(变大)- AT slack随着setup的负值变小而变大,对于slack是有利的,也就是说负值的存在是为了优化时许,这是它存在的合理性。

2.工作原理上存在的原因

以reg2reg为例(上升沿触发)(不会使用这个界面画图,尴尬)

数据从reg1的Q pin到达reg2的D pin,有一段建立时间,等待时钟上升沿到来。合理推测,当时钟上升沿到达CK pin之后数据并不是被立即触发,这里存在一段延迟时间Dd,

则RT = T + Dclks + Dd - setup =T+Dclks + (Dd - setup)

=T+Dclks - (-Dd + setup)

当Dd大于setup的时候 (-Dd + setup)就是负值了,说到这里,想必也明白了,setup的真实值不会是负值,这里的负值setup已经不再是原来意义上的setup了,括弧中的整理相当于这里的新的setup了。

同样的方法可以分析hold的负值。

3.从stdCell(reg)的结构上分析

以D触发起为例(暂时无图),setup和hold的值 与cell中某一点处data和clk的相对时间长度有关,公式分析和上面的方式相同。

RT- AT=T+Dck- setup - Ddata - Ddpin +Dckpin

=T+ Dclks - Ddata-(-Dckpin + Ddpin + setup)

括弧里的值就是setup在lib库文件中的二维表中的值。当Dckpin 大于 Ddpin+setup时Setup值取负,否则为正。hold可同理分析。

这样从结构上说明这种stdCell的结构不单单是一个reg,还包含里一些附加电路来增加某些延迟。这些可从layout中观察cell的结构得以印证。

总的来说,存在负值的setup和hold已经不是本来意义上的值了,而是换了概念的相对值,合理存在的值。还要注意的是,setup和hold不能同时为负值,而且二者之和必须为正。

业务联系请加个人微信号:jack_eetop 或 QQ:228265511
全力打造中国电子工程师微信第一品牌!

(0)

相关推荐