Innovus中做ECO原来可以这么简单

Innovus中做ECO原来可以这么简单!

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

上周小编知识星球上有人想要一个 innovus ECO flow。这套 flow 参考脚本已经发布在星球上了。今天小编抽空拓展下这个主题的干货分享,希望对大家有所帮助。那么,我们就直接进入主题吧。

ECO 中文翻译是工程变更(Engineering Change Order)。只要你参与到实际项目了,肯定或多或少都接听过接触到 ECO 这个事情。因为 design 的 bug 无处不在,而且后仿用的 case 无法覆盖 100% 的应用场景,甚至还有后仿无法验证的部分。

ECO 主要包括 Timing ECO 和Function ECO。Timing ECO 是指在 timing signoff 阶段所做的 timing 方面的优化。而 Function ECO 又可以分为Pre-mask ECO 和 Post-mask ECO

Pre-mask ECO 是指芯片做 Mask 前所做的 ECO。而 Post-mask ECO 是指芯片 tapeout 后或 wafer out 后的 ECO。

Timing ECO

Timing ECO 主要涉及 timing signoff 阶段的 setup,hold 和 timing drc fixing 等内容。关于 setup,hold 等 timing fixing 的方法和 reference flow 见之前分享的技术专题 (知识星球上有整套 pt timing fixing 的 flow)。

这里重点提下 timing eco 阶段的clock tree eco。因为有的时候在 timing signoff 阶段会发现某些 clock tree 长的不太合理,导致存在比较大的 setup 或 hold violation。这个时候可以选择做 clock eco 来解决。

数字芯片设计实现中修复 setup 违例的方法汇总

那么,innovus 中如何做 clock eco 呢?clock eco 不外乎就是把 tree 人工做长或者做短。所以对应的命令如下:

ecoAddRepeater 或 DeleteRepeater

Pre-mask ECO

很多公司(特别是大公司),他们一般都有规定哪个阶段必须 RTL freeze,这个时候不会也不允许再更新新的 RTL,即使后面仿真验证有 bug。为什么不让更新 RTL 呢?因为此时数字后端工程师可能都做好布局布线,timing 也没什么大问题了,都准备开始修 timing 了。如果此时 release 新的 RTL,那就意味着需要重新跑整个 flow,从综合到 PR,再到 fixing timing。一方面会严重影响整个项目的 Tapeout 时间,从而影响 Wafer out 和芯片上市的时间。另外一方面,数字后端工程师可能有想骂人的冲动。

因此,此时数字前端负责写 coding 的工程师只能在 final RTL 的基础上,通过编写 ECO 脚本的方式来实现功能上的 ECO。

当然,如果需要增加部分新 feature,而这个 feature 要引入一个新 module,那么此时可能需要重新 release RTL。如果你的 flow 已经调的比较顺,而且还预留了部分 margin,那么可能对项目的 Schedule 影响还可以。

ECO 代价:时间成本,相对较小

Post-mask ECO (Metal 前 ECO)

当数字后端实现后的 design,timing 已经符合 signoff 标准,DRC 已经 clean,LVS 已经 pass,IR drop,MVRC,Formality,DRCPLUS 等都已经 pass。但是数字前端设计工程师还没来得及做完大部分 case 的后仿,而且芯片又面临着 Timing-TO-Market 的压力。此时,老板可能会说先 Tapeout 吧(就是开始传 GDSII 给 Foundary)。

为什么敢这么做呢?是在赌博吗?其实肯定有赌博的成分,但是更多的还是自信和满满的底气。因为前一周 foundary 会先做base layer的加工。只要后期仿真发现的问题,不需要再添加额外的 cell,就不耽误之前的 Tapeout(此处有点像流水线)。即使发现需要新加几个 cell,这个时候仍然可以通过替换后端实现过程中所加的 ECO cell 或者 spare cell 来实现。

关于如何预先加 ECO CELL 和 spare cell 以及如何在 PR 中利用它们来做 Function ECO 的主题,各位可以移步小编知识星球进行查阅。

Tapeout 后的 ECO

当芯片已经回来,在测试过程中发现的 bug,然后又必须 fix 掉的 bug(无法通过软件绕过去或者代价太高)。这个时候需要通过 ECO 来解决。这个时候做 ECO 的代价相对前面两种大很多,都是要消耗很多的真金白银,而且有芯片量产的巨大压力。改动少的可能就改几层 Metal layer,多的可能就需要动十几层 Metal layer,甚至重新流片。

