在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 7630|回复: 13

[原创] DRC Code中“宽金属的间距检查”的快速理解方法

[复制链接]
发表于 2018-8-21 20:06:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x



    DRC规则中,经常遇到宽金属间距检查的规则,如何快速阅读和理解这个规则的典型DRC Code呢?




A1_d
描述: 如果Metal12个图形中有一个图形的宽度大于等于10微米(宽金属),则其距离不能小于0.5微米。同时,宽金属图形上的小凸起(bump)也被认为是宽金属图形,所谓小凸起的定义是:如果连接在宽金属上的图形的宽度小于等于1微米,就认为是附属于宽金属的小凸起。


     其含义如下图所示:


1.JPG




    这个规则的DRC Code书写如下:



A1_d {




A1_Wide = A1
With Width >= 10



A1_Exp = SIZE A1_Wide BY 1 INSIDE OF A1 STEP 0.126



A1_bump = A1_Exp NOT A1_Wide



A1_bump_edge = A1_bump COIN INSIDE EDGE A1



A1_Check = A1 AND (SIZE A1_Exp BY 0.5)



A1_Else = A1_Check NOT INTERACT A1_Exp



A1_Extend = A1_Check NOT A1_Exp




EXTA1_Wide A1_Else < 0.5 ABUT >0 <89.5 REGION



EXTA1_Bump_edge A1_Else < 0.5 ABUT >0 <89.5 OPPOSITE REGION



EXTA1_Bump_edge A1_Else < 0.5 ABUT >0 <89.5 CORNER REGION



EXTA1_Bump_edge A1_Else < 0.5 ABUT >0 <89.5 PROJ<=0 REGION



A = EXT A1_Exp < 0.5 ABUT > 0 < 89.5 SPACE REGION



ANOT INTERACT A1_Extend


}



   


   


   乍一看,DRC Code比较复杂,layer定义比较多,似乎无从下手分析。



   俗话说,“一图胜千字”,当你不理解文字含义时,通过图形的显示可以帮你快速理解每个语句的含义。



   这条Rule有几个关键的要点,分别是:宽金属,窄金属,小凸起。我们构造如下的gds版图来分析其具体含义:



2.JPG



   上图中,左边图形的宽度大于等于10um, 右边图形的宽度小于10um



3.JPG



    上图中,左边图形的宽度大于等于10um, 右边图形的宽度小于10um



4.JPG



    上图中,中间图形上小左右有4个小凸起,要分析其是否满足0.5微米的间距约束。



5.JPG



    上图中,小凸起与左边图形是角对角关系,要分析其检查这种类型的错误。




    上图中,小凸起到另外一个图形刚好投影是0,需要分析是否是检查这种类型的错误。


6.JPG



    有了上述gds的图形后,我们就可以逐句分析DRC Code的含义了:



第一步:
A1_Wide = A1
With Width >= 10



     在我们前面的Xcal工具介绍中,曾经提到过自动把每个中间步骤的结果打印显示,我们首先点击按钮A1_Wide这个layer




7.JPG

    工具会弹出:



10.JPG



    可以看到,黄色高亮部分就是A1_Wide的图形,由图形我们猜测其含义是:把宽度大于等于10的图形输出(但是不包括小凸起)。



第二步:
A1_Exp = SIZE A1_Wide BY 1 INSIDE OF A1STEP 0.126



9.JPG



    点击A1_Explayer,工具会自动弹出该layer的图形输出。


    可以看到,黄色高亮部分就是A1_exp的图形,由图形我们猜测其含义是:把宽度大于等于10的图形连同小凸起一起输出。





第三步:
A1_bump = A1_Exp NOT A1_Wide



    点击A1_bumplayer,工具会自动弹出该layer的图形输出。


8.JPG




    可以看到,黄色高亮部分就是A1_bump的图形,由图形我们猜测其含义是:宽金属附属的小凸起图形。



第四步:
A1_bump_edge = A1_bump COIN INSIDE EDGE A1



    点击A1_bump_edgelayer,工具会自动弹出该layer的图形输出。



