时钟树综合CTS技术经验分享(高薪必备)

时钟树综合CTS技术经验分享(高薪必备!)

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

说到时钟树综合,需要大家紧紧围绕 3W 和 1H 来思考,即 What,Why,When 和 How。这些词是小编自己总结的,可能你们都没听说过。那么它们分别是指什么呢?

What---- 什么是 CTS?

Why----- 为什么要做 CTS?

When----- 什么时候做 CTS?

How------ 怎么做 CTS? 怎么 QA CTS 结果?

上面这几个问题,看似很简单,但能真正回答得比较好的工程师不多。CTS 这块是数字 IC 后端岗位招聘时面试官比较喜欢问的一块,因为从应聘者回答问题的广度和深度,就能看出大体上知道对方的水准了。

PS: 正值一年一度的跳槽高峰期,有技术问题或者工作选择问题,可以私信小编(ic-backend2018),纯免费,能够帮忙的会尽量帮忙(星球会员特权)。

So,上面这些问题希望各位多思考,特别是最后一问,如何做好 CTS 这个问题?(千万不要跟面试官你设置了哪些参数,然后执行哪个命令)

那么,今天小编将从工程师角度来剖析时钟树综合相关的技术要点。

Clock Insertion Delay (Clock Tree Latency) 最短

Clock tree 越长,意味着 clock tree 级数越长,级数长了,tree 上的 power 就越大。同时,受 OCV 效应影响,timing 就越难 meet。

造成 Clock tree latency 太长的原因有很多。有的是因为 Constraint 不合理导致的,有的是因为 floorplan 对 CTS 不友好导致的。时钟树相关 topic 之前也分享过好几篇文章,不懂的可以再去查阅下。

数字 IC 后端时钟树综合专题(OCC 电路案例分享)

想成为数字 IC 时钟树综合(clock tree synthesis)专家,建议好好看看这个!

以上图为例,如果 PLL 摆放在右下角,有一个 Flop 放置在左上角,那么从 physical 上讲该 Flop 的 clock tree latency 将会是最长的一个。由于它要与别的 Flop 做 balance,那么别的寄存器也会被拖长。

【思考题】:假设在 core 中间区域有一堆 Flop 的 tree 被拖长后,请问会造成什么影响?

如果将 PLL 摆放中间位置,并且把左上角的一部分区域打上 soft blockage, 如下图所示,那么整条 clock tree latency 将会减少不少。

最近知识星球上有星友提问,memory 之间的窄 channel 能否放置寄存器的问题。理论上各种 channel 都是能摆放寄存器的,但是对于那种 memory 堆的比较深的情况,从 CTS 角度考虑,最好不要摆放寄存器,因为 channel 中的寄存器可能会拖累整条 clock tree。

所以有一个对 CTS 友好的Floorplan 和 Placement 是非常重要的,它直接决定 CTS 的 Quality。

Clock skew 最小

Clock Skew 的概念请看这篇文章。为什么要关注 Clock Skew? 如何做小 CLock Skew? Clock Skew 对 setup 和 hold 有何影响?

一网打尽时钟树综合 Clock Skew

大部分情况下,我们是希望 Clock Skew 越小越好,因为它对 setup 和 hold 是有很大的好处。

但是有的时候我们倒希望认为引入一定的 clock skew,比如 S 家工具的 CCD,它可以充分利用前后级的 timing margin 来改善时序。又比如从 IR Drop 的角度看,并不希望寄存器同时翻转。

【福利】RedHawk 官方培训教程 + Lab Data 下载

https://t.zsxq.com/6uzNZzJ

吾爱 IC 社区技术文章合集下载

https://t.zsxq.com/Fmujiee

Design Rule Violation (DRV)

DRV 主要是指 max_transition, max_cap 和 max_fanout。前两个是硬性条件,signoff 阶段必须满足要求。

Common Clock Path 尽量长

在 clock tree latency 长度一定的情况下,common clock path 要尽量长,这样 CRPR 补偿回来的就越多,对 timing 就更好。

CRPR 能补偿 crosstalk 吗?

Un-common clock path 尽量短

Multi-level Clock Gating

从功耗的角度讲,我们希望 Clock Gating cell 尽量靠近 root,而且大部分的寄存器都要有 Clock Gating cell 来控制。但是当 ICG 靠 root 端摆放时,容易出现 ICG enable 端的 setup 出问题。针对这个问题,解决方法见下面这篇文章。

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

Clock Gating Clone/Clock Gating Splitting

PR 工具在做 CTS 时,除了做 Clock gating 的 merge 操作外,它还可以做 Clone 和 split 操作。上面我们讲到 CTS 阶段要把 un-common clock path 做到最短,那么很多时候可以通过 Clone clock gating 来实现。

Clock Duty Cycle

导致 duty cycle 出问题的主要原因是 cell 的 rise delay 和 fall delay 不平衡。因此,在做 CTS 综合时,我们往往都是用 clock inverter 来做时钟树的。