做 ECO 之前,老板肯定会让数字前端设计工程师出 ECO 方案,同时让后端工程师进行评估,主要评估需要改动的层数,timing 是否能快速收敛等方面的风险。

ECO 代价:时间成本 + money 较大

介绍完各种不同类型的 ECO 后,我们具体来看看 Innovus 中如何做 Function ECO。

Innovus ECO Steps:

1 读入新 netlist

source newchip.globals

init_design

or

source oldchip.globals

set init_verilog “newchip.v”

init_design

2 Load old floorplan/placement/routing data

loadFPlan oldchip.fp

ecoDefIn -postMask -reportFile InDefeco.rpt G1.pr.def

applyGlobalNets

3 Low power related changes (Low Power Flow)

read_power_intent -cpf test.cpf

commit_power_intent -keepRows

对于 Low power 相关信号的改动,需要读入 cpf 文件,确保跨 power domain 信号的正确处理。如果是非 low power flow,可以跳过这一步。

4 指定 Spare cell list 或者 ECO cell

specifySpareGate -inst SPARE*

5 Incremental placement

ecoPlace -useSpareCells true

这步是告诉工具去找相关功能的 spare cell 或 ECO cell 进行替换。当然也可以人工告诉工具你想要换的 cell mappin 关系,比如下面的命令。

ecoSwapSpareCell i_9649 spare1

6 Tie 信号连接

新加进去的 cell,有的 pin 可能是需要接 0 或 1,那么此时 innovus 是支持自动在附近寻找已有的 tie cell 进行连接。当然你也可以利用 eco cell 来 create 一颗新的 tie cell。

addTieHiLo -postMask [-cell “tieHighCellName tieLowCellName”] [-createHierPort {true | false}]

7 ECO Route

将 ECO 新加入的 cell 摆好位置,就可以设定需要 freeze 的 layer,然后开始 ecoRoute 了。

ecoRoute -modifyOnlyLayers 1:2

在 innovus 中做完 eco 后,需要写出 eco 后 design 的 gds 做 LVL 检查,以确保工具 ecoRoute 后所动用的 layer 是符合我们的期望。那么,怎么做检查呢?具体的 LVL golden 脚本,请移步小编的知识星球查阅下载。

【思考题】 在 innovus 中做完 eco 后的 database 是否只有 eco 相关的点才重新绕线?为什么?

LVL 结果符合预期之后,还需要进行 RC 抽取,DRC 修复和 Timing signoff。这里的 timing 主要涉及 setup,hold 和 max transition 等检查。

如果 ECO 后存在 max transition,hold 和noise问题,请问该怎么修复呢?方法其实很简单,修复的方法与正常 flow 是一样的,通过插 buffer 可以解决。唯一不同的是这里需要插入 ECO buffer。

数字 IC 设计实现之 hold violation 修复大全

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

这里再留一个思考题:如果存在 max transition 问题,请问这里能否通过 sizeup 来修复呢?

如果 innovus eco route 后有较多 drc violation,怎么办呢?这个 C 家的工具也有 verify_drc 并且 fix drc 的功能。所以可以通过 ecoRoute -fixDrc 来实现自动修复。如果你非得问我工具能否 100% 修好,我一定告诉你那是不可能的。如果工具帮我们修复大部分的 DRC,是不是就应该知足了呢?

说到这个,想起来之前有个小伙伴私信问某家专门做 ECO 的工具是否真的那么智能,能够自己处理好所有 ECO? 小编至今已经有九年多的数字后端一线工作经验,反正我是从来没见过有这样的工具,也不知道这种工具何时能横空出世。

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

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

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

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

  • 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 后端设计实现领域的相关问题进行提问,也可以就职业发展规划问题进行咨询,也可以把困扰你的问题拿出来一起讨论交流。对于提问的问题尽量做到有问必答,如遇到不懂的,也会通过查阅资料或者请教专家来解答问题。在这里鼓励大家积极发表主题,提问,从而促进整个知识社群的良性循环。每个月小编会针对活跃用户进行打赏。

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

欢迎关注 “吾爱 IC 社区

微信号:ic-backend2018

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值