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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
楼主: houjs

[原创] 面向微电子专业的免费培训--—工艺规则DRC/LVS/RCX的Rule开发及验证

[复制链接]
 楼主| 发表于 2021-1-11 07:29:23 | 显示全部楼层


fancysky 发表于 2021-1-7 15:43
老师您好!能不能给我发一份资料学习学习,谢谢!邮箱


   @fancysky  已经发送。
发表于 2021-1-20 20:40:04 来自手机 | 显示全部楼层


houjs 发表于 2021-1-11 07:29
@fancysky  已经发送。


侯老师你好,能否给发一份资料供学习和参考,邮箱843071455@qq.com,期待你的回复,谢谢!
发表于 2021-1-21 11:13:53 | 显示全部楼层
好事路过,能否给我发一份,谢谢
cucume_cn@sina.com
发表于 2021-2-3 18:00:26 | 显示全部楼层
老师您好,我也想要一份,多谢啦  78769493@qq.com
发表于 2021-2-5 07:34:47 | 显示全部楼层
請問下方的Warnings 是什麼問題? 有些 subckt 可 match , 有些無法 match , 不知差異是什麼?
No math found for XCELL name "POR" in file:/project/xcells
发表于 2021-2-5 07:55:38 | 显示全部楼层
No match found for XCELL name "POR" in file: /project/xcells
上方的 Warning 是怎麼回事 ? 有些subckt 可以 match , 有些無法 match , 差異是什麼?
 楼主| 发表于 2021-2-7 08:35:11 | 显示全部楼层


jiunnchu 发表于 2021-2-5 07:55
No match found for XCELL name "POR" in file: /project/xcells
上方的 Warning 是怎麼回事 ? 有些subckt  ...


有些不能match的原因是: 这些cell被版图验证工具自动打散了,因此在版图处理中找不到这些单元名了。
发表于 2021-2-10 09:05:40 | 显示全部楼层
老师您好,我也想要一份,多谢啦。943066215@qq.com
 楼主| 发表于 2021-2-17 10:36:57 | 显示全部楼层


zhizhu2017 发表于 2021-2-10 09:05
老师您好,我也想要一份,多谢啦。



新春佳节,对读者送出大礼:vgds的3大特色功能免费用




1.  电学节点的寄生电容分析功能


2.  避免传统lvs流程错误的提取晶体管级寄生电容的方法


3.  DRC结果的Browser功能






功能1:电学节点的寄生电容分析功能



版图显示工具使用中,工程师经常希望看一下线网的寄生参数与其图形的对应关系,通过估算来分析实际提取的电容值是否与其一致。该如何实现其功能呢?



下图是一个典型的电路版图



095734i4qkjtuxntntzcyz.png





     通过寄生参数提取后,发现该电路的耦合电容中,有一个与其它不同,其它的耦合电容数量级都是1e-15,而该电容的数量级是1e-14,如下:




C143_101 142 143 1.15638e-14





由于担心该耦合电容计算不准,需要查看142号节点,143号节点的具体图形,该如何查看呢?






Vgds提供了自动显示不同节点图形的功能,工具首先自动生成一个node.gds的文件,记录了所有图形的节点信息。然后通过vgds打开node.gds,如下:



095734aqnmmla99vc9le6d.png




可以看到,左侧把节点号或者节点名显示出来,用户可以点击NET_142,看到图形如下:



095734i357zharywc05apq.png







     把它放大,显示如下:



095734n4bocvz4v4rwk14e.png










同理,显示NET_143的图形如下:



095734f4alj31qpyc641b6.png










放大显示如下:



095734xxtmqmtjxt5t3jti.png














     由于142与143的耦合电容较大,需要把2个节点同时显示,如下:






095734g02v44cn5fx4use2.png






     放大两个节点的临近位置,如下:



095734pen6sbnow5xet7xx.png










     可以看到,蓝色A2 layer的2条线网平行走线很长,它们之间的耦合电容构成了其主要的电容值。






     用尺子测量,发现142,143的平行走线长度为:126um,线宽为0.38um,线间距为0.3微米。



095128ore09eukg0ee19gv.png










    通过与vgds相结合的tuta工具,可以得到该工艺的单位线长的耦合电容如下:



095734wjjx66tj1ajmezjj.png