11.JPG



    可以看到,黄色高亮部分就是A1_bump_edge的图形,由图形我们猜测其含义是:宽金属附属的小凸起图形的3条边(不包含与宽金属touch的第4条边)。



   


第五步:
A1_Check = A1 AND (SIZE A1_Exp BY 0.5)



    点击A1_Checklayer,工具会自动弹出该layer的图形输出。



12.JPG



    可以看到,黄色高亮部分就是A1_Check的图形,由图形我们猜测其含义是:为了提高效率,把宽金属和其附近0.5微米的图形都找到,远处的图形和边不要参数后续的运算。





6步:
A1_Else = A1_Check NOTINTERACT A1_Exp



    点击A1_Elselayer,工具会自动弹出该layer的图形输出。



13.JPG



     可以看到,黄色高亮部分就是A1_Else的图形,由图形我们猜测其含义是:除了宽金属以外,距离宽金属在0.5微米范围之内的所有的图形和边。




7步:
A1_Extend = A1_Check NOTA1_Exp


   


    点击A1_Extendlayer,工具会自动弹出该layer的图形输出。



16.JPG



    可以看到,黄色高亮部分就是A1_Extend的图形,由图形我们猜测其含义是:窄金属被检查的边。




     前面7步是准备工作,把需要检查的layer都准备好,后面就是5种检查了:



检查1
EXT A1_Wide A1_Else <0.5 ABUT >0 <89.5 REGION



     点击该layer,工具会自动弹出该layer的图形输出。



15.JPG



    可以看到,黄色高亮部分就是报错输出,由图形我们猜测其含义是:宽金属与窄金属的距离报错。





检查2
EXT A1_Bump_edge A1_Else< 0.5 ABUT >0 <89.5 OPPOSITE REGION



    点击该layer,工具会自动弹出该layer的图形输出。



14.JPG




    可以看到,黄色高亮部分就是报错输出,由图形我们猜测其含义是:小凸起与窄金属的距离报错,并且是正对图形有投影的报错。





检查3
EXT A1_Bump_edge A1_Else< 0.5 ABUT >0 <89.5 CORNER REGION



    点击该layer,工具会自动弹出该layer的图形输出。



17.JPG


   可以看到,黄色高亮部分就是报错输出,由图形我们猜测其含义是:小凸起与窄金属的距离报错,并且是角对角的报错。





检查4
EXT A1_Bump_edge A1_Else< 0.5 ABUT >0 <89.5 PROJ<=0 REGION



    点击该layer,工具会自动弹出该layer的图形输出。


18.JPG


    可以看到,黄色高亮部分就是报错输出,由图形我们猜测其含义是:小凸起与窄金属的距离报错,并且是投影长度为0的报错。





检查5
A = EXT A1_Exp < 0.5ABUT > 0 < 89.5 SPACE REGION





A NOT INTERACT A1_Extend




    点击该layer,工具会自动弹出该layer的图形输出。


19.JPG



    可以看到,黄色高亮部分就是报错输出,由图形我们猜测其含义是:2个宽金属的距离报错。




    至此,我们已经把这条DRC Rule的所有语句通过图形化的方式全部显示出来了,即使你对DRC Code的语法不是很熟,也可以通过图形的显示来猜出其具体含义了。



    但是,观众立刻就会发出一个疑问:难道我为了理解这个DRC Code,还要手工画这么多图形,手工运行这么多次DRC检查,才能理解这些Code吗?这个代价也太大了,还不如我直接看文本语句呢。



    是的,如果你没有其它辅助工具,确实需要画gds图形,确实需要运行多次DRC工具。不过,如果你使用scout工具 + xcal工具,则操作就异常简单了:通过scout工具自动生成前文中所有的版图图形,通过xcal自动运行得到所有的中间变量的结果。在此过程中,用户只需要点击几个按钮即可。



    关于如何使用scout工具 + xcal工具来迅速分析DRC Code的具体操作方法和步骤,我们将在后续的文章中讨论。目前,用户可以申请短期的免费licene使用该工具。



      也可以关注微信公众号: microscape8    每天可以看更新的内容介绍。












