修drc 违例的简单过程

这里的drc是物理上的。通常 drc drv会混用。
我认为的drc是 min max width 呀 这种物理上的约束
drv是 transition 呀 slack 负的呀这种timing上的东西。

好吧跑drc前记得invs 添加std_cell filler 。否则你的drc就爆掉了。 当然不添加metal filler 可能一会会有一些density viols 不过忽略掉就好了。

然后产生gds. 给calibre

calibre 有design 的 gds 还有design 厂商提供的REV drc 文件 就可以启动了

跑完drc后会产生一个drc.db 里面会记录drc marker。

然后你可以启动calibre 来看 drc 情况。

步骤
calibre load 你的gds


然后在calibre 里面startRVE load 你的drc.db 把viols marker 吃进来

image

然后load SVRF 把你的layer 吃进来

image

image

image

然后打开viols brower

把右下角的depth 设置最大
展开所有gds 层级

image

calibre 快捷键: 鼠标邮件右拖放大 左拖动缩小
ctrl z 放大 shift z 缩小

然后在RVE 有很多的viols 过滤掉你不想看的。展示你想看的比如这里的M7_6a

H 键hightlight 然后你会在layer 看到新出现的rve层
然后你还会看到你的violsmarker被hightlight 成了一个颜色
image
image

这里是两个金属线距离过进

然后启动invs 来修复这个drc

启动invus load invs design 注意在这之间记得load calibre license

点viols brower 图标 点文件夹选择calibre load calibre drc.db 来 load drc marker

image

然后看到drc 当然下面还有非calibre 看到的drc 请忽略它因为innovus 这完蛋玩意看到的drc通常都不准。
innovus : “mmp 老子 T* 就不是用来检查drc 的”

然后看到drc
image

然后打开foundry 提供的drc design manual 来看drc 说明 (当然viols brower 下面description 也有说明不过复杂的一般还是看手册,简单的就算了)

然后drc 的名字一般都是特殊的标记比如 M7_6a 在手册里就是 Mn.6a 这个规则。
搜,然后找到

这意思很明白,我翻一下
触发条件:两个wire 平行距离 > 0.6um 并且 其中任何一个wire的宽度0.7 um ,
要求: 在触发条件满足的时候 需要这两个wire的间距>0.12

来我们量一下


不满足要求行吧修把。把他们推开
用invs上面的 工具tool bar
左到右边比较常用的是
修改位置 画线 添加via 改变形状 拉长。

image

推开它,然后保存gds
把前面calibre的操作再做一遍 ,我保佑你不要有新的drc 出现

然后之后回到invs 和calibre
我们看这个时候就干净了没有marker 量一下距离0.14 > 0.12 美滋滋

行吧这就是一个简单修drc的过程

很多block metal desity的可以不看 因为没有添加metal filler
BORDER 这种soc chip 的drc在block也可以不看。

最后要说calibre 是只看形状来检查drc的工具。 所以invs 怎么修是 剪短拉长, 推开收紧, 删除,添加。 动出viols的wire还是动其它临近的 shape得具体问题具体分析。

补充下,有时候你手动拖动wire 修drc时候注意不要引入新的drc。 当你的wire 拖动的离其它wire 过进 invs 会有新的marker 出现。提示不要放在这个位置。

另外delete 掉一些singal wire 然后ecoroute可以自动fix一些drc。 但是power wire 就不推荐这样了。

1 个赞