当前位置:   article > 正文

VLSI Basic3——time borrowing_time borrowing information

time borrowing information

存储时序电路

有两种类型的存储时序电路是触发器(寄存器)和锁存器。(flip flop (registers) 和 latches.

基于触发器的系统(Flip flop based system):
        数据在时钟的一个上升沿启动,并且必须在时钟的下一个上升沿之前建立。
        如果两个触发器之间存在的组合逻辑延迟非常大,那么捕获触发器就会延迟到达,数据可能会进入亚稳态。
        如果两个 FF 之间存在的组合逻辑延迟较小,即它提前到达,那么在这种情况下浪费时间。

基于锁存器的系统(Latch based system
        数据可以通过锁存器,而锁存器是透明的(transparent)。如果设计中存在较大的延迟的组合逻辑,则可以从下一个周期借用时间。因此使用基于锁存器的设计,我们希望设计的高性能。

        时间借用(Time borrowing)仅适用于基于锁存器的设计和基于触发器的设计的周期窃取(cycle stealing)。

锁存器中的Time borrowing 概念:

        time borrowing是latch的属性,在latch处结束的路径可以从pipeline中的下一条path 借用时间,使得两条路径的总时间保持不变。 STA 将时间借用(time borrowing)概念应用于基于锁存器的设计。

        无论何时从 Flip Flop1 发出任何数据,都应在下一个有效边沿(即 10ns)到达 Flip Flop12(理想情况下, setup time、 hold time、skew 和clock delay都为零)。 如果数据在 10ns 后到达 Flip Flop2,将无法捕捉到正确的数据。 同样,如果我们在 10 ns 时从触发器 2 启动数据,那么它应该在 20 ns(下一个有效时钟沿)到达Flip Flop3,没有任何 violation。

如果组合逻辑延迟很大(大于时间周期 10ns)怎么办:

        如果组合逻辑延迟大于 10,则Flip Flop2 没有捕获正确的数据,因为数据在 12ns 之后到达Flip Flop2,并且 0ns 到 12ns Flip Flop将只检查一个上升沿,所以这是setup violation的问题,因此要避免这种情况 我们可以在正电平之间使用锁存器latch

什么是锁存器:每当时钟启用/高电平时,锁存器将根据极性(polarity)工作半个周期。

Flip Flop2 替换为锁存器 

        现在,如果将Flip Flop2 替换为锁存器,其中锁存器的gate由相同的clock line驱动。

        使用这个latch有什么好处?

        但是如果数据在 10ns 后到达锁存器,那么会发生什么?

        如果数据在 10ns 之前到达锁存器(latch)输入,则该数据在锁存器的 D 引脚处等待。 这与我们使用 FF 代替latch的情况类似。

        假设数据在 12ns 之后出现,所以如果我们使用触发器会出现问题,但如果我们使用latch则没有问题,因为latch从 10 到 15 是透明的(transparent),接收数据没有问题,因此我们可以通过借用下一个周期的时间 接收我们的数据,这意味着latch比触发器提供了 2ns 时间的优势。 我们可以从latch借用的最大时间是 5ns。 但是latch到Flip Flop3的时间减少了,因此Flip Flop3必须在 20ns 获得数据,因此latch必须在 20ns 之前发送数据。

        所以我们从锁存器中借用了时间,因为它打开了 10 到 15ns,并且这个时间减少了用于下一个逻辑( logic)。

现在让我们看看从 Latch 到 FF3 的路径:
        在 12ns 时从锁存器出来的数据将在 20ns 时在Flip Flop3处采样。因此从latch2 到Flip Flop3 的路径只有8ns 时间。

        在具有所有触发器的电路中,第二条路径的时间为 10ns,但在该电路中,它的时间减少了 2ns。
        所以需要注意的是,从 Flip Flop1 到 Flip Flop3 的路径总共有 20ns 没有改变,只是时间的分布发生了变化。

        所以我们可以说,在基于触发器的设计中,组合延迟不应长于时钟周期,但静态时序分析中的multicycle pathfalse path等例外情况除外。

        在基于锁存器的设计中,更大的组合延迟可以通过逻辑状态中更短的组合延迟路径来补偿。因此,对于电路的高性能,我们主要使用基于锁存器的设计。      

        在简单的术语time borrowing中,一种较长的路径从后续逻辑的下一条路径借用时间的技术。

      简单来说——time borrowing是用更长的路径从后续逻辑的下一条路径借用时间的技术。它不影响保持时间,因为在保持时间数据到达时间更多。

        时间借用通常会影响 setup ,因为 time borrowing会减慢数据到达时间,即数据到达时间更长。 它不影响 hold time,因为在 hold time数据到达时间更多。

time borrowing示例:

Example1:有两个触发器和两个触发器之间排列的组合逻辑。 时钟周期为 5ns。

        这种情况下存在 Setup violation,因为数据在 7ns 后到达 FF1,时钟周期仅为 5ns。 如果我们将时钟周期增加超过 7ns 则可以满足时序要求。 但是增加时钟周期会影响设计的性能。

用正敏感锁存器代替 flip flop1

        这种时序违规问题可以使用时序借用概念以相同的 5ns 时钟周期解决。 我们可以用正敏感锁存器代替 flip flop1 。 锁存器在 0ns 时像触发器一样同时打开。 该锁存器在 0ns 到 2.5ns 之间打开。

         理想情况下,来自 path1 的数据应该已经到达 FF1,但没有到达。如果锁存器不存在,path1 ,则在 FF1处会出现时序违规。从锁存器借用 2ns,现在 0.5ns 由 path2 使用。

        所以 path1 有额外的 2.5ns 时间从下一个周期借用。由于锁存器在 2.5ns 时关闭,因此path1 没有时序违规,因为 path1 在锁存器关闭前 0.5ns 到达。

        锁存器的输出可立即用于组合逻辑path2。从图中看到, path2 从 path1 停止的地方开始。path2可能已经使用了 3ns(前一级的 0.5ns + 当前周期的半时钟周期的 2.5ns),但path2 的给定延迟仅为 1ns。

        由于capture flip flop2 的上升沿发生在 5ns,因此capture flip flop2 的有效数据在 3ns 时可用。flip flop2 有额外的 2ns 这是 +ve slack。

        从下一个周期借用时间并使用上一个周期的slack。无需更改时钟即可满足时序要求,只需将触发器替换为锁存器即可。Time borrowing仅用于基于锁存器的设计。

Example2:有4个正电平敏感锁存器和4个锁存器之间的组合逻辑。

        Latch1 和latch3 由CK1 控制,latch2 和latch4 由CK2 控制。 ck1 和 ck2 的关系如图 1 所示。

        为简单起见,假设所有四个锁存器都具有 0ns 的传播延迟和 0ns 的建立和保持时间。

case1:
  • Path1 delay = 6ns
  • Path2 delay = 1ns
  • Path3 delay = 8ns
  • Path4 delay = 1ns

         Latch1 在 ck1 的 A 点打开,Latch2 在 ck2 的 B 点打开。 来自  Latch1的数据在 Latch2 处可用时间为6ns。 由于latch2 从5ns打开到10ns,因此path1可以从path2借用1ns。

        类似地,path3 有 8ns 的延迟,从下一级借用了 3ns。 在这两种情况下,我们从下一阶段借用的时间都没有完全使用,因为path 2 和path 4 在时钟周期的一半中具有小于 5ns 的延迟。

case2:
  • Path1 delay = 6ns
  • Path2 delay = 1ns
  • Path3 delay = 2ns
  • Path4 delay = 1ns

         Path3 有 2ns 的延迟,小于 5ns(半个时钟周期),这意味着后续阶段不需要借用时间。 这与存在触发器而不是锁存器的情况相同。

        注意:代替latch4的触发器停止了我们在触发器启动沿从latch1latch3看到的时间借用。

case3:
  • Path1 delay = 6ns
  • Path2 delay = 7ns
  • Path3 delay = 5ns
  • Path4 delay = 3ns

        在这种情况下,存在 100% 的时间借用,因为 path1, path2, 和 path3 的延迟大于或等于 5ns(半个时钟周期)。 每个阶段都会自动从后续阶段借用时间,直到我们得到输出。 

         如果电路由 4 个触发器而不是 4 个锁存器组成,基于 4 级触发器的设计将消耗总共 28ns 的时间,但如果我们使用锁存器,则延迟已减少到 20ns。 这是锁存器相对于触发器的优势。

参考: 

INTERVIEW QUES Time Borrowing concept in STA

问题: 用latch代替ff做timing borrow修setup,它有什么优缺点?

数字电路中latch的优缺点.

缺点

latch是电平触发,无法实现同步操作,与我们正常的时序逻辑电路设计思路不符。

latch会对输入电平敏感,受布线延迟影响较大,比较容易导致输出有毛刺产生

latch会导致静态时序分析和DFT会很复杂。

 好处

因为使用latch可以timing borrow,在高速电路设计中(timing会很紧),有时候就需要用latch。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/441006
推荐阅读
相关标签
  

闽ICP备14008679号