发表于 2021-6-8 10:21:16 | 显示全部楼层
学到了
发表于 2021-7-19 18:08:00 | 显示全部楼层
请问下当多个DRC合并成了一个REGION,我应该怎么把他们分离呢,例如我设置M1间距为1um内,但是版图1um内有多条M1,当报错的时候就会爆出一个大的REGION,但是我想要得到的是每一根M1到其他M1之间的DRC单独报,而不是合并成一个大的REGION,请问有什么方法可以达到吗?
 楼主| 发表于 2021-7-20 07:07:06 | 显示全部楼层


wmd201409 发表于 2021-7-19 18:08
请问下当多个DRC合并成了一个REGION,我应该怎么把他们分离呢,例如我设置M1间距为1um内,但是版图1um内有 ...


如果想分离多个报错,可以把region选项去掉,这样就是每个DRC单独报错了。
发表于 2021-7-20 08:42:22 | 显示全部楼层


houjs 发表于 2021-7-20 07:07
如果想分离多个报错,可以把region选项去掉,这样就是每个DRC单独报错了。
...


但是这样报出来的错是没法赋值,并进行下一步运算的呀,我希望能出分离的region,然后做下一步运算筛选,这样可以吗?calibre支持这样吗?

 楼主| 发表于 2021-7-20 08:50:28 | 显示全部楼层


wmd201409 发表于 2021-7-20 08:42
但是这样报出来的错是没法赋值,并进行下一步运算的呀,我希望能出分离的region,然后做下一步运算筛选, ...



   在Latch up Rule的检查中,经常遇到阻挡检查。所谓隔离(阻挡)检查就是检查在 layer1和layer2之间必须有layer3将其隔离(或阻挡)。如下图所示:


640?wx_fmt=png.jpg



    中间的图形是一个layer,上下的图形是另外一个layer,这2个layer必须被某个layer隔离或者阻挡才符合DRC规则。

    我们建议读者用最简单的实现方法:

第一步: 找到layer1, layer2距离最近的区域:FindClosestRegion
region1  {
   FindClosestRegion   layer1 layer2  < Dis
}

第二步: 用第一步的结果减去layer3,看是否被切割成2个区域
check {
  RemainRegion = region1  NOT  layer3
   region1Enclose RemainRegion  <  2
}


    不过,也有读者提出:我没有helmet工具,因此无法用你提到的关键字:FindCloestRegion,是否可以直接用主流工具的命令呢?

    回答是:可以通过比较复杂的操作间接地近似实现。

    我们首先先了解一个命令: DFM Space。其用法是:

   DFM Space   layer1  layer2 < dis   COUNT  ==4

    它的含义是:检查layer1和layer2的距离是否小于dis,其中COUNT == 4的含义是:如果layer1 , layer2图形在dis距离范围内出现了Shield的特点,则把Shield以外的图形忽略。

640?wx_fmt=png.jpg

    上图中,layer1是A边,layer2是B边,蓝色的S是layer1的另外一个边,S边就是Shield图形,它把间距检查的某些区域挡住了,报错时,被Shield的区域不被输出,从而大大减少了报错个数,并且为后续的进一步操作留下了空间。

    利用上述概念,我们可以如下实现layer1, layer2被layer3阻挡的操作:

第一步:

edge1  {
   X  =  DFM Space  [layer1]  layer2  < dis  COUNT  ==4
   Y  =  DFM Space  layer1  [layer2]  < dis  COUNT  ==4
}

    第一步的结果是把layer1, layer2的最近距离图形找到,与helmet工具的findCloesestRregion类似,唯一的区别是:该命令输出的结果是边,而不是图形。由于结果是边,就需要做额外的操作把它变成图形。

第二步:

