时钟树综合(Clock Tree Synthesis)之前应该做好哪些工作?
文章右侧广告为官方硬广告,与吾爱IC社区无关,用户勿点。点击进去后出现任何损失与社区无关。
本周小编继续跟大家聊聊时钟树相关的主题,聊聊在做时钟树综合前我们应该做好哪些基础性工作。对于很多还仅仅停留在跑 flow,一切只靠工具的工程师,希望今天的分享对你们有所启发,有所帮助。因为小编时常面过一些小伙伴们,他们都表示仅仅停留在跑 flow 的技术水准(小编真是替你们着急)。如果你的技术仍然处于这个高度,是否应该引起重视?
2019 年数字 IC 后端校招笔试题目(附数字后端培训视频教程)
时钟树基础性工作
- 时钟定义正确
在时钟树综合阶段,一般我们讲时钟定义是指为了长时钟树而定义的 clock,而非传统意义的 func 时钟定义。小编已经跟大家普及过很多次这方面的知识,对于时钟结构比较复杂的设计,希望通过 EDA Tool 来帮我们长好时钟树,简直就是天荒夜谈,不太现实的。
Clock source 应该是通过 create_clock 或者 create_generated_clock 来声明的。Generated clock 定义的点必须能 trace 到 source 上。
深度解析 Create_clock 与 Create_generated_clock 的区别
- 标准单元已经正常摆放好
使用 check_legality –verbose 来检查所有标准单元是否 legal 的。如果对一个存在 illegal 的模块进行时钟树综合,其 QoR 会比较差,而且会加倍整个 runtime。
- Congestion 适度
如果一个模块 placement 做完之后 congestion map 特别差,存在特别大的 overflow,那么基于这样的 database 继续做时钟树综合意义不是很大。一方面是 QoR 会比较差,另外一方面是 cts 后 congestion 会更差,模块本身一定是绕不通的。
数字后端实现时 congestion 比较严重,你 hold 得住吗?
- Timing 可接受
Placement 后时序要差不多符合设计要求。如果 placement 后 wns 是 500ps 左右,那继续 tune cts 也是没太大意义。因为本身 placement 没做好,即标准单元的摆放位置并不是很合理。此时应该返回 place 阶段,进一步 fine tune timing。
-
DRV(Max transition Max capacitance) 可接受
-
Power &Ground net 已经 prerouted
-
高扇出的 net,比如 scan 使能端,已经解过 fanout(时钟树综合后存在特别大的 max transition 问题)
-
floorplan 是否对时钟树友好
比如细长条 memory 之间的 channel,未进行特殊处理。这种情况,如果 reg 被摆放进去,很有可能导致比较大的 clock skew 或者拖长 clock tree。
【机密】从此没有难做的 floorplan(数字后端设计实现 floorplan 篇)
- Placement 后逻辑分布合理
比如某个 ICG 所带的寄存器分布在天南地北,试问这样的 placement 能否做好时钟树?关于如何将 icg 所带的 sink 聚集在 icg 附近的脚本,请移步知识星球查看下载。
时钟结构分析
小编一直强调做时钟树综合前需要分析时钟树结构,不是说着玩的,实在是因为它太重要了。想要做好时钟树,仅仅需要做好三点。第一,了解设计。第二,时钟结构清晰。第三,编写时钟树综合约束文件。
对于设计的理解,需要同前端工程师多沟通。
分析时钟结构后,最好画出时钟结构图,并搞清楚以下几个问题。这些问题都搞清楚后,写一个引导工具长 tree 的时钟约束文件是水到渠成的事情,只能说 so easy。
合理的时钟结构能够加速 Timing 收敛(时钟树综合中级篇)
-
时钟的 root
-
Clock 的 sink 和 clock tree exception
-
时钟路径上是否存在 mux 切换电路,各路时钟应该如何长 tree?如何写 cts constraint 来让工具自己长好 tree?
留个思考题。假如 CK1 为 func clk,CK2 为 scan clock,对于下面的电路,时钟树会怎么长?假如 CK1 为时钟,CK2 为 data,做时钟树前要作何处理?
- 各个时钟 clock(含某些 data 需要做 balance 的)之间是否有需要做 clock inter-balance?
最后,小编用一句话来总结下时钟树综合工作的主要要点。时钟(它们)从哪里来,它们要去哪里,它们之间有何联系?
小编知识星球简介(如果你渴望进步,期望高薪,喜欢交流,欢迎加入 ****):
在这里,目前已经规划并正着手做的事情:
-
ICC/ICC2 lab 的编写
-
基于 ARM CPU 的后端实现流程
-
利用 ICC 中 CCD(Concurrent Clock Data)实现高性能模块的设计实现
-
基于 ARM 四核 CPU 数字后端 Hierarchical Flow 实现教程
-
时钟树结构分析
-
低功耗设计实现
-
定期将项目中碰到的问题以案例的形式做技术分享
在这里,各位可以就公众号推文的内容或者实际项目中遇到的难题提问,小编会在 24 小时内给予解答(也可以发表你对数字后端设计实现中某个知识点的看法,项目中遇到的难点,困惑或者职业发展规划等)。
反正它是一个缩减版的论坛,增强了大家的互动性。更为重要的是,微信有知识星球的小程序入口。星球二维码如下,可以扫描或者长按识别二维码进入。目前已经有139位星球成员,感谢这 139 位童鞋的支持!欢迎各位渴望进步,期望高薪的铁杆粉丝加入!终极目标是打造实现本知识星球全员年薪百万的宏伟目标。(星球的门票即将调整到 228 元 / 年,有需求的朋友趁早上车,**目前价格已经提高至 208 元 / 年,折算每天需要六毛钱 **)
点击下方 “阅读全文” 了解更多