合理的时钟结构能够加速Timing收敛(时钟树综合中级篇)

合理的时钟结构能够加速Timing收敛(时钟树综合中级篇)

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

时钟树综合(Clock Tree Synthesis)一直是数字后端实现中最为重要的步骤之一。随着芯片时钟越来越多,设计阶段都采用了时钟切换电路,时钟结构越来越复杂(除了 func mode 外,还有 test mode 和 mbist 等模式)。针对复杂的时钟结构,想单纯依靠 EAD TOOL 的 CTS engine 来实现一个比较好的 clock tree 质量,几乎不太可能。而且一个比较理想的 clock tree,都是要通过若干次的迭代而产生的,绝对不是你随便跑一次 flow 就可以的。在这里顺便强调一个观念,数字后端实现绝对不仅仅是 run flow,你的价值不应该停留于此。 如果你还仅仅停留在 run flow 这个 level,劝施主早日改邪归正,呵呵。

那么,下面进入今天的主题。首先谈谈衡量时钟树质量的几大指标。

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

1.clock tree latency 最短

clock inverter 更少,clock tree 上的 power 更小,占用更少的 routing resource 以及更容易 timing signoff。

2. skew 最小

skew 对 setup 和 hold 都有影响。特别是 hold,如果两个需要进行 hold check 的 register 存在较大的 skew,那么 hold violation 就会比较大。Hold 比较大,就意味着要插比较多的 buffer,有可能导致 route 的问题。

3. Duty Cycle

对于时钟树需要保持一个很好的 duty cycle。很多 IO 接口像 DDR,在时钟上升沿和下降沿都会采样数据,所以在 clock tree 上也需要一个 rise delay 和 fall delay 一致的 clock inverter。

4. Uncommon path 最短

由于 clock tree 上的 common path,会有一部分 CRPR 补偿(考虑 OCV 效应)。而对于 un-common path,launch 和 capture 都会被加上不同的 derate(假设各设 5% 的 derate),导致两个 DFF 的 clock skew 更大。

CRPR 能补偿 crosstalk 吗?

图 1 common clock path and uncommon path on clock tree

5. 信号完整性

对于 clock net 需要设置 CTS NDR (Non-Default Rule) ,比如两倍 width,两倍 space。这样可以有效防止 crosstalk 和 EM。对于高频时钟信号或者对于时钟质量要求特别高的 clock,我们还需要对 clock net 进行 shielding,保证 clock tree 上无任何串扰(作为一个 signoff 来 check)。

说到 CTS NDR,让我感慨万千。前几天有个粉丝问了一个问题,关于为何 CTO 之后 timing 是 meet 的,route 后 timing 确变差很多。当我刚看到这个问题时就觉得最大的嫌疑是检查 route 后 clock tree 上是否存在较大的 crosstalk。结果发现居然 NDR 没设置上,clock tree 上每个 cell 都有个 5-6ps 左右的 crosstalk。

说这个事情呢,主要想表达两个小建议:

  • 遇到问题一定要先自己分析,必须自己学会思考,学会 debug。

  • PR 各个阶段都干了些啥,每个阶段不同的地方是什么,这些是 debug 的方向。

案例分析:

下面简单介绍下三个 case。通过这几个 case,希望各位能够慢慢养成独立分析时钟树的能力。而且能够将项目中时钟结构不合理的 points,反馈给数字前端设计工程师。因为一个不合理的时钟结构,会导致 timing 收敛非常缓慢,甚至不收敛。这样的结局就是做项目大家都累得半死。

CASE1:

第一个 case 如图 2 所示。func clock 和 tck1 通过 Mux1 来进行时钟切换。在图中表箭头的地方定义了一个 generated_clock。当 Tool 在 build func clock 时(假设 Register set2 离 root 最远),该 func clock 的 longest clock path 为 Register set2 中的某个 reg 的 clock path。所以工具为了 balance 寄存器组 1,寄存器组 2 和寄存器组 3,不得不在 MUX1 的输出端和寄存器组 1 的 CLK 之间垫足够多的 clock inverter 。

