微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > IC版图设计交流 > lvs command file定义三极管的问题(急)

lvs command file定义三极管的问题(急)

时间:10-02 整理:3721RD 点击:
bjt工艺中为了匹配把两个三极管共用发射极、基极,在定义device时识别层需要取基极,随着问题就出现了,如用前者的共射极、基极结构,器件识别出了问题,因为识别层是基极,而这里基极又共用了,所以识别不出是有两个器件,这种问题怎么解决?望高手解答!急?急?急?

没有谁规定了要用base来define bipolar吧

你是说三极管的识别层可以随便用个极定义吗?貌似跟三极管的结构有关系哦

好像一般识别层不能识别三极管的的某个极(就像识别电阻一样),只能识别是个三极管吧(去看看lvs怎么定义的吧)!我暂时还没见过共用到发射极了的。我见得最多的也就是共用集电极的!

只是识别层得选取一个特定的极,三极管的主要参数就是看射极的面积,但是如果射极都共用,那怎么区分器件?就这里不知道怎么去定义?

如果只是为了做LVS,那就可以随便找个你需要的极来做器件识别层。

三极管可以用任意极做识别层吗?

电路上共用发射极和基极,版图上不可能也画在一起吧顶多用金属连在一起!怎么会识别不出来了?

问题是版图也共用了,所以识别不出器件,这种情况咋整?

三极管的识别层不一定就是哪个极,纯粹就是为了识别一个三极管而已。所有device的识别都是这样



是的。

真不是随便哪个极都行,如:横向pnp,nwell做b极,nwell里的两个p+分别做c、e极,这种结构貌似就只能用nwell加mark层作为识别层,不过楼上可以用p+加mark层试下,我用P+怎么也识别不出来