Clock Signal Integrity

为了确保时钟信号的质量,在 Signal Route 前会先对 clock net 进行绕线,并且为其设置上 NDR。必要时,还会对 clock net 进行shielding

Custom 时钟树综合

对于简单的设计,可能 clock_opt -cts 或者 ccopt_design -cts 就可以把 tree 做的很好。但是对于复杂时钟结构的 SOC 设计,我们能否直接执行命令做 Tree 呢?

显然是不能的。

一般情况下,中等规模及以上的 SOC 芯片的时钟树综合,都是需要编写时钟树约束文件。因为时钟太多了之后,工具处理起来比较费劲,特别是当一堆时钟进行 mux 操作后,工具经常还会把 tree 做的很长。工具之所以做起来费劲,之所以做不好 tree,主要原因还是时钟结构相对复杂,其复杂程度已经超出它的能力范围了。

不仅仅需要写CTS Constraint,甚至需要加一些guidance引导工具做 CTS,比如加一些 guide buffer。关于 guide buffer 常见的几种应用可以查看之前分享的文章。

数字 IC 后端实现中 guide buffer 的应用案例(另附赠书活动)

CTS Constraint 编写方法

如果我们能够对时钟结构进行拆分,把时钟结构很清晰地告诉工具,那么它还是能够做的非常漂亮的。当然这个前提是你要理清楚整个芯片的时钟结构。

画时钟结构图和写时钟约束文件都是数字 IC 后端工程师必备的一项工作技能,当然也是一项非常核心技能。如果这项技能能够很好的掌握,那么整个数字 IC 后端设计实现,还有比这更难的吗?

数字 IC 后端时钟树综合专题(OCC 电路案例分享)

这里结合上图所示的案例,解析下如何写时钟约束文件。

首先,可以把整个芯片的时钟路径分为三部分。第一部分是晶振—-> PLL ,第二部分是 PLL—-> CLOCK GEN ,第三部分是分频器输出——-> 各个功能模块。

其次,搞清楚 CLOCK Gen 模块是用来产生各种分频时钟信号的,它本身并不会直接与其他逻辑进行一个交互。因此,该模块内的寄存器都和别人是异步的。

最后,再整理下各个时钟路径的终点和 clock exception ,比如 floating pin , exclude pin , non-stop pin ,断开一些不需要穿过 mux 的时钟等等。

好了,今天的内容分享就到这里。如果你喜欢小编的文章,帮忙点下**“在看”**并转发给你的朋友,算是鼓励支持下小编呗。

小编知识星球简介(如果你渴望进步,期望高薪,喜欢交流,欢迎加入 ****)

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

  • ICC/ICC2 lab 的编写

  • 基于 ARM CPU 的后端实现流程

  • 利用 ICC 中 CCD(Concurrent Clock Data)实现高性能模块的设计实现

  • 基于 ARM 四核 CPU 数字后端 Hierarchical Flow 实现教程

  • 时钟树结构分析

  • 低功耗设计实现

  • 定期将项目中碰到的问题以案例的形式做技术分享

吾爱 IC 社区知识星球星主为公众号” 吾爱 IC 社区” 号主,从事数字 ic 后端设计实现工作近八年,拥有55nm,40nm,28nm,22nm,14nm等先进工艺节点成功流片经验,成功tapeout 过三十多颗芯片

这里是一个数字 IC 设计实现高度垂直细分领域的知识社群,是数字 IC 设计实现领域中最大,最高端的知识交流和分享的社区,这里聚集了无数数字 ic 前端设计,后端实现,模拟 layout 工程师们。

在这里大家可以多建立连接,多交流,多拓展人脉圈,甚至可以组织线下活动。在这里你可以就数字 ic 后端设计实现领域的相关问题进行提问,也可以就职业发展规划问题进行咨询,也可以把困扰你的问题拿出来一起讨论交流。对于提问的问题尽量做到有问必答,如遇到不懂的,也会通过查阅资料或者请教专家来解答问题。在这里鼓励大家积极发表主题,提问,从而促进整个知识社群的良性循环。每个月小编会针对活跃用户进行打赏。

最重要的是在这里,能够借助这个知识社群,短期内实现年薪百万的梦想!不管你信不信,反正已经进来的朋友肯定是相信的!相遇是一种缘分,相识更是一种难能可贵的情分!如若有缘你我一定会相遇相识!知识星球二维码如下,可以扫描或者长按识别二维码进入。目前已经有453星球成员,感谢这453童鞋的支持!欢迎各位渴望进步,期望高薪的铁杆粉丝加入!终极目标**是打造实现本知识星球全员年薪百万的宏伟目标 **。

欢迎关注 “吾爱 IC 社区

微信号:ic-backend2018

点击下方 “阅读原文” 访问星球下载福利。

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

  • 5
    点赞
  • 140
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值