《ICC2教程 - In design ICV signoff DRC与自动修复》
本文选自知识星球中的ICC2教程,更多IC干货见星球,
同时星球QQ群还有分享高达40多万字的个人数字后端设计笔记,欢迎加入,星球二维码见文末。
星球在2022年,不考虑更新的长文的话就更新了48万字,
更新的主题数大概是8篇/天,考虑长文的话会更多。
一、背景
随着工艺节点的推进,后端布局布线以及PV signoff的时候DRC rule越来越多,越来越复杂。某些在PV signoff工具里面的DRC规则可能很难加入到/转换成PR工具里面的Rule(在tf和tech LEF里面定义),因此我们会在PR工具以及PV工具中看到一些DRC的不匹配(mismatch),其中一个原因就是两者Rule上的不同。除此之外,还有一些其他的原因,比如PR工具中用的是LEF/mw/ndm,而PV工具用的是完整的GDS/oasis,两者存在不同。
关于DRC Rule这一方面,对于比较成熟的工艺或者一些大众的Foundary,Foundary一般都能提供一个比较好的tf/tech LEF,使得它能够Cover最终PV signoff工具里面的绝大部分DRC Rule。可是对于一些正在开发的工艺节点或者比较小众的Foundary,可能两者之间的差距就有点大了。
Mismatch可以分为两种:
1. PR工具中遇到一些DRC,但是PV工具中没有
如果PR工具中遇到一些DRC在PV工具中都没有的话,那么这个问题不是很大。这些问题其实都可以忽略。由于在一轮又一轮的ECO当中,PR工具也会努力去修复这些假错,因此这也会徒增runtime。如果PR工具中的这些假错数量很多的话那么需要注意一下。
2. PR工具中没有发现DRC,但是在PV工具中发现了
如果在一些位置,PR工具中没有报DRC,但是在PV工具中报了,那么这个问题就需要注意了。因为PR工具看不到,自然也没办法修复了。这个问题的大小要看DRC数目的多少。如果DRC数目比较少比如几十个,那么手工完全可以处理,所以问题不是很大,就是修起来有点费劲。如果数目非常多,那么这个问题就有点棘手了,因为手工修起来有点麻烦,且每轮ECO都得去修,很费时间。遇到这种情况,一种选择就是向Foundary反馈(或者看waiver list)看这些PV工具中的DRC是否是可以忽略的,如果不能忽略的话,能否提供一个比较新的tf/tech LEF能Cover这些PV工具中的DRC。如果Foundary迟迟没有反馈或者说不打算修的话。那么最常规的手段就是自己手修硬修了。
其实对于这种情况,还有另一个自动化的解决方案,就是让PR工具去看到PV工具中的DRC并做修复,这就非常实用了!!而Synopsys的ICV和ICC/ICC2就提供了这样一种非常好用的功能,这里我们介绍一下在ICC2里面的具体实现方式。
二、如何去跑ICV in design signoff DRC
首先设置ICV相关变量,让工具能找到ICV的程序:
setenv ICV_HOME_DIR "/xxx/icvalidator/M-2017.06-SP2"
setenv ICV_INCLUDES "xxx/icvalidator/M-2017.06-SP2/include"
setenv PATH "xxx/icvalidator/M-2017.06-SP2/bin/LINUX.64:$env(PATH)"
#下面的命令可以验证ICV环境是否设置好了:
sh which icv
#设置ICV的runset文件:
####################
# ICV In-Design DRC
set_app_options -name signoff.check_drc.runset -value ../ref/icv_runsets/saed32nm_1p9m_drc_rules.rs
#设置每个DRC error最多报多少个,报太多的话会增大runtime:
set_app_options -name signoff.check_drc.max_errors_per_rule -value 1000
#设置signoff DRC check的路径:
set_app_options -name signoff.check_drc.run_dir -value "z_icvDRC_run"
#会在该路径下生成vue和error等文件:
#可以选择只跑某些指定的规则,由于没有完整的版图,所以一般都只用跑金属层:
# To reduce runtime, we only check a few layers
signoff_check_drc -select_rules { "M2*" "M3*" "M4*" "M5*" "M6*" }
save_lib
由于tf不太可能包含Design rule里面的所有DRC约束,所以它和ICV基于runset的结果可能存在一些不匹配,所以有些DRC是check_routes检查不出的,ICV能检查出来。
可以看到ICC2 check_routes是clean的,而ICV有上面的DRC问题:
icc2_shell> set_host_options -max_cores 16
icc2_shell> check_routes -check_from_user_shapes true \
-check_from_frozen_shapes true
三、基于ICV DRC的结果做signoff drc的自动修复
内容见知识星球(二维码见文末)。
~~ 知识星球 ~~
知识星球创建了一个专属QQ交流群,上传了积累多年(应该有8年了)的IC后端笔记(都是一个字一个字打的),同时也会不定时发一些红包(2022年已经累计发放2210元红包),感兴趣的可以加入。目前已上传的笔记有:
-
低功耗设计技术总结-3万字,129页
- IR drop的分析与修复总结-4.3千字,20页
- 数字后端理论及实践-ICC干货笔记-11万字,423页
- 数字后端理论及实践-Innouvs教程(第4版)-5.7万字,316页
- ICC2教程-星球精编版-2万字,125页最新上线:
- 数字后端理论及实践-Innouvs教程(第5版)-11.8万字,635页
- 面试笔试题整理 面试笔试经验分享(第1版)-1.6万字,48页
- 面试笔试题整理 面试笔试经验分享(第2版)-2.3万字,87页
- ICC2 ICC与Innovus的命令对照(第1版)
- Tcl与DesignCompiler教程(第1版)-6.1万字,183页
- DRC规则讲解、DRC的检查与修复(第1版)- 7.3千字,26页
- 更多教程、笔记持续更新中。