从上表可以看到,当W=0.38, S=0.3时,其单位长度的耦合电容Ccl = 0.1081ff, 在本例中,该平行走线的长度为126um, 因此,通过手工估算其耦合电容应该是: 0.1081ff x 126 = 13.62ff = 1.362 e-14,与寄生参数提取出来的电容值1.156比较接近,如下:






C143_101 142 143 1.15638e-14









总结:针对寄生参数提取工具提出的网表,如果怀疑其某些电容值计算不准确,需要有2个工具辅助分析。第一个工具是自动显示节点或者线网图形的版图显示工具vgds,第2个工具是自动对寄生参数工艺进行单位线长计算的tuta工具。采用上述2个工具即可对任意线网的提取精度进行分析和估算,从而判断其电容是否准确。









功能2:避免传统lvs流程错误的提取晶体管级寄生电容的方法



做寄生参数提取的工程师经常问:采用寄生参数提取出的电容值是否与wafer上实际测试得到的值一致?这就涉及到2个问题:第一个问题是寄生参数提取的精度是否准确?第二个问题是描述寄生参数提取layer的图形是否与wafer上的实际图形是一致的?






其中第二个问题经常容易被工程师忽略,导致寄生参数提取的结果与wafer上的结果预期不一致。






工业界常用的寄生参数提取流程都是基于LVS Runset的节点提取和layer提取,它根据LVS生成的layer进行后续的寄生参数提取。如果LVS运算过程中对layer的处理没有考虑到寄生参数提取精度的问题,则就会造成寄生参数提取精度不准确。






在LVS Runset开发中,许多工程师认为只要LVS Runset开发正确就行了,不需要考虑寄生参数提取中对LVS Runset的一些约束。结果经常导致寄生参数提取的结果不准确。






特别是,许多公司的LVS Runset开发工程师和RCX Runset开发工程师不是一个项目组的,彼此之间交流并不是很多,就更容易犯上述错误。






如何才能检查出LVS Runset中对寄生参数提取结果影响的问题呢?









下面是一个典型的例子:






Connect  M1 poly  by  CONT



gate =poly AND  diff






DEVICE  MN(N) gate poly(G) ndiff(S) ndiff(D) pusb(B)






上述语句的含义是:N型mos管的识别层是 gate图形,4个pin中用poly图形作为G的端口。






上述写法针对LVS提取完全正确。但是,在寄生参数提取中,由于mos管的G到D, G到S的寄生电容已经在spice model中考虑了,不能在寄生参数提取中重复考虑。因此,需要告诉寄生参数提取工具不要再提取这些寄生电容。






可惜的是,上述LVS Runset由于G的端口用的是 poly层,而不是gate层,寄生参数工具在忽略寄生参数时,会把poly-D, poly-S的寄生参数忽略,而不是精确地忽略G-D, G-S的电容,导致有误差。




因此,LVS Runset比较好的写法是:






Connect  M1 poly  by  CONT
gate =poly AND  diff


Connect  M1 poly  by  CONT


Connect  gate poly

DEVICE  MN(N) gate gate(G) ndiff(S) ndiff(D) pusb(B)




注意上述写法中,mos管的G用了gate这个layer,可以精确地表示mos的端口图形,从而不会屏蔽掉多余的寄生电容。





以上方法是针对一个简单的mos器件,还容易发现存在的问题。如果器件比较复杂,lvs runset中可能有上百个器件,连接关系语句很多,可能就不太容易人工发现上述写法的问题了。





为了解决该问题,本文提出了一套不依赖于LVS流程进行寄生参数提取的策略,其关键思路是:



针对典型的单个器件,采用书写脚本script的方法来定义器件的terminal和用于寄生参数提取的layer,不通过lvs运行的方法来生成寄生参数提取的layer,保证了所有的layer都是按照用户意愿独立生成的图形。




下面是一个典型的nmos版图:



095734b8ks2kqhdy8lwely.png




其中它有D G S B的4个端口,通过script脚本定义其提取的layer图形方法是:首先找到每个节点的图形,并找到4个端口的图形。


095734fbhvu6h38ltyyuyo.png




根据上述坐标,书写脚本如下:

gdsRect $PW          $x00,$y00$x18,$y13   -term B


gdsRect $diffusion   $x04,$y04 $x09,$y09  -term S


gdsRect $diffusion   $x10,$y04$x15,$y09   -term D


gdsRect $GATE_conn   $x09,$y02 $x10,$y04  -term G


gdsRect $GATE_device $x09,$y04$x10,$y09  -term G