不一定就是哪个极,你可以定义得复杂点,比如:
bjtpnp = ((nwell AND mark) INTERACT pdiff > 1
其实应该更复杂,只要能认出是这个device就好。
个人觉得横向PNP用emitter定义更好,当然device_layer要定义得比emitter更复杂。
不过我实在不能理解怎么共用基极和发射极,你说的跟我理解的共基极和共发射极并不一样;难道说一个NWELL里面有3个p+?

其实识别层就是要确定你选择的这个层是唯一性的,不会和你要提取的三极管之外的管子的识别层产生矛盾就行。如果一个识别层不够,你可以再增加一个识别层

有4个p+,其中3个是c极,一个是e极,nwell是b极,也就是通常指的二分之一、三分之一的器件,zero_0这种结构你用c极加mark做识别层可以识别出器件么?

唯一性这点是这样,但是像这种结构的三极管如用c极加mark做识别就是不行,randysong你可以试下用c极做识别看能否行?结构:nwell做b极,nwell里面的两个p+一个是c极另一个是e极。

关于工艺方面我还是理解不了,怎么知道是一个emitter和三个collector,而不是两个emitter和两个collector。
OK, 如果你可以区分出来,那将你的理解写成 command file 就好了。如果可以的话,请把 layout 贴图,那么我想会有人具体帮你解决这个问题的。

你的mark层是怎么画的?识别是肯定能识别的,只是语句有点复杂罢了。一个mark层不够,你可以增加一个mark层。比如markbjt覆盖整个三极管区域定义该器件为三极管,markc层覆盖C极,定义该区域为集电极,这样不就可以了?以前我写过各种三极管的提取语句。很久没有自己写了,所以现在无法给你写出来,你自己按照这个思路去写一下试试,我相信肯定是可以提取出来的。

根据面积判定,一般这种结构emitter在中间,collector分布在emitter周围,且emitter面积一般是最小的

如markbjt覆盖整个三极管区域定义该器件为三极管,那还是有问题啊,这种共射、共基极的结构如果这么定义只能识别出一个bjt吧?但是其实是三个bjt,现在的问题是怎么才能把这种结构识别出是三个bjt?

你理解错了,markbjt只是定义这个区域的器件是三极管,markc才是决定有几个bjt的标识层,如果你有3个集电极,那么你就画3个mark才的图形分别覆盖3个集电极,注意,这几个markc的图形不能有任何接触,这样就可以提取出来3个啊

是calibre还是dracula?我用calibre跑的,但只用一层mark层定义器件,即:识别器件及数目都是这一层的。randysong你说的那种方法怎么定义?一般的:deviceQ(PNP5)识别层CBE, 如你所说有两个识别层,格式是怎么样的?就在识别层那写两个识别层么?

好,既然是通过面积区分,那就可以做相应的 operation 了。Calibre 有 "size" "area" "expand" 等供你选择,也有可能会用到 "with neighbor" "hole" 等。
没有 design rule 和 PDK, 我只能做相应的猜测,而不敢斩钉截铁地告诉你该怎么做,希望能对你有所帮助。
另外,有几层标识层是由 Fab 决定,与你用什么验证工具无关。实在没办法的话,其实你也可以考虑加一层标识层,等项目完成时或者tape out 时再删掉 。

不过calibre、dracula的语法有区别,其实不一定要design rule的,知道结构的话就可以做出这个器件,现在主要讨论的是怎么去定义、识别这种结构的器件

不清楚哦,向前辈学习

我没有接触过横向PNP,而我对横向PNP的认识也仅仅是从《模拟电路版图的艺术》获得,里面的collector的是一个Ring,并且我并不觉得你描述得很清楚,因为有用的信息是非常多的。有时候你可以定义得很死,不一定非要涵盖你所理解的横向PNP。
  然后我想说,在你反驳之前最好先经过查找取证,就device的结构都经过近20条回复才让你不再纠结,我实在很怀疑在你提问这段时间到底花了多少时间看SVRF。
  如果你可以在我下班前(下午五点半)给出一张示意图,我肯定晚上可以给你做一个近乎正确的定义(但最好不要这样,自己思考肯定比别人给答案要学得多);否则我觉得我的耐心还是不够,我不想再回这个帖子了。



这是剖面图,结构很简单了,文字描述完全没问题的,zero_0强烈要求上图就上图先,用nwell加mark做识别层肯定没问题,zero_0你用P+加mark做识别层可以识别出器件么?我试了很久,识别不出。

抱歉,我昨天忘记看了,利用中午休息来答复吧。另外为我描述的不够清楚抱歉,因为我想知道的是更特别的信息,而不是泛泛的横向PNP,因为如果是我的话我就不打算定义得那么具有普遍性,只要在现在正在做的项目适用就好了,所以我想知道的其实是比如说:在这个项目里是否只有共基极&共发射极的横向PNP,3个collector是否面积一样(为多少),它们的形状怎样,它们与发射极的距离是否一样(为多少),是否在横向PNP外面都会圈guadring等等。这些信息只要在正在进行的project里具有适用性我觉得都可以利用,所以我其实是希望看到layout。
在我接触的project里bipolar的size最多也就三种,假设你的project也是这样,我想或许可以这样(假设emitter的size分别是1,2,3um^2):
bjtbase = nwell interact mark
bjtdiff= diff interact mark
bjtemit1 = area bjtdiff < 1.01
bjtemit2 = area bjtdiff < 2.01
bjtemit3 = area bjtdiff < 3.01
bjtecoll1 = area bjtdiff > 1
bjtecoll2 = area bjtdiff > 2
bjtecoll3 = area bjtdiff > 3
bjtbase1 = (bjtbase enclose bitcoll1) and (bjtbase enclose bjtemit1 == 1)
bjtbase2 = (bjtbase enclose bitcoll2) and (bjtbase enclose bjtemit2 == 1)
bjtbase3 = (bjtbase enclose bitcoll3) and (bjtbase enclose bjtemit3 == 1)
pnpcoll1= bjtcoll1 inside bjtbase1
pnpcoll2= bjtcoll2 inside bjtbase2
pnpcoll3= bjtcoll3 inside bjtbase3
pnpemit1 = bjtemit1 or mark
pnpemit2 = bjtemit2 or mark
pnpemit3 = bjtemit3 or mark
dev q(pnp) pnpcoll1 bjtcoll1 bjtbase pnpemit1
dev q(pnp) pnpcoll2 bjtcoll2 bjtbase pnpemit2
dev q(pnp) pnpcoll3 bjtcoll3 bjtbase pnpemit3
我不太确定这是否可行,因为我需要更多的信息。

Calibre的我没有搞过,不过类似,看用什么方式去识别了。既然你仅仅是为了正确的识别和LVS,那你可以多用一些层(版图中用不到的,做完LVS可以删除的)作为Mark就行了啊,比如markbjt和markc
pnpc' = p inside markbjt
pnpc=p inside pnpc'
然后再分别定义出e区和b区,就应该可以提取出来了吧?

明白了,zero_0你是用面积来区别器件的,以前真没想到这一点,这还真不失为一种好方法,现在搞明白了一点,就是BJT器件定义是可以随便用哪个极做识别都可以的,只是要注意下其3个极之间的互联关系,用面积去区别也很好区分,zero_0的耐心其实很好哈,写的那么详细 非常感觉哈

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top