热度 134| ||
1、电迁移效应是指当传输电流过大时,电子碰撞金属原子,导致原子移位而使金属断线。
2、寄生电阻会使电压产生漂移,导致额外噪声的产生; 寄生电容耦合会使信号之间互相干扰。
3、使得衬底电位会产生抖动偏差,这称为衬底噪声。
4、差分对主要使VGS匹配,而电流镜主要使ID匹配。
5、匹配器件要远离功率器件摆放,功耗大于50mw的就属于功率器件。
6、数字电路和模拟电路的gnd要分开。
7、 BindKey.il加载优先顺序:.cdsinit 文件中使用加载命令>工作目录>home目录>安装目录
8、天线比率(AR)是现在计算是否产生天线效应的标注:AR=导体面积/栅的面积。天线效应的产生几率跟天线比率成正比,也就是说AR的值越小就越不容易产生天线效应,尽量少用poly连线。反偏二极管能够泄放的原因在于,相比MOS管栅极与沟道间的薄氧化层击穿电压,反偏二极管的击穿电压更低,击穿后电子从二极管完成泄放,自然不会影响MOS管。
9、find . -name "*.cdslck" -exec rm -f {} \
10、常见LVS cmd file设置:
①LVS REPORT MAXIMUM 1000//ALL 报告结果的最大值,1000(数字可以改)或者全报。这句在RVE结果中只显示1000条错误;
②LVS POWER NAME “?VDD?”“?vdd?” “AVDD” 定义cell的power name,可以用通配符“?”来代替其他字符,比如VDD_IO,也会认为是power,也可以精确匹配,如”AVDD”,需要完全与AVDD一致的字符才会被认为是power。这句在RVE结果的ERC中会显示没有电源相关的错误,可以wavie;
③VIRTUAL CONNECT COLON YES/NO 是否通过冒号进行虚拟连接,比如cell内部的GND没有连接在一起,我们就可以通过冒号进行虚拟连接,将每一个GND的lable打成“GND:”,calibre就认为凡是打这个lable的net都是连接在一起的,在做顶层的LVS的时候这个选项必须选为“NO”;
④LVS compare case YES/NO 是否区分大小写,如果区分选择“YES”的同时还要增加2个语句: layout CASE YES 和SOURCE CASE YES;
⑤LVS FILTER UNUSED OPTION B D E O 过滤符合条件的器件,例如三端接地的mos等等每个字母代表不同的条件,具体的可以在pdf里查看。
⑥TEXT LAYER 131 ATTACH 131 metal1 将层号为131的layer定义为一个可以提取net信息的text层,并且将这层attach到metal1上,就是使用这层写的label可以提取attach的metal1信息。比如,我用131层写一个label“A”在metal上,那么在LVS中这条metal1就被认为是net“A”。上面的语句也可以分成2行来写:TEXTLAYER 131;ATTACH131 METAL1。
⑦PORT LAYER TEXT 131指将131层写的label定义为port,凡是使用131层打的label都被认为是port。
⑧TRACK PROPERTY MN ( nch ) L L 1 是指将一个model name为nch的NMOS的L 的比较精度设置为1%,即layout和source的比较阈度为-1%~+1%,如果超过了这个范围就会报property mismatch的错误。
11、电流源的输出支路加上cascode管,可以增大输出电阻,从而减小沟道长度调制效应对复刻电流精度的影响。(沟道长度调制效应:由于MOS管漏极和源极之间的电压差增大,实际反型沟道长度会逐渐减小)
12、有源器件(需要外加电源才能工作):mosfet,diode,bipolar;无源器件(无需外加电源即可显示其工作特性):电阻,电容,电感
13、模拟及混合信号类EDA软件:
①电路及版图设计工具:virtuoso (Cadence);②版图物理验证工具:Calibre(Mentor),老工艺还能用Assura(Cadence),dracura(Cadence更老,十几年前刚毕业那会儿用过);③版图参数提取工具:Star-RC(synopsys),Calibre XRC(Mentor),QRC(Cadence);④电路仿真工具:Hspice(Synopsys) ,Spectre(Cadence), ALPS;
14、Mark net突然点不亮了,在启动目录下找到隐藏文件.candence/dfll 里面有个 markNet文件夹,删掉就好。
15、用语句打印出层密度?//在DRC的rule file 里面添加语句,即可输出MTT.density文件里面显示芯片坐标以及密度,用相应的层次名称替换MTT,即可打印各个需要层次的密度
MTT.density{@output MTT density
DENSITY MTT_drc<=1.0 print MTT density
}
16、hcell主要用于LVS做层次化检查。run lvs的时候就不查这个block的内部连接关系了,把它当黑盒处理,只要保证和Port相关的没有问题就好了。Xcell主要用于后仿。主要用于提取门级后仿寄生。xcell指定pex不做寄生抽取的cell,加入xcell列表中的pcell器件(主要和rf器件相关)或者模块则不会再提取自己内部的寄生。
17、三家EDA 寄生参数抽取工具,分别是StarRC(synopsys), XRC(Mentor),QRC(Cadence),其中QRC现在有个升级版本Quantus,但是由于calibre在DRC 和LVS方面太强,所以一般都会提供calibre LVS + StarRC 或者QRC的flow,都是用calibre LVS 的database,那model之间能否互相转换呢?答案是肯定的。
以“StarRC 转XRC flow”为例:
starRC rule 都会提供如下的文件:1、calibre LVS rule;2 、itf file(option);3、query;4、xxx.nxtgrd;5、xxx.layermap。
这几个文件的作用如下:
1、lvs 文件是在run RC前需要给StarRC 产生的database,这里一般会产生一个CCI(Calibre Connectivity interface)的database,所以一般也叫CCI flow。QRC现在有个升级版本Quantus,QCI 为(Quantus Connectivity Interface)
2、第二个itf 文件,是StarRC的工艺描述文件,描述需要抽RC的layer,以及介质层,主要是各种工艺参数,这个有可能fab不给你,那后面如果要转model 就需要多一步。这个工艺描述文件在starRC里就是这个itf文件,而在XRC里叫mipt 文件。
3/4/5、后面三个是run StarRC的必要文件,其中nxtgrd 就是用itf 产生的model文件,类似于calibre xrc 中的rules.R 和 rules.C.
重点:把starRC 转成calibreXRC主要过程就是把这个nxtgrd 转成rules.R 和 rules.C
Nxtgrd 的产生过程如下:grdgenxo itf_file
rules.R 和rules.C的产生过程如下:xcalibrate -exec mipt.file
所以StarRC 转XRC的主要过程就是itf 转mipt,这个主要是用calibre提供的工具,命令如下:xcalibrate -itf2mipt2 itf_file。会在执行的folder下产生一个out.mipt
总结:
StarRC 转XRC其实只需要两步:
Step1、itf 转mipt,xcalibrate -itf2mipt2 itf_file
step2、产生rules.R 和rules.C,xcalibrate -exec -turbo 64 mipt.file
这里加了turbo 主要是这个过程非常漫长,越是先进节点越慢,主要是mipt 太复杂,需要进行大量的仿真,这里根据实际情况用multi cpu来run,64 是total cpu个数。
如果fab没有提供itf 文件就需要用nxtgrd来转一个,具体命令如下:grdgenxo -nxtgrd2itf -i nxtgrd_file -o itf_file
18、寄生电容一般可分为本征(intrinsic)和耦合(coupled)两种 :
本征电容是指,导电层到衬底的电容,有intrinsic plate和intrinsic fringe这两种类型;
耦合电容是指,导电层在不同网线之间的电容 ,有nearbody、crossover fringe和crossover plate这三种类型。
网表提取的两种脚本命令方法:
① https://max.book118.com/html/2017/0630/119296245.shtm
Calibre XRC一般会生成三个网表文件:design.***、design.***.pex 和 design. ***. topcell. pxi。
design. ***文件中是电路的实际逻辑网表信息,并包含后两个网表;
design. ***. pex文件中是寄生参数网表信息,实际逻辑上的每个节点都会生成一个单元,该单元中包含从该节点上提取的RC参数
design. ***. topcell. pxi文件中是网线连接信息和各网线间的寄生耦合电容模型,它把每个节点所衍生的新节点连接到逻辑电路中,它包含了design. ***. pex文件。
如果只提取寄生电容模型,则不会衍生新节点,所以不会产生*. pex文件;
寄生本征电容直接在输出网表文件中给出,寄生耦合电容在*. pxi文件中给出,并被输出网表文件调用。
19、查找skill函数在哪个路径:①在.cdsinit中添加如下sstatus debugMode t;②在ciw中,输入whereIs(procedure_name)
20、进行版图LVS验证时出现“missing instance”错误,出现instance未定义问题,spi 网表需要 include PDK 目录里面的一个文件,TSMC叫source.added,SMIC叫empty_subckt.sp,里面定义的就是基本器件(PMOS、NMOS、电阻、电容),其实就是个带端口的空网表。include进网表即可。
方法一:
1)从schematic或者layout的菜单栏中点击Calibre->Setup->Netlist Export Setup;
2)在弹出的窗口中Include File一栏,填入empty.subckt.sp的正确地址;
3)点击OK。
方法二:
配置文件.cdsinit中加入下面语句
cdlOutKeys=list(nil
'incFILE "路径/empty_subckt.sp";
)
或者
when('boundp('cdlOutKeys) cdlOutKeys = list(nil))
cdlOutKeys->incFILE = "路径/subckt.cdl"
方法三:
只要在calibre 做lvs的界面中,找到inputs这栏中Netlist 下Spices Files中 xx.src.net文件,在这个文件中添加如下语句:.INCLUDE 路径/source.added就可以。
如果没有source.added这个文件,就自己写到*.src.net文件里,格式如下
.SUBCKT MOSCAP_RF PLUS MINUS
.ENDS
.SUBCKT hrpolyu3 PLUS MINUS B
.ENDS
写到netlist就好了
方法四:
calibre lvs窗口,点击inputs->在Netlist的Spice Files中添加文件,这里可选填***.cdl,empty_subckt.sp,..多个文件,点add,就行。然后点OK,我添加了LVS中的empty_subckt.sp。
21、在layout/schematic菜单栏上添加菜单选项,skill脚本:E:/IC资料整理/公众号资料/模拟IC毛客儿/在layout_schematic view中添加menu.mhtml
22、
① 不加载当前的cdsinit启动virtuoso:virtuoso -nocdsinit
② unload cdsenv file也比较简单,在ternimal输入:setenv CDS_LOAD_ENV false。如需要指定load cdsenv file的位置,也可以通过这个env实现。
23、创建多层的Guard Ring,特别详细:E:\IC资料整理\公众号资料\模拟IC毛客儿\创建多层的Guard Ring.mhtml
24、Gate level 与Transistor level的区别:
综述:transistor level 是把layout全部打散后进行寄生参数提取,精度高,提取会更真实些,但数据量大;gate level是将xcell中的器件当成理想器件,不再进行寄生参数提取。
①一般来说,Gate level抽取方式作为寄生抽取的默认设置。Gate level一定要与xcell搭配使用,加了xcell会将电容识别为pcell,不会重复抽取电容的金属间的寄生电容,也不会抽取两个电容之间金属的寄生电容。
②Transistor level精度高用这个,它是把电容打散,因此既会抽取电容本身的电容,还会抽取电容打散的金属间的寄生电容,还会抽取两个电容之间金属的寄生电容,对于Transistor level重复提取的解决办法就是在pex进行语句输入,屏蔽掉MOM电容。语句添加方法如下:
PEX IGNORE CAPACITANCE DEVICE metal1 metal2 metal3 MOMDMY_2T
在run pex时,在PEX Options的选项Include的第二个空白的地方加上上面的命令,同时勾上第二个空白上面的选项Include Rule Statements
试试这个。
参考链接:
寄生参数提取的transistor level, cell level, full hierarchical有何不同 (baidu.com)
如何避免MOM/MIM的寄生电容被重复提取? (baidu.com).
25、实现在Library Manager界面双击view以只读方式打开:这个可能是很多同学都希望实现的功能,在.cdsenv文件中按照以下方式即可实现:
cdsLibManager.main dblClickEditCellView boolean nil
26、shell下运行virtuoso的skill脚本,就是 nogui+replay,具体如下:
virtuoso -nograph -replay xxxx.il -log xxxx.log
27、
①浅槽隔离(Shallow Trench Isolation)效应:利用高度各向异性反应离子刻蚀在表面切出了一个几乎垂直的凹槽,该凹槽的侧壁被氧化,然后淀积多晶硅填满凹槽的剩余部分。在较为先进的CMOS工艺制成中,通常用STI的方法来完成有源器件的隔离。在substrate挖出浅槽时会产生压力的问题,所以对于相同长宽两个MOS管,由于对应的扩散区长度的不同而造成器件性能的不同,特别是对于电流Idsat和阈值电压Vth有重要影响。这种压力对于PMOS管和NMOS管的影响正好相反。PMOS管:电流随SA(SB)的增大而变小;NMOS管:电流随SA(SB)的增大而增大。提高MOS管源、漏两端的可共用性,这样可以降低STI效应。在有限的空间下,多加一些虚拟器件(Dummy device),可以增大MOS管源、漏两端的面积,从而降低STI效应。
②阱邻近效应(Well Proximity Effect):在离子注入制造工艺时,原子从掩模板的边沿开始扩散,在阱边附近的地方硅片表面变得密集,结果就是,阱表面浓度会随着距离掩模板的边沿的远近而有所不同,因此整个阱的掺杂浓度是不均匀的,这种不均匀造成MOS管阈值电压的不同,还有其它的电性能也有所不同,它会随着距离阱边距离的不同而不同。对于同一个器件,固定的长宽,固定的源漏区(SA、SB)大小,0.13um工艺下,测试3.3V NMOS管的Vth随SC的距离的变化:当NMOS管距离阱边比较近的时候,Vth会增大约50mV。Vth也会随着源漏端的方向而有所不同,达到约有10 mV的偏差。当NMOS管距离阱边比较远的时候,如SC的距离大于3um,Vth基本上就没有多少的偏差。在版图布局规划阶段,优化阱的布局以减小阱的个数。注意关键器件的布局,尽量将关键器件放置在离阱的边界比较远的地方。多加一些虚拟器件(Dummy device),这样就可以使关键器件远离阱的边缘。以上可以减小或避免WPE效应。
28、mos管做esd时,
①为什么要求漏端到poly的距离大于源端?
作用1:增加各个单元的分布式镇流电阻,让整个ESD mos管更均匀的导通。
作用2:在ESD电流泄放的时候,电流是通过D往S、sub跑的,此时D-sub结上有电压、大电流,就会有大功耗、发热,短时间足以使D-sub结区域的体硅温度升高到使CT孔融化的高温(也就是450度左右即可)。加大漏极的CT孔到gate的间距,可以使CT孔远离发热区。
作用3:拉大漏区可以增大漏区电阻,这样寄生的BJT可有更高的点位,使BJT导通,可以更快的泄放掉漏端的大电流。
②为什么源极孔到gate的间距不需要加大这么多呢?
因为源极到发热的D-sub结间有低浓度的沟道区,导热系数较低;相反的漏极孔到D-sub结是高浓度漏区,甚至是有salicide(硅化物)导热系数大得多。
29、走线倒角,先用S选中需要倒的角,然后Edit->Advanced->Modify_Corner, 可以倒圆角和斜角,用于TOP 给宽线倒角,可以选中所有需要的角一次性倒角。
30、提取Pad坐标,Tools->Pad opening info,选择好PAD使用的Layer和对应Label Layer,确定后会出报告,如果Label没在Pad上,名字那一列会显示NONAME,同时也可以用于检测自己的Label有没有在PAD上面。
31、自顶而下消除所有的ruler :ctrl + shift + k