数字IC后端实现40天速成篇(中)
为了更好服务好大家,现把小编目前这边的主营业务向大家汇报下。其中对于设计外包这块,欢迎有后端外包需求的朋友联系小编(微信号:ic-backend2018),当然如果你有资源也可以介绍给我,一定有丰厚的现金奖励(抽成 5 个点)。
吾爱 IC 社区目前主营业务
1 技术咨询(包括技术难题咨询,项目 tapeout review 等)
支持个人与公司的项目技术支持。
2 项目外包服务(承接范围从综合到 GDSII out)
小编拥有近 11 年数字 IC 后端实现经验,精通数字 Top,高性能 CPU,复杂时钟结构的设计实现。先后顺利 tapeout 过 40 颗 +大型 SOC 芯片,面积最大为 150mm2。
涉及的主要工艺有T55,T40,T28,T22,T16,T12,T7,GF40,GF28,GF22,SMIC55,SMIC40,SMIC28,SMIC14,SMIC12,UMC28等工艺。
3 IC 后端训练营
提供高端服务器和公司实际项目给学员实操,每日及时解答所有学员当天所有疑难问题。实操遇到问题还可以申请远程协助登录服务器一起解决实际项目问题。
对于应届生或者想转行的同学,可以通过这个训练营进行学习实战,在一个月左右即可拿到理想的 offer。
4 知识星球高端技术学习交流社区
5 研究生毕业设计指导(仅数字 IC 后端实现方向,可以提供先进工艺库和使用项目数据)
提供四核 A7 顶层低功耗设计实现数据和指导,工艺可以根据需要选择 TSMC 28 或 TSMC16 等先进工艺(也可以支持 7nm 工艺)。学生可以根据这个项目来展开论文,提供技术和写作指导。
介绍完社区主营业务后,我们来预告下第五期 IC 训练营相关事宜。
应广大读者的需求,第五期 IC 训练营将于下周六正式开启报名通道。第五期计划招收 30 名,目前预约人数已经超过 15 人。有兴趣的同学可以添加小编微信(ic-backend2018),预约报名。
小编发现外界对社区的 IC 训练营还是非常认可的,咨询报名人数已创历史新高。特别是那些转专业的同学基本上都是同学或朋友推荐过来的。
下面摘录往期 IC 训练营部分学员反馈情况:
下面进入今天的主题。今天我们继续分享数字 IC 后端实现 40 天速成专题的时钟树综合和绕线相关主题。学完上周的上篇和今天的中篇后,算是完成了数字后端实现的 APR 部分。掌握好这里面的 40% 内容就能够找到一份非常好的工作。
什么是 CTS?
简单概括下,时钟树综合就是指从某个 clock 的 root 点长到各个 sink 点的 clock buffer/inverter tree 的过程。工具试图将某个 clock 所属的所有 sinks 做到相同长度。从概念上,我们可以得到几个要点。
- clock 的 root 点需要定义清楚。这个可以通过 create_clock 来定义。如果是 create_generated_clock,它的 masterclock 也是很清晰的,即知道 generate clock 的 source latency;
- clock 的 sinks 要知晓。
分步长 tree 思想的核心基础也是这两个重要概念。搞清楚这点后再复杂的时钟结构的 cts 也都不难了。
比如下图的这个时钟结构设计,是实际项目中非常经典的时钟结构设计。这个电路涉及Glitch Free Mux(无毛刺时钟切换电路),clock gating 电路和时钟分频电路。其中时钟分频电路包含整数分频(奇偶数分频),小数分频(N/2)。
https://alidocs.dingtalk.com/i/team/QqWXw0n4YVY3gm31/docs/QqWXwVg3l9DJrz31?corpId=dingcd9df953ab4a15574ac5d6980864d335# 「从 OCC 时钟结构解析分步长时钟树思想」
这部分是整个数字后端 PR 最核心的技能。初学者先从理论上把握即可,只要能把我们分享的这方面内容理解个 50%,出去面试一定是拿 special offer。对于完全 0 基础学员不需要掌握这方面内容。
我们社区的训练营上有关于 “如何 trace 时钟结构的专题教程”。有兴趣的可以前往查阅。
https://alidocs.dingtalk.com/i/team/QqWXw0n4YVY3gm31/docs/QqWXwVg3lPv25z31?corpId=dingcd9df953ab4a15574ac5d6980864d335# 「手把手教你 trace 时钟结构」
目前训练营上的实践干货教程已经对知识星球会员开放了,需要查看的星友可以前往知识星球上,按照要求扫描申请查阅。
CTS 前要做哪些检查?
- 时钟定义正确
在时钟树综合阶段,一般我们讲时钟定义是指为了长时钟树而定义的 clock,而非传统意义的 func 时钟定义。小编已经跟大家普及过很多次这方面的知识,对于时钟结构比较复杂的设计,希望通过 EDA Tool 来帮我们长好时钟树,简直就是天荒夜谈,不太现实的。
Clock source 应该是通过 create_clock 或者 create_generated_clock 来声明的。Generated clock 定义的点必须能 trace 到 source 上。
- 标准单元已经正常摆放好
使用 check_legality –verbose 来检查所有标准单元是否 legal 的。如果对一个存在 illegal 的模块进行时钟树综合,其 QoR 会比较差,而且会加倍整个 runtime。
- Congestion 适度
如果一个模块 placement 做完之后 congestion map 特别差,存在特别大的 overflow,那么基于这样的 database 继续做时钟树综合意义不是很大。一方面是 QoR 会比较差,另外一方面是 cts 后 congestion 会更差,模块本身一定是绕不通的。
congestion 到底要控制在多少范围内,可以看训练营专题分享和每日问题解答的解释。
- 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。
https://alidocs.dingtalk.com/i/team/QqWXw0n4YVY3gm31/docs/QqWXwVg3lgwvRz31?corpId=dingcd9df953ab4a15574ac5d6980864d335# 「时钟树 CTS 相关经验分享」
- Placement 后逻辑分布合理
比如某个 ICG 所带的寄存器分布在天南地北,试问这样的 placement 能否做好时钟树?关于如何将 icg 所带的 sink 聚集在 icg 附近的脚本,请移步知识星球查看下载。另外,如果 placement 后各个 module 分布不合理,会直接影响 clock tree 的长度和 skew。
想看 placement 后的模块分布情况,可以用训练营项目分享的这个方法。
https://alidocs.dingtalk.com/i/team/QqWXw0n4YVY3gm31/docs/QqWXwVg3l3DAwz31?corpId=dingcd9df953ab4a15574ac5d6980864d335# 「ICC2&Innovus 中快速 highlight module」
CTS 的目的和考核指标
时钟树综合的目标很明确。在实现clock insertion delay和clock skew最小化的同时还得把 DRV 控制在一个合理范围内。
那为什么我们需要把 tree 和 clock skew 做短呢?clock skew 是否一定是有害的?clock tree latency 太长有何坏处?clock skew 太大有何坏处?
想要搞清楚这几个问题,看下面这份专题分享即可。
https://alidocs.dingtalk.com/i/team/QqWXw0n4YVY3gm31/docs/QqWXwVg3lqDY5z31?corpId=dingcd9df953ab4a15574ac5d6980864d335# 「clock skew 对 timing 的影响」
时钟树综合怎么做?
对于 innovus 来所,时钟树综合就一个命令。ccopt_clock -cts 即可完成时钟树综合。掌握这个命令应该最多五分钟就够了吧。
时钟树质量分析
做完时钟树综合后我们就需要进行 “工程验收”。如果你都不知道什么样的结果是好的,那你肯定就没办法验证。就会陷入广大工程师掉入的一个陷阱————无论工具做出什么样的质量,都拿去做 timing signoff,反正也看不懂。
上面介绍了 clock tree 的两大指标及它们对设计各方面的影响后,我们就知道时钟树综合后要重点关注 clock tree latency 和 clock skew 两个重要指标。
- 报告 clock tree latency 长度和 clock skew
这个从 log 可以从 log 获取,也可以报出来看看。还不懂如何看 log 的请查阅之前的主题分享。
命令:report_clock_timing -to $clock_sink -type latency
https://alidocs.dingtalk.com/i/team/QqWXw0n4YVY3gm31/docs/QqWXwVnJoBPMKz31?corpId=dingcd9df953ab4a15574ac5d6980864d335# 「clock_tree_latency_debug_Scripts」
- 检查时钟树是否合理
利用之前分享的高亮时钟 path 的方法来查看是否有 “兜圈” 的情况。
也可以用 report_clock_tree_structure 或 report_ccopt_clock_tree_structure 来报出时钟树的信息。
PostCTS 优化
这步主要工作任务是优化时序。这步根据需要会综合考虑 timing,area,performance,power,congestion 等因素做一个全局的时序优化。
做这步的命令也是一句命令。optDesign -postCTS
做完后我们需要查看 timing,congestion 是否符合预期,即是否有 timing violation,congestion map 是否在合理范围内。
Route&Timing 优化阶段
如果 postCTS 后 timing 和 congestion 都比较好,那我们可以进入 route 阶段。
这个阶段的主要工作就是把设计中的逻辑连接用实际的金属 metal 完成实际的物理连接。由于先进工艺下的线宽越来越小,相邻线的 crosstalk 越来越突出,因此工具在绕线的过程需要同时考虑 timing 和 SI 的。
另外,为了确保芯片生产制造出来的良率更高,在绕线的过程还需要 follow foundary 关于 DFM 的相关 rule。因此工具在绕线的最后还会做 wire sperading 和 wire widen 等操作。
route 结束要到底要检查哪些东西?
- Timing
- Route DRC
https://alidocs.dingtalk.com/i/team/QqWXw0n4YVY3gm31/docs/QqWXwVg3lJp95z31?corpId=dingcd9df953ab4a15574ac5d6980864d335# 「每个阶段跑完到底要检查哪些东西?」
如果 route 后有很多 DRC,应该怎么办?所有的 DRC 是否都是真的?为了解决这几个问题特地编制了下面几个教程。
https://alidocs.dingtalk.com/i/team/QqWXw0n4YVY3gm31/docs/QqWXwVg3lZBaoz31?corpId=dingcd9df953ab4a15574ac5d6980864d335# 「分享一个 powerplan 对绕线资源影响的案例(面试可以分享这个过程)」
https://alidocs.dingtalk.com/i/team/QqWXw0n4YVY3gm31/docs/QqWXwVg3lZPdwz31?corpId=dingcd9df953ab4a15574ac5d6980864d335# 「icc2 和 innovus 调用 calibre 的方法」
https://alidocs.dingtalk.com/i/team/QqWXw0n4YVY3gm31/docs/QqWXwVg3lgq3oz31?corpId=dingcd9df953ab4a15574ac5d6980864d335# 「PR 工具中的 DRC 如何解?」
https://alidocs.dingtalk.com/i/team/QqWXw0n4YVY3gm31/docs/QqWXwVg3l9kMKz31?corpId=dingcd9df953ab4a15574ac5d6980864d335# 「A7 修复 DRC 方法介绍 – 学员分享内容」
好了,今天的内容分享就到这里。另外,因为公众号更改推送规则,小编分享的每篇干货不一定能及时推送给各位。为了避免错过精彩内容,请关注星标公众号,点击 “在看”,点赞并分享到朋友圈,让推送算法知道你是社区的老铁,这样就不会错过任何精彩内容了。
如果你想和小编有更进一步的沟通交流的机会,欢迎加入小编知识星球,让我们一起学习成长,共同进步。相信在这里能让你成就一个更完美的自己。
小编知识星球简介(如果你渴望进步,期望高薪,喜欢交流,欢迎加入 ****):
在这里,目前已经规划并正着手做的事情:
- 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 后端设计实现领域的相关问题进行提问,也可以就职业发展规划问题进行咨询,也可以把困扰你的问题拿出来一起讨论交流。对于提问的问题尽量做到有问必答,如遇到不懂的,也会通过查阅资料或者请教专家来解答问题。在这里鼓励大家积极发表主题,提问,从而促进整个知识社群的良性循环。每个月小编会针对活跃用户进行打赏。
最重要的是在这里,能够借助这个知识社群,短期内实现年薪百万的梦想!不管你信不信,反正已经进来的朋友肯定是相信的!相遇是一种缘分,相识更是一种难能可贵的情分!如若有缘你我一定会相遇相识!知识星球二维码如下,可以扫描或者长按识别二维码进入。目前已经有 1261 位星球成员,感谢这1261位**童鞋的支持!欢迎各位渴望进步,期望高薪的铁杆粉丝加入!终极目标是打造实现本知识星球全员年薪百万的宏伟目标 **。
![](https://www.icode9.com/i/ll/?i=img_convert/512689410ab56520ea90f5ac16018251.png
欢迎关注 “吾爱 IC 社区”
微信号:ic-backend2018
https://mp.weixin.qq.com/s/kkGUWq_1ztx5YBpYA7o7VA