• 注册
  • 查看作者
  • 浅谈数字IC后端实现中Latch为何可以高效修hold违例(Timing borrowing及其应用)

     

    浅谈数字IC后端实现中Latch为何可以高效修hold违例(Timing borrowing及其应用)

     

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

     

    我们假定时钟周期为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。

    latch timing window

    图3  Latch Timing Violation Window

     

    假设F1的数据在T=12ns时刻到达L2,由于在t=10ns时刻前一级的数据还没有ready,Latch还采集不到数据。但是由于锁存器在10ns---15ns期间是透明,因此F1的数据可以晚到一些,此时需要借用下一个cycle 2ns的时间。具体可以画波形图,非常清晰,波形图必须会自己画哦。这个就是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差异较大)。

     

    为了解决这种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 波形图

     

    小编知识星球简介:

    在这里,目前已经规划并正着手做的事情:

    • ICC/ICC2 lab的编写
    • 基于ARM CPU的后端实现流程(已经发布)
    • 利用ICC中CCD(Concurrent Clock Data)实现高性能模块的设计实现(已经发布)
    • 基于ARM 四核CPU  数字后端Hierarchical Flow 实现教程(准备中)
    • 时钟树结构分析(规划中)
    • 低功耗设计实现(规划中)
    • 定期在星球布置作业题(星球已经支持布置作业功能)

    数字IC后端设计实现之initial design解析

    在这里,各位可以就公众号推文的内容或者实际项目中遇到的难题提问,小编会在24小时内给予解答(也可以发表你对数字后端设计实现中某个知识点的看法,项目中遇到的难点,困惑或者职业发展规划等)。

    反正它是一个缩减版的论坛,增强了大家的互动性。更为重要的是,微信有知识星球的小程序入口。星球二维码如下,可以扫描或者长按识别二维码进入。目前已经有七十位星球成员,感谢这七十童鞋的支持!欢迎各位铁杆粉丝加入!终极目标是打造实现本知识星球全员年薪百万的宏伟目标。(星球的门槛将会越来越高,有需求的朋友趁早上车)

     

    相关文章推荐

    想要彻底掌握数字IC后端实现中placement各种技巧,看这个足够了!

    揭秘数字IC后端时钟树综合要用clock inverter来build clock tree(min pulse width check)

    从数字IC后端设计实现看先进工艺7nm实现的各种挑战

    数字后端设计实现后期碰到这些问题,如何做ECO?

    我是如何在五年内实现年薪60万?

    教你彻底搞懂ARM Cortex-A75 CPU的数字后端实现报告

    这些低功耗设计实现经验,你真的懂了吗?

    深度解析Create_clock与Create_generated_clock的区别

    IR Drop分析之Redhawk分析流程

    CRPR能补偿crosstalk吗?

    原来电路最高工作频率是这么算出来的(STA基础篇)

    数字后端面试问答No.1-3(每日三问)

    教你轻松调DCT和ICC之间Timing与Congestion的一致性

    数字芯片设计实现中修复setup违例的方法汇总

     

  • 0
  • 0
  • 0
  • 513
  • 单栏布局 侧栏位置: