数字IC后端培训教程| SoC芯片Tapeout阶段发现的这些问题原来可以这么处理

顶层Top Hierarchy Flow中的IO时序优化(高端IC后端训练营即将开营啦?)

在这里插入图片描述

项目马上要Tapeout流片了,遇到下面这些问题,我们应该如何高效解决?

1)遗漏clock tree

在项目最后Timing Review阶段,我们经常会发现如下所示这种从Mux输出端到IO的这段clock tree漏做的情况。这条路径上工具已经插上普通buffer和inverter来解Timing DRV,而这条clock path的时钟质量要求比又较高!

在这里插入图片描述

如果直接把这条路径上的普通buffer和inverter替换成clock inverter,我们会发现会存在max transition问题(flow中这段transition是按照data transition来做的)。
所以,我们最好是把原来的buffer和inverter删掉,在当前设计数据中重新做一条clock inverter出来,比如每隔100um添加一颗clock inverter。但是这样做完之后,我们会发现ecoRoute后每段clock net会出现比较严重的routing detour,导致存在max transition violation!
所以这时候就得用我们之前分享的对clock net做ECO时避免routing detour的解决方案。

在这里插入图片描述
在这里插入图片描述

2)长线long net

在项目流片后期我们除了要把timing和physical signoff的所有事项都清干净,我们还会做一些额外的检查。这些检查大都是我们通过一系列的脚本来自动化检查,并输出对应的report。

然后后端工程师就需要根据这些report来进行修复。

这些比较常见的检查有以下几个:

设计中长线net(比如超过350um的net)

设计中core区域,memory和IP的PG Density(多少um内必须能找到孔,电阻上的考虑)

这两项检查其实在我们训练营项目中也是推荐大家去做的。在项目后期其实就是在做一些修修补补,修复设计实现中的弱点和锦上添花的一些优化。

下面以咱们训练营项目a7core项目为例来查看下长线long net问题,并给出自动化解决方案。

我们这里设置的线长阈值为380um,具体脚本如下所示。大家可以根据自己的项目需求来做修改。

在这里插入图片描述

执行结束后会输出一个longnet.rpt文件,内容如下图所示。如果这个文件是空内容,代表设计中不存在超过380um的长线。

在这里插入图片描述

比如这里报出来这么多长线net,我们是不是需要一条条去手修呢?

我们说过后端设计实现阶段,能自动化解决的,我们都尽量让工具自动帮我们修复。

下面分享通过AddRepeaterByRule来自动化解决report中的所有长线问题(第一个案例手工补clock tree也可以使用这种方法)。

为了对比效果,我们先来选中report中的一条长线net,高亮如下图所示,这条net线长约400um。

在这里插入图片描述

在使用addRepeaterByRule前,我们需要提前设置好rule文件和net list文件。

###设置rule文件

set clock_rule clock_rule.tcl

SetBufferMaxNetLength BUFFD8BWP40P140 240.0

如果是clock net,我们需要指定clock buffer或clock inverter!

###指定net list

set clock_nets 0602net.list

在这里插入图片描述

###移除cell dont use属性 (如果是要加clock buffer或clock inverter的话)

set_dont_use CKND16BWP7T40P140 false

set_dont_use CKBD16BWP7T40P140 false

addRepeaterByRule -copyNetAttribute -alongRoute -rule $clock_rule -selNet $clock_nets

执行上面addRepeaterByRule后,log中会显示如下信息。

在这里插入图片描述

执行完毕后,我们再来高亮最上面高亮的net,我们发现原来的long net已经被工具一分为二,效果图如下图所示。

在这里插入图片描述

3)流片前为了赶项目周期,已经把base layer提前release给foundary,但是检查发现还有Timing问题和Physical DRC问题

这种提前Release GDS的情况,需要确保当前没有base layer drc violation。后续修Timing我们完全可以当做post-Mask的Function ECO来做,即利用设计中的spare cell或ECO Filler来插buffer或inverter。需要注意的是这个阶段不允许做upsize或downsize操作。
对于Physica DRC Violation,只要没有base layer drc问题,所有metal layer都可以随意更改的。
这种提前release base layer gds的做法,大概可以把项目流片时间提前2周左右,已经被很多中大型公司广泛使用。

在这里插入图片描述

4)Timing Signoff Review时发现Signoff sdc有问题导致把若干条timing path变成false path,而实际上是需要做同步检查的

5)设计中需要新增一个clamp信号,用来控制power off domain输出的isolation cell的iso信号

实际项目中经常会遇到这类功能ECO需求。需要在当前设计中添加一个port并和另外一个port或者cell的输入pin进行逻辑连接。

在这里插入图片描述

方法和步骤如下:

创建需要新增的IO port

addModulePort - eco_add_io_port input (注意中间的中杆字符)

语法格式: addModulePort

由于我们是在当前设计的顶层添加io port,所以module name写成 “-”。

把这个IO port 连接到需要连接的pin或port上

attachModulePort - $original_output_port eco_add_io_port

摆放这个新增进来的io port

摆放io port的命令和floorplan阶段摆放方法一致,都是使用editPin来摆放即可。

如果选用GUI图形界面来摆放,可以选择gui中的Unassigned pin,工具就会自动列出当前没有摆放的port list。

物理连线ecoRoute

有了逻辑连接后就开始做物理连线ecoRoute即可。

6)测试模式下发现若干ns的hold violation

Lockup latch的用法,看这个就够了!
合理的时钟结构能够加速Timing收敛(时钟树综合中级篇)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值