600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > Silvaco TCAD仿真学习Lesson1——Atlas仿真

Silvaco TCAD仿真学习Lesson1——Atlas仿真

时间:2021-11-09 03:31:38

相关推荐

Silvaco TCAD仿真学习Lesson1——Atlas仿真

今天学习了Silvaco TCAD的第一节课,大概了解了仿真的基本流程,以MOS为例,来和大家分享啦~分享如下:

第一步:设计结构(有了结构模型,才能在上面进行模拟呐。)

go atlas simflags="-P 3" #使用atlas工具,simflags="-P 3"表示使用3颗CPU执行仿真计算

mesh width=1 #这个就是设置网格基准,默认为1就ok

#下面是设置网格mesh,坐标单位默认是微米(um). loc表示在哪里画一条网格线,spac表示在loc !附近! 按照设定值进行画网格线

x.mesh loc=0 spac=0.05

x.mesh loc=0.1 spac=0.02

x.mesh loc=0.35 spac=0.01

x.mesh loc=0.6 spac=0.1

x.mesh loc=0.85 spac=0.01

x.mesh loc=1.1 spac=0.02

x.mesh loc=1.2 spac=0.1

#上面是在垂直x轴方向画线,下面是在垂直y轴方向上画线

y.mesh loc=-0.3 spac=0.05

y.mesh loc=-0.21 spac=0.05

y.mesh loc=-0.01 spac=0.002

y.mesh loc=0 spac=0.002

y.mesh loc=10 spac=1

#下面是对上面的网格进行区域划分,region关键字,然后区域编号,给出区域(矩形)范围,给定区域材料

region number=1 x.min=0 x.max=1.2 y.min=0 y.max=10 material=silicon

region number=2 x.min=0 x.max=1.2 y.min=-0.3 y.max=0 material=oxide

region number=3 x.min=0.35 x.max=0.85 y.min=-0.21 y.max=-0.01 material=poly

region number=4 x.min=0.35 x.max=0.85 y.min=-0.3 y.max=-0.21 material=aluminum

region number=5 x.min=0 x.max=0.1 y.min=-0.3 y.max=0.0 material=aluminum

region number=6 x.min=1.1 x.max=1.2 y.min=-0.3 y.max=0.0 material=aluminum

#设置电极,electrode是关键字,reg表示设置的区域,name就是电极名字啦~

electrode reg=4 name=gate

electrode reg=5 name=source

electrode reg=6 name=drain

electrode bottom name=substrate

#下面是对各个区域做掺杂,doping还是关键字,uniform表示均匀掺杂,然后设置要掺杂的区域,选定p/n型掺杂,给定掺杂浓度~~

doping uniform region=1 x.min=0 x.max=1.2 y.min=0 y.max=10 p.type concentration=1e17

doping uniform region=3 x.min=0.35 x.max=0.85 y.min=-0.21 y.max=-0.01 n.type concentration=5e20

#和上面一样哦,uniform -> gauss 就是表示高斯掺杂,区域只给x值,表示横向扩散,然后是结深,扩散比率(一般都是0.6~0.7喔)

doping gauss region=1 x.min=0 x.max=1.2 junc=0.02 rat=0.6 p.type concentration=5e17

doping gauss region=1 x.min=0 x.max=0.35 junc=0.05 rat=0.6 n.type concentration=4e18

doping gauss region=1 x.min=0.85 x.max=1.2 junc=0.05 rat=0.6 n.type concentration=4e18

doping gauss region=1 x.min=0 x.max=0.15 junc=0.2 rat=0.6 n.type concentration=5e20

doping gauss region=1 x.min=1.05 x.max=1.2 junc=0.2 rat=0.6 n.type concentration=5e20

#下面就是保存,输出文件,命名为nMOS_atlas.str

save outf=nMOS_atlas.str

#quit是程序结束关键字,就不会再执行下面的代码啦,以上基本就完成了MOS结构的制作了,然后就可以在这个结构之上做模拟,分析电压、电流等特性啦~

quit