region1 {
   regionx  = EXPAND EDGE X outsideby 0.001
   regiony  = EXPAND EDGE Y outsideby 0.001
}


    第二步的结果是把边扩展为一个很细的矩形。准备检查在x与y的矩形之间是否有layer3被隔离开。

第三步:

no_layer2 = BULK  not layer2
no_laeyr1 = BULK  not layer1

region2 {
   region2  = SIZE  regionx by  dis  INSIDE OF LAYER  no_layer2 step 0.03

}

    第3步的含义是: 把layer1的边向外扩充dis的距离,但是在扩充过程中如果遇到layer2的边阻挡,就停下来不要再扩了。step 0.03的值是layer2图形宽度的一半。这个size step的操作就是我们在前面文章中多次提到的“孙悟空跳不出如来佛手心”的操作。

第四步: 用第三步的结果减去layer3,看是否被切割成2个区域

check {
  RemainRegion = region2  NOT  layer3
   region2 Enclose RemainRegion  <  2
}


    看起来,通过上述四个步骤实现了helmet工具的FindCloesestRegion的命令,不过,这个操作隐含着一些问题:如下:


640?wx_fmt=png.jpg


     上图中绿色图形是layer1,黄色图形是layer2,红色图形是layer3。直观地看,layer1, layer2确实被layer3隔离开了。

     但是,在第三步做size操作时,由于绿色图形的2条边对外做size扩充后上下2个图形连接成了一个图形,导致最后做第四步减去layer3时,其结果还是连接场一片的一个图形,不是被分割成2个图形,从而报错,出现了伪错。

     遇到上述问题,该如何解决呢?

     一种解决办法是:毕竟通过上述检查已经能够查出绝大多数问题了,剩余的问题由人工来分析,工作量也不是很大。

     另外一种办法就是:把上图中layer1的竖向的边分解成很多短边,每个短边中间被一个0.001的很细的距离隔断,即纵向边的短边都是没有相邻的边,这样第三步做size操作时,就不会把多个区域连在一起了。这种方法实现起来比较麻烦,有兴趣的读者可以自己分析来写出具体代码。

     总结:隔离检查是DRC检查中经常遇到的问题,由于普通的DRC命令不支持该检查,用户需要写复杂的组合命令来实现该功能。用户经常的问题是:为什么主流工具明明知道有该需求,就是不通过一条简洁的命令来实现呢?

     答案是:任何自动化的功能都是需要权衡实现代价和带来的收益的。EDA公司经过仔细分析发现:实现该命令的工作量和难度远远大于预期获得的收益,因此留给用户自己通过命令组合来实现。而helmet工具恰恰解决了这个工作量大,使用量小的鸡肋问题。

   




发表于 2021-7-20 09:16:39 | 显示全部楼层


houjs 发表于 2021-7-20 08:50
在Latch up Rule的检查中,经常遇到阻挡检查。所谓隔离(阻挡)检查就是检查在 layer1和layer2之间必 ...


好的,谢谢你

发表于 2021-8-27 19:05:32 | 显示全部楼层
楼主,请教一下,
A1_Exp = SIZE A1_Wide BY 1 INSIDE OF A1STEP 0.126
这个语句是怎么实现把小凸起<1um的图形筛选出来的啊?
 楼主| 发表于 2021-8-27 21:02:43 | 显示全部楼层


塔塔妮 发表于 2021-8-27 19:05
楼主,请教一下,
A1_Exp = SIZE A1_Wide BY 1 INSIDE OF A1STEP 0.126
这个语句是怎么实现把小凸起 ...



     Size的含义就是把A1_Wide往外扩大1微米,然后与A1图形做and,往外扩的图形就是突起的部分。 step 0.126是为了防止与其它图形有交叉,让它步长很小。

发表于 2021-8-31 09:00:17 | 显示全部楼层


houjs 发表于 2021-8-27 21:02
Size的含义就是把A1_Wide往外扩大1微米,然后与A1图形做and,往外扩的图形就是突起的部分。 step 0 ...


请问如果这个凸起大于1微米,如何筛选掉呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /3 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-20 02:14 , Processed in 0.038148 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表