这样似乎没有问题,但是在低速 test mode 下,tck1 的 clock latency 显然太长了。因此,为了避免测试时钟的 clock latency 过长,我们可以复制一个 MUX,使得 func 和 test mode 分别走不同的时钟路径,如图 3 所示。

图 2 原始时钟结构图

图 3 改进后的时钟结构图

case2 :

假设 CK1 和 CK2 是同步时钟。Tool 在做 balance 时,为了节省 clock buffer 往往会在 MUX 的 output 到 reg group2 之间插入 clock inverter(有些时候可以用少量的 clock buffer)。这样做会有问题吗?答案是可能存在问题,即导致 Reg group1,group2 和 group3 之间的 uncommon path 变长,如图 4 中左侧所示。如果我们将 MUX 输出端的两个 clock buffer 挪到 mux 的 D0 和 D1 端口上,同样可以实现各个寄存器组之间的 balance。而且它们之间的 common path 变长了,uncommon path 变短了。这样的行为对 Timing 是极好的。

图 4 case2 优化前后的时钟树

case3: power or timing based 的时钟树综合

人生面临很多选择,我们也在不断地做出不同的选择,每个选择都是一个 tradeoff 的过程。同样,数字 IC 设计实现的结果也是数字 IC 设计实现工程师在不断地做 tradeoff,而所达到的一个结果(PPA)。第三个 case 如下图 5 所示,留给各位思考。左右侧两种时钟树,哪种更好?他们的优缺点是什么?

其实时钟树综合并不难,关键是要理清时钟结构,搞清楚各种 mode 下时钟如何切换,各个时钟间的同步异步,以及哪些 clock 需要做 inter-balance 等问题。

图 5 两种不同的时钟树综合策略

这几天,粉丝越来越多了,提问的人也越来越多了。有的是重复的问题,有的则是新问题。对于之前我回答过的问题,想通过找历史回答记录,似乎很困难(要么去翻群历史消息,要么去翻个人历史消息)。

所以个人觉得这个不是长久之计,知识和解答不容易随着时间的积累而慢慢沉淀下来。所以小编注册了知识星球(原小密圈),建立了一个数字后端技术交流圈(需要付费,志愿加入原则)。在这里,各位可以提问,小编会在 24 小时内给予解答(也可以发表你对某个知识点的看法,或者职业发展规划等)。反正它是一个缩减版的论坛,增强了大家的互动性。更为重要的是,微信有知识星球的小程序入口。星球二维码如下,可以扫描或者长按识别二维码进入。

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

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

【机密】从此没有难做的 floorplan(数字后端设计实现 floorplan 篇)

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

数字后端面试问题 No.7-9(每日三问)

听说 Latch 可以高效修 hold 违例(Timing borrowing 及其应用)

15 天零基础入门到精通 python - 最全的视频教程

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

IR Drop 分析之 Redhawk 分析流程

CRPR 能补偿 crosstalk 吗?

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

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

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

教你轻松调 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 下载

好了,今天的内容分享就到这里。另外,因为公众号更改推送规则,小编分享的每篇干货不一定能及时推送给各位。为了避免错过精彩内容,请关注星标公众号,点击 “在看”,点赞并分享到朋友圈,让推送算法知道你是社区的老铁,这样就不会错过任何精彩内容了。

如果你想和小编有更进一步的沟通交流的机会,欢迎加入小编知识星球,让我们一起学习成长,共同进步。相信在这里能让你成就一个更完美的自己

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

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

  • ICC/ICC2 lab 的编写

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

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

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

  • 时钟树结构分析

  • 低功耗设计实现

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

  • 基于 90nm 项目案例实现教程(ICC 和 Innovus 配套教程)

  • 数字 IC 行业百科全书

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

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

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

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

欢迎关注 “吾爱 IC 社区

微信号:ic-backend2018
在这里插入图片描述

https://mp.weixin.qq.com/s/Tq-XftdDZGnAorSp4M-jVQ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值