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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2751|回复: 2

[原创] 新春送大礼,vgds特色功能免费用

[复制链接]
发表于 2021-2-10 09:47:54 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 houjs 于 2021-2-12 08:13 编辑






新春佳节,对读者送出大礼:vgds的3大特色功能免费用,可下载附件使用。


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

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

3.  DRC结果的Browser功能




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



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


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

image.png




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


C143_101 142 143 1.15638e-14


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


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

image.png




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

image.png


     把它放大,显示如下:

image.png







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

image.png



放大显示如下:

image.png





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


image.png


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

image.png




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


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

image.png




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

image.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版图:

image.png


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

image.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语句是否也做了对应的减法操作。


image.png



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


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


image.png


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


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

image.png


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



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


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


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


下图是典型的hv_npn的图示:


image.png


image.png
image.png


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

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

image.png


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


image.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个流程的寄生参数提取,结果如下:

image.png


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


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

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


功能3:DRC错误的browser功能vge

image.png



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




vgds.lic.rar

409 Bytes, 下载次数: 14 , 下载积分: 资产 -2 信元, 下载支出 2 信元

license文件

vgds_64bit_20210202.part03.rar

16.21 MB, 下载次数: 13 , 下载积分: 资产 -6 信元, 下载支出 6 信元

工具包1

vgds_64bit_20210202.part02.rar

30 MB, 下载次数: 15 , 下载积分: 资产 -9 信元, 下载支出 9 信元

工具包2

vgds_64bit_20210202.part01.rar

30 MB, 下载次数: 15 , 下载积分: 资产 -9 信元, 下载支出 9 信元

工具包3

发表于 2021-2-19 15:15:37 | 显示全部楼层
发表于 昨天 10:26 | 显示全部楼层
感谢,我也是想知道的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-12-4 16:27 , Processed in 0.021053 second(s), 7 queries , Gzip On, Redis On.

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