美文网首页IC数字后端知识角
秒杀数字后端实现中clock gating使能端setup vi

秒杀数字后端实现中clock gating使能端setup vi

作者: 飞奔的大虎 | 来源:发表于2023-01-11 18:27 被阅读0次

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

原文链接:https://blog.csdn.net/weixin_37584728/article/details/117519749

相关文章

网友评论

    本文标题:秒杀数字后端实现中clock gating使能端setup vi

    本文链接:https://www.haomeiwen.com/subject/rwdmqdtx.html