秒杀数字后端实现中clock gating使能端setup violation问题

秒杀数字后端实现中clock gating使能端setup violation问题

文章右侧广告为官方硬广告,与吾爱IC社区无关,用户勿点。点击进去后出现任何损失与社区无关。

点击标题下「蓝色微信名」可快速关注

昨天小编的粉丝们在我们微信技术交流群讨论到 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)。

图 1 传统 clock gating 结构

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

  • place 过程 data path 优化力度不够。

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

  • 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)。

图 2 setup 计算演示图

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

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

数字 IC 设计中 ECO 的那些事,其实并不是事!

  • 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 后的电路图

相关文章推荐(不读保证后悔)

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

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

数字 IC 设计中 ECO 的那些事,其实并不是事!

Scan chain reordering 怎么用你知道吗?

如何评价数字后端设计中 floorplan 的好坏?

数字后端实现时 congestion 比较严重,你 hold 得住吗?

数字后端实现 place 过程进阶

Final netlist release 前,你应该做好哪些工作?

基于 Physical Aware 的动态功耗优化实现方案

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

【大师必备】最全的数字 IC 设计经典书籍电子版下载

你与数字后端大神的差距在这里,快来瞧瞧!

数字后端实现时 congestion 比较严重,你 hold 得住吗?

时钟树综合(clock tree synthesis)基础篇

【福利】数字 IC 后端各种 Userguide 下载

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

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

有问题,可以提问啦!

作者微信:

吾爱 IC 微信交流群:

https://mp.weixin.qq.com/s/sAGuyOUjIpnOGDfhWKZeNQ

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值