gdsRect $GATE_conn   $x09,$y09 $x10,$y11  -term G



gdsRect $M1          $x05,$y05$x08,$y08   -term S



gdsRect $M1          $x11,$y05$x14,$y08   -term D





注意该script语句中的Gate_conn, Gate_device的定义,它人工把poly图形分解为连接图形和device图形。针对device图形,可以通过mappingfile 的定义来忽略其与source / drAIn的器件电容。




注意该script语句中的diffusion定义,它人工把AA图形减掉了gate图形,得到左右2个不同节点的图形,从而可以用来测试lvs语句是否也做了对应的减法操作。



095734coqz6l7l6nssipo6.png





script语句生成的用于寄生参数提取的图形如上图所示,其中GATE_device与Gate_conn是2个不同的layer,Diffusion的左右2个图形是分开的。



再对比一下经典的LVS流程提取寄生参数的layer的图形如下:






095734hw9js277w5pp7sps.png


Lvs流程生成的用于寄生参数提取的图形如上图所示,注意它的layer名称都是lvs文件中的名称,与手工定义的layer名称是不一样的。


两个不同流程提取寄生参数的结果如下:



095734b8o3sxmpmohby605.png







二者结果接近,说明nmos的lvs语句针对寄生参数提取正确。









通过nmos的例子,可以得出如下结论:采用script模式描述寄生参数term的方法绕开了lvs可能存在的问题,更直接地定义寄生参数提取的图形,从而有可能发现lvs定义中不太准确的layer。



工具包的vgds/demo/目录下还有pmos, MIM, MOM, hv_npn等器件,运行可以分析其它器件的提取结果。



其中hv_npn的例子发现lvs的衬底定义与手工定义结果不一致,导致提取的寄生参数结果误差较大,证明了该方法可以发现lvs书写不准确之处。




下图是典型的hv_npn的图示:



095734baxnaqykhvvdmxan.png





095734p4wwiwwwkuoy71yw.png
095734qa1ei1zbp0dtpp1h.png


两种方法不一致的原因是,针对衬底图形的寄生参数提取,2种方法的layer定义不同。



Lvs流程的衬底layer有:BW, TW,PW, NW, NSD_BUTTED的5个layer,如下:



095734rbhwd60402x55x8t.png





Script流程的衬底layer有: PW, NW总计2种layer,3个图形,如下:






095734sxaw8yferrr8lbll.png




根据一般工艺的理解,p型tap对应的衬底是PW,N型tap对应的衬底是NW,上图中最外圈红色是p tap,次外圈绿色是ntap。因此人工书写script时,按照上述原理设置衬底,可能更符合实际。



原始的lvs文件中mapping file书写如下



PSD              SUBSTRATE  precedence=2



NSD              SUBSTRATE  precedence=2



PSD_BUTTED       SUBSTRATE  precedence=2



NSD_BUTTED       SUBSTRATE  precedence=2



PW              SUBSTRATE  precedence=2



NW              SUBSTRATE  precedence=3



TW              SUBSTRATE  precedence=1






红色字体部分是衬底导致寄生参数提取结果不一致的内容,这些NSD,PSD的layer应该对应到OD的工艺层,而不是对应到衬底层。






修改上述mappingfile的定义后,再次运行2个流程的寄生参数提取,结果如下:



095734tldamt3f03fz4all.png






    可以看到,二者结果一致,说明采用script流程的方法确实发现了采用lvs流程存在的可能隐含的不准确。






总结:为了验证经典的基于lvs流程的寄生参数提取结果是否合理,本文采用了书写脚本的方式定义单个器件的节点名和图形,从另一个角度验证其准确性。工具包的例子中,包含了NMOS, PMOS, MIM, MOM, NPN等典型器件,分别采用2种不同方法验证寄生参数结果是否准确。



工具包中的各器件模板可以用于各种不同工艺,用户只需要修改一下模板中的layer层号,就可以用于其它不同工艺,减少了用户自己书写模板的工作。







上述功能目前可免费给fabless公司的工程师使用。


发表于 2021-2-20 21:14:31 | 显示全部楼层
侯老师你好,能否给发一份资料供学习和参考,邮箱1058092305@qq.com,期待你的回复,谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

×

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

GMT+8, 2024-11-25 17:08 , Processed in 0.045026 second(s), 9 queries , Gzip On, Redis On.

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