• 支付宝首页搜索框搜索“572484805”,可领十元红包!
  •    11个月前 (03-31)  布局布线APR 逻辑综合DC |   抢沙发  840 
    文章评分 2 次,平均分 5.0

    昨天小编的粉丝们在我们微信技术交流群讨论到clock gating使能端setup的问题。微信技术交流群的福利就是这里面大家可以和各种大神互相交流,更重要的是小编是群主,什么好处你们懂的(微信技术交流群二维码在文章末尾,今天小编收到公众号推送的一个提问码,放在文章尾部,看看好不好玩,小伙伴们一起来玩玩体验下)。吾爱IC社区的小编发现还是有很多的工程师不太理解为何clock gating的使能端会有setup等一系列相关的问题,所以有必要专门拿这个主题来做一个分享。那么,下面就直接进入今天的正题。

    1.clock gating(门控时钟)的结构

    门控时钟技术是一种用来降低功耗的常用方法。之前推送过的文章 基于Physical Aware的动态功耗优化实现方案 提到过这个技术。感兴趣的可以点进去查看下。早期的clock gating结构如图1所示,主要由与门(或者或门)和Latch组合而成。八九年前做180nm工艺的时候就是这种结构,现在应该比较少见。传统的clock gating结构有啥不好呢?

    第一,设置clock gating check比较麻烦。第二,不利于timing signoff,容易遗漏实际需要gating check的点,出现glitch。现在大部分都是集成的ICG (Integrated Clock Gating )。

    数字后端实现中clock gating使能端setup violation修复方法汇总

    图1  传统clock gating 结构

    2.Place阶段ICG使能端的Setup violation

    2.1 place过程data path优化力度不够

    出现这种情况,一方面可以在DCT中设置一个稍微大点的gating check,并将这类gating cell 拎出来,建一个group path来进一步优化data path上的组合逻辑。另外一方面也需要在数字后端实现place过程做同样的工作。关于DCT和ICC之间Timing,Congestion一致性问题,可以参考之前推送的文章 教你轻松调DCT和ICC之间Timing与Congestion的一致性 。

    2.2 Place过程data path已经是最优的。此时,需要考虑ICG的位置以及所gating的那些sinks的分布。很有可能是ICG本身位置不合理和某个ICG控制的那些sinks分布不合理导致的(可能是floorplan方面的因素,也有可能是cell placement不合理)。遇到这种情况,要么改floorplan,要么将ICG控制的sinks尽量聚拢,要么复制一些ICG来达到各自ICG控制的sinks比较聚集的目的。反正方法还有很多,这个各位多思考,这里不一一列举。有疑问的可以在公众号留言或者通过文章末尾提问码进行提问。

    3.CTO阶段ICG使能端的SETUP Violation

    在数字后端实现过程中,最经常见到的就是PLACE后setup没有violation而CTO之后ICG使能端莫名奇怪就存在比较大的建立时间违例。之所以你觉得奇怪,那是因为你还不知道ICG的CK_i(时钟pin)不是CTS默认的SINK pin。重要的事情再说一遍,ICG的时钟pin是through pin 而不是sink pin。因此,在做时钟树综合时,ICG并不会与它带的sinks(Memory,reg)做balance。所以从clock root到ICG的clock latency一定小于它所带的那些sink的clock latency。而CTS之前并没有做时钟树,ICG和那些sinks的latency都是ideal的,均为0(假设都没有额外的借timing)。

    以图2为例我们来算下到ICG 使能端E端的setup是否满足时序要求。

    数据到达Epin所需要的时间T1=5+3=8ns

    时钟到达ICG的clock pin (CK_i)的时间为T2=5+1=6ns

    因此,clock gating的使能端是存在setup violation的(假设一个buffer的delay为1ns)。

    数字后端实现中clock gating使能端setup violation修复方法汇总

    图2 setup计算演示图

    那么,如何解决这种setup violation呢?小编特地整理了以下几种方法(保证管用!)同时建议阅读与今天主题相关的历史干货。

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

    • duplicate ICG这个方法如图3所示,复制了四个ICG,分布控制五组寄存器。采用这个方案后setup就meet了。
    • DCT和ICC stage加大力度对data path进行优化
    • 利用useful skew 借timing
    • 将ICG的clock tree做长或者垫长针对这个方法留个思考题。将ICG的clock tree做长的好处和坏处分别是什么?如何人工做长或垫长这段clock tree?在build clock tree时能否直接设置floating值来让工具做长这段tree?如果你对这些思考题的比较confused,说明还没掌握好这个知识点,欢迎在公众号给我留言(或者通过提问码进行提问),进行交流讨论。
    • 调整ICG和其带的sink的位置
    • 综合阶段设置ICG max fanout值不要太大(为什么?缺点是什么?)
    • 其他方法

    图3  duplicate ICG后的电路图

     

    好了,今天的码字就到这里了,原创不容易,喜欢的可以帮忙转发和赞赏,你的转发和赞赏是我不断更新文章的动力。小编在此先谢过!与此同时,吾爱IC社区(52-ic.com)也正式上线了。吾爱IC社区(52-ic.com)是一个专业交流和分享数字IC设计与实现技术与经验的IC社区。如果大家在学习和工作中有碰到技术问题,欢迎在微信公众号给小编留言或者添加以下几种联系方式进行提问交流。

    数字后端实现中clock gating使能端setup violation修复方法汇总

    打赏的朋友,请长按下方二维码,识别小程序进行打赏,欢迎砸钱过来!小编晚饭能不能加个鸡腿,全靠它了,呵呵!

    数字后端实现中clock gating使能端setup violation修复方法汇总

    有问题,可以提问啦!

    数字后端实现中clock gating使能端setup violation修复方法汇总

    作者微信:

    数字后端实现中clock gating使能端setup violation修复方法汇总

    吾爱IC微信交流群:

    数字后端实现中clock gating使能端setup violation修复方法汇总

     

    除特别注明外,本站所有文章均为吾爱IC社区原创,转载请注明出处来自http://www.52-ic.com/?p=206

    关于

    发表评论

    表情 格式

    暂无评论

    切换注册

    登录

    忘记密码 ?

    您也可以使用第三方帐号快捷登录

    切换登录

    注册

    扫一扫二维码分享