分享

Lockup latch的用法,看这个就够了!

 雨在路上 2022-06-07 发布于广东

吾爱IC社区公众号之前推送过一篇文章,简单分享过LOCKUP LATCH的概念及其应用。今天将带大家深入来了解Lockup latch实际的应用。

听说Latch可以高效修hold违例(Timing borrowing及其应用)

Lockup Latch

如下图所示,DOMAIN1和DOMAIN2分别为两个clock domain,在func mode下两个domain不存在相互交互的path。因此,在做时钟树综合(CTS)时,会各自独立长clock tree,即他们之间的clock latency可能存在较大的差异。在func模式下不会有任何问题。

图片

但是,在做DFT的时候,我们将DOMAIN1和DOMAIN2的寄存器串在一条链上了。在scan shift时是有问题的。他们之间是需要做hold check(比如DOMAIN2的clock latency比较长)。对应的setup和hold检查波形图如下图所示。从波形图中得知,hold violation比较大。为了解决这个较大的hold violation,需要在DOMAIN1和DOMAIN2之间插入LOCKUP LATCH,从而改善较大的hold violations。

图片

Positive or Negative Level Latch?
  • Launch flipflop正沿触发,capture flipflop也是正沿触发

       这种情况需要加一个低电平传输的Lockup Latch。也是最常见的case。

  • Launch flipflop负沿触发,capture flipflop是正沿触发

       这种情况无需加Lockup Latch。

  • Launch flipflop负沿触发,capture flipflop也是负沿触发

        这种情况需要加一个高电平传输的Lockup Latch。

  • Launch flipflop正沿触发,capture flipflop是负沿触发

        这种情况留给各位思考,自己画波形图就可以知晓

深入浅出讲透set_multicycle_path,从此彻底掌握它

Lockup Latch 应该加在哪里?

这里以第一种情况为例(即Launch flipflop和capture flipflop均是正沿触发的情况)。通过以上的分析得知,需要在这两个domain之间加Lockup latch,才能够显著减少hold violations。那么问题来了,这个Lockup latch应该加在靠近Domain1,还是靠近Domain 2?

  • 靠近在Domain2中

将Lockup latch加在靠近Domain2中后的简易电路结构如下图所示。由于时钟树综合阶段工具会做将 Lockup latch和Domain2中的寄存器做balance,因此clock skew会比较小,这里假设skew为0。对应的setup和hold检查波形如下图所示。

图片

图片

从波形图中得知,Domain1中的DFF到Lockup latch的并没有改善(与之前Domain1中DFF和Domain2中DFF的hold一样大)。因此,这种Lockup latch加的方式是不正确的。

  • 靠近DOMAIN1中

将Lockup latch加在靠近Domain1中后的简易电路结构和波形图如下图所示。

图片

图片

从波形图得知,Domain1中的DFF到Lockup latch的hold明显得到了改善。同样Lockup latch到Domain2中的DFF的hold也没有问题。虽然setup检查变严格了,但是由于scan模式下,scan clock 是低速的。所以setup也没有问题。

加buffer抑或加LOCKUP?

众所周知,传统修hold violation的方法就是插buffer。理论上当你的hold violations比较大的情况,都可以采用insert Lockup latch的方法来解决(Func下慎重,需要确认不影响逻辑功能)。比如在某个endpoint点存在1ns hold violation,此时你可能需要在这个endpoint上插几十个甚至上百个hold buffer。这种方式解决hold violation存在以下几方面的弊端。

  • Hold buffer太多,可能导致routing congestion问题

  • Hold buffer太多,可能导致power consume问题

  • 由于large skew和OCV效应,timing在各个corner下variation会比较大,容易导致setup和hold冲突

关于setup和hold冲突的解法方法,会推送在小编的知识星球上。有需要的可以关注起来。

LOCKUP LATCH的应用
  • Clock skew非常大的情景

Clock skew特别大,往往是由于前端设计时,时钟结构规划不合理导致的。比如scan clock和func clock太早分开。一方面可以通过前期更改时钟电路结构。另一方面可以后期Timing fixing阶段通过ECO方式加入Lockup latch。关于如何做这种ECO留给各位思考,其实很简单。

  • uncommon clock path非常长

在吾爱IC社区之前推送的关于时钟树综合的分享中,提到想得到一个比较好的,比较小的clock skew,一定要将uncommon clock path做到最短。Uncommon clock path越长,受OCV的影响越大,不同corner下variation越大,hold越不好收敛。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多