go atlas simflags="-P 3"#设置使用三颗CPUmesh width=1x.mesh loc=0spac=0.05x.mesh loc=0.1spac=0.02x.mesh loc=0.35spac=0.01x.mesh loc=0.6spac=0.1x.mesh loc=0.85spac=0.01x.mesh loc=1.1spac=0.02x.mesh loc=1.2spac=0.1y.mesh loc=-0.3spac=0.05y.mesh loc=-0.21spac=0.05y.mesh loc=-0.01spac=0.002y.mesh loc=0spac=0.002y.mesh loc=10spac=1region number=1x.min=0 x.max=1.2 y.min=0 y.max=10 material=siliconregion number=2 x.min=0 x.max=1.2 y.min=-0.3 y.max=0 material=oxideregion number=3x.min=0.35 x.max=0.85 y.min=-0.21 y.max=-0.01 material=polyregion number=4 x.min=0.35 x.max=0.85 y.min=-0.3 y.max=-0.21 material=aluminumregion number=5x.min=0 x.max=0.1 y.min=-0.3 y.max=0.0 material=aluminumregion number=6 x.min=1.1 x.max=1.2 y.min=-0.3 y.max=0.0 material=aluminumelectrode reg=4 name=gateelectrode reg=5 name=sourceelectrode reg=6 name=drainelectrode bottom name=substratedoping uniform region=1 x.min=0 x.max=1.2 y.min=0 y.max=10 p.type concentration=1e17doping uniform region=3 x.min=0.35 x.max=0.85 y.min=-0.21 y.max=-0.01 n.type concentration=5e20doping gauss region=1 x.min=0 x.max=1.2 junc=0.02 rat=0.6 p.type concentration=5e17doping gauss region=1 x.min=0 x.max=0.35 junc=0.05 rat=0.6 n.type concentration=4e18doping gauss region=1 x.min=0.85 x.max=1.2 junc=0.05 rat=0.6 n.type concentration=4e18doping gauss region=1 x.min=0 x.max=0.15 junc=0.2 rat=0.6 n.type concentration=5e20doping gauss region=1 x.min=1.05 x.max=1.2 junc=0.2 rat=0.6 n.type concentration=5e20save outf=nMOS_atlas.strquit

第二步,在上一步设计的结构上做物理特性的模拟!

ok,下面就做个漏极电流和漏极电压关系的分析案例:

go atlas simflags="-P 3" #使用atlas工具,simflags="-P 3"表示使用3颗CPU执行仿真计算

#下面导入网格文件 inf可以理解为 input file

mesh inf=nMOS_atlas.str

#选模型 就直接选择mos ,以后可以根据自己需要仿真的器件,选择合适的模型,具体怎么选,我现在还不懂嘿嘿。

models mos

#定接口interface,接口的意思就是半导体/绝缘体表面的参数,与缺陷有关,一般数据都是特定值,我也不知道该怎么选定,呜呜呜

interface qf=3e10

#定方法 ,method是关键字,使用牛顿newton的方法,具体是啥,此外还有哪些方法我就不知道了,,后面就是限制一下,不要陷入死的计算循环意思吧(我大概猜滴)

method newton itlimit=25 maxtrap=4

#初始化 会把四个电极(就是上面那个程序里定义的electrode)的值初始化为0

#下面是给出求解漏极电流和漏极电压变化过程的方案

#####IdVd@Vg=0.3 Vd=0~1V

solve init #解决方案初始化

solve vgate=0.3 #设置栅压0.3V

log outf=IdVd_Vg3.log #将计算结果记录到输出文件IdVd_Vg3.log中

solve vdrain=0 vstep=0.01 vfinal=1 name=drain #Vd从0变化到1V,每次增长0.01,增长一次,进行一次计算

log off #记录数据结束

第三步,从获得的数据中萃取需要的数据,比如最大值

#下面是萃取(extract) IdVd关系中在Vgate =0.3V时,最大电流值

#提取器件参数 @Vg=0.3

extract init inf=“IdVd_Vg3.log” #声明输入文件,也就是从上面保存的计算数据文件中进行萃取

extract name=“idsmaxVg3” max(abs(i.“drain”)) #萃取语句,一般不需要自己写,可以通过编辑器,按照自己需要萃取的内容,自动生成。使用方法:菜单栏中的commands -> syntax dialogs -> Extract Dialogs -> Device Extract 然后选定自己需要萃取的物理特性就ok了,这功能真香!!

quit #结束结束

#########IdVg @Vd=0.1 Vg=0~3Vgo atlas simflags="-P 3"#导入文件mesh inf=nMOS_atlas.str#选模型models mos#定接口interface qf=3e10#定方法method newton itlimit=25 maxtrap=4#初始化 会把四个电极的电压初始化为0solve init#初始条件solve vdrain=0.1log outf=IdVg.logsolve vgate=0 vstep=0.05 vfinal=3 name=gatelog off#下面这行是保存Vg=3V时的MOS图save outf=IdVg_Vg3.str#提取器件参数extract init inf="IdVg.log"extract name="nvt"(xintercept(maxslope(curve(abs(v."gate"),abs(i."drain"))))\-abs(ave(v."drain"))/2.0)quit#########IdVd @Vg=0.3 Vg=0.4 Vg=0.5 Vg=0.6 Vd=0~3Vgo atlas simflags="-P 3"#导入文件mesh inf=nMOS_atlas.str#选模型models mos#定接口interface qf=3e10#定方法method newton itlimit=25 maxtrap=4#初始化 会把四个电极的电压初始化为0#####IdVd@Vg=0.3 Vd=0~1Vsolve init#初始条件solve vgate=0.3log outf=IdVd_Vg3.logsolve vdrain=0 vstep=0.01 vfinal=1 name=drainlog off#下面这行是保存Vg=3V时的MOS图#save outf=IdVd_Vd2.str#####IdVd@Vg=0.4 Vd=0~1Vsolve init#初始条件solve vgate=0.4log outf=IdVd_Vg4.logsolve vdrain=0 vstep=0.01 vfinal=1 name=drainlog off#####IdVd@Vg=0.5 Vd=0~1Vsolve init#初始条件solve vgate=0.5log outf=IdVd_Vg5.logsolve vdrain=0 vstep=0.01 vfinal=1 name=drainlog off#####IdVd@Vg=0.6 Vd=0~1Vsolve init#初始条件solve vgate=0.6log outf=IdVd_Vg6.logsolve vdrain=0 vstep=0.01 vfinal=1 name=drainlog off#提取器件参数 @Vg=0.3extract init inf="IdVd_Vg3.log"extract name="idsmaxVg3" max(abs(i."drain"))#提取器件参数 @Vg=0.4extract init inf="IdVd_Vg4.log"extract name="idsmaxVg4" max(abs(i."drain"))#提取器件参数 @Vg=0.5extract init inf="IdVd_Vg5.log"extract name="idsmaxVg5" max(abs(i."drain"))#提取器件参数 @Vg=0.6extract init inf="IdVd_Vg6.log"extract name="idsmaxVg6" max(abs(i."drain"))quit

下面给大家写一些小tips:

1.关于运行程序

a.保存并运行:保存程序,从第一行开始运行到第一个quit语句。后面的程序不会被执行哦

b.运行:就是从第一行开始运行,直到第一个quit语句结束。后面的程序不会被执行哦

c.run to line:这是一个标记,是个结束的flag,你在某一行给了这个标记之后,在运行的时候,就会运行到你所标记的位置而停止,前提是你标记的之前没有quit 语句哦

d.go to line:这也是一个标记,是个开始的flag,你在后一行给了这个标记之后,在运行的时候,就会从你标记的这里开始运行,而不是所有程序的第一行开始,直到运行至quit语句。

呜呜,about运行就说这么多吧,还有很多调试功能,一行一行执行的功能,等俺研究了在分享!~

2.关于查看运行结果

a.本文的程序第一部分就是搞了一个mos的二维结构图,保存在了.str文件,可以在DeckBuild的右侧Output里面双击打开,进行查看。所有的输出文件都可以从这里查看哦!~

b.另一种好用的查看方式是!选中自己代码中输出文件名,然后右击,选择Plot就可以了

c.可以同时打开多张结果图,如果第一张以后的图,想要单独显示,就用Plot方式打开,如果想和前面的图显示在一个框框,就用b方法,将Plot改选为Plot Append就ok,即使这样,也可以对打开的每幅图进行设置哦~超方便!

3.About保存运行过程

可以在DeckBuild下面的输出框中右击,选择save runtime ,然后给个名字.out就OK了,可以在Tools -> Sedit中打开查看文本格式,也可以直接用text文本打开查看。

呜呜呜,balabala 说这么多,学习编程最好的方法就是要跟着一点点做呐!!加油加加

微电子的初学者,好难好难

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。