• 如何使用 Lockup Latch 修掉 hold violation


    数字后端 fix hold timing 的常见方法是垫 buffer 或者调 tree,其实还有一种修 hold 的方法: 插入 lockup latch

    假设下图中的电路存在较大的 hold violation

    为了修掉这条 hold,我们可以在data path 上插入一个 低电平有效的 latch

    在 data path 上插入一个 latch 后,由于 latch 低电平期间保持透明,高电平期间则保持原值不变,所以相当于将数据向后延迟了半个周期,这样就不会再有 hold violation 了

    这里插入的 latch 就 叫做 lockup latch,因为其功能就像是把数据锁定了半个周期一样

     

    Lockup Latch 最常见的应用场景是在修 scan mode 下的 hold violation:

     

    上图中的clk1 与 clk2 是两个相互独立的时钟域,做完cts 后 clk1 的 latency 较小, clk2 的 latency 较大;由于在scan mode 下所有的 reg 会串成一条 scan chain,所以在 scan mode 下, R3 与 R4 之间是需要 check timing,又因为二者 clock latency 相差较大,所以这条path 很可能出现较大的 hold violation,为了修掉这条 hold,如果我们直接在 R3 R4 之间垫buffer,可能需要垫很多buffer,很浪费,此时就可以考虑使用 lockup latch,使 R3 输出的数据向后延迟半个周期,这样应该就不会有 hold 问题了,可能有人担心:这样会不会导致 R3 到 R4 之间出现 setup 问题呢? 这个不用担心,因为在 scan mode 下时钟比较慢,时钟周期足够长,不太可能出现 setup violation。

     

     

     

    |----------------------------------------|

     

  • 相关阅读:
    Python笔记 【无序】 【五】
    Python笔记 【无序】 【四】
    Python 面向对象【2】
    Python 面向对象【1】
    OpenCV 入门
    Python笔记 【无序】 【三】
    js制作秒表
    C语言No such file or directory错误
    js注册实现
    js中setTimeout和setInterval的应用方法(转)
  • 原文地址:https://www.cnblogs.com/xiaoxie2014/p/12518376.html
Copyright © 2020-2023  润新知