在上一讲中一起了解了INVS里的DanglingWire(innovus中的DanglingWire(悬垂线)的理解和处理),常言道理论联系实际,在理解原理的基础上,那一定是要服务项目的,这篇后续火速跟进,一起使用自动化的方式来进行处理,节省芯片的绕线资源。
DanglingWire在INVS看来是可以进行trim的,这些也基本出现在PG gen的过程中,可能会来自于下列命令(或不仅限于下列命令):
sroute
editPowerVia
addStrip
既然大家已经了解了DanglingWire的出现原因,在进行trim收到操作前,用户需要对自己的PG 进行优化,来减少DanglingWire的出现几率,这里有包括但不限于以下的一些建议
如果有PG ring的规划,需要优先创建core ring和block ring
建立PG stripe,尽量extend到ring上,这里有几个选项用户可以关注
在没有 std-cell row的channel,不要创建可能会被macro打断的PG stripe , 譬如
上述工作完成后,用户需要使用verifyConnectivity进行查验,如有遗漏可以尽量补足。
用户始终要明确:INVS的native命令是效率更高,收效更明显的处理手段。在任何手工/脚本操作前,都应该应用尽用INVS native 命令。
反过来讲,一个完美的结果也不是一蹴(一个命令)而就的,打磨在所难免的,在日渐竞争的芯片后端岗位中,掌握别人不了解或者现在不了解的方法,是有机会能够让你获取【短暂的】领先的
对于剩余的DanglingWire的问题,这里提供一个procedure(函数),进行解决。函数的基本使用方法如下
打开INVS数据库
在INVS,导入函数
这是ICerDev团队原创函数的第三次释放,版本信息如下
- 版本号:V0.12
- 交付时间:2023-01-10
- 更新内容:添加trim_danlingwire函数
使用help查看函数帮助
小试牛刀
在使用trim_danlingwire函数之前,先来使用命令verifyConnectivity验证一下当前数据库的DanglingWire的状态
可以看到,当前数据库有606个DanglingWire的问题
查看细节可以看到,基本是M1的问题,基于上篇文章的讲解对于std-cell的M1 PG rail上的问题,在PG DB上是不用理会的,这些在后期会自动修复。
这里以M6层举例,一起看看这个函数的处理能力
step1: 在进行trim前,推荐使用show_only的方式来进行脚本运行评估(evaluate)
函数此时以评估模式运行,可以看到,在基于M6和VIA5的基础下,函数评估出整个系统会有87根M6共计5237的绕线资源属于DanglingWire的范畴,可以被优化掉。
此时,用户可以通过GUI的红色高亮区域进行查验
从full-view视图可以看到,函数评估出来的可优化的点位主要集中在FP的下侧,zoom-in看一下究竟
用户大致查验这些高亮的区域,如果没有明细问题,就可以进行真实的trim
step2: trim DanglingWire
对于上述高亮区域,可以使用下面的命令进行trim
可以看到,刚才高亮的区域,此时已经被trim掉了
用户此时可以通过verifyConnectivity查看DanglingWire状态
可以看到,数据库中的DanglingWire从606降到了548,其他的错误类型并未发生变化,
再进行GUI进行细节查看
可以看到刚才下部大面积的DanglingWire已经消失了,M6的DanglingWire也从60个降低到了2个,在这个数据库中,基本可以实现一次性全部修复。
审核编辑:刘清
-
GUI
+关注
关注
3文章
650浏览量
39553
原文标题:INVS里的DanglingWire的自动化修复实战
文章出处:【微信号:ExASIC,微信公众号:ExASIC】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论