最近学习silvaco仿真软件的学习,网上的学习资料真的比较少,幸运翻到silicon-monologue同学的学习笔记,清晰易懂,简单明了。不但提供了思路而且还提供了学习的方法。silicon-monologue同学将自己的学习过程整理成笔记和文档发送在CSDN上的做法为我提供了大大的方便可以说是解决了燃眉之急。现今,我仿照他的方法将我的学习记录也发布在网上,既是对我自己的勉励通过面对大众逼迫自己精益求精也是为silvaco软件的学习提供一份学习资料为后来的silvaco软件的学习者提供方便之门。
1、按照例子重写代码
代码:
go atlas
mesh space.mult=1.0
x.mesh loc=0.00 spac=0.5
x.mesh loc=3.00 spac=0.2
x.mesh loc=5.00 spac=0.25
x.mesh loc=7.00 spac=0.25
x.mesh loc=9.00 spac=0.2
x.mesh loc=12.00 spac=0.5
y.mesh loc=0.00 spac=0.1
y.mesh loc=1.00 spac=0.1
y.mesh loc=2.00 spac=0.2
y.mesh loc=5.00 spac=0.4
region num=1 silicon
electr name=anode x.min=5 length=2
electr name=cathode bot
doping n.type conc=5.e16 uniform
doping p.type conc=1e19 x.min=0 x.max=3 junc=1 rat=0.6 gauss
doping p.type conc=1e19 x.min=9 x.max=12 junc=1 rat=0.6 gauss
doping n.type conc=1e20 x.min=0 x.max=12 y.top=2 y.bottom=5 uniform
save outf=diodeex01_0.str
tonyplot diodeex01_0.str -set diodeex01_0.set
model conmob fldmob srh auger bgn
contact name=anode workf=4.97
solve init
method newton
log outfile=diodeex01.log
solve vanode=0.05 vstep=0.05 vfinal=1 name=anode
tonyplot diodeex01.log -set diodeex01_log.set
quit
2、分块解读代码
go atlas simflags="-P 4"
# 调用atlas二维器件仿真器,simflags="-PX"能够调用cpu的数量如果不设置程序默认只调用一个cpu
mesh space.mult=1.0
# space.mult设置全局网格的缩放因子,默认值是1.当mult>1时,会产生一个更加粗糙的全局网络,届时仿真速度会比较快。当mult<1时,会产生一个更加精细的全局网络,此时仿真结果更加准确,但是仿真速度也会变慢。
x.mesh loc=0.00 spac=0.5
x.mesh loc=3.00 spac=0.2
x.mesh loc=5.00 spac=0.25
x.mesh loc=7.00 spac=0.25
x.mesh loc=9.00 spac=0.2
x.mesh loc=12.00 spac=0.5
y.mesh loc=0.00 spac=0.1
y.mesh loc=1.00 spac=0.1
y.mesh loc=2.00 spac=0.2
y.mesh loc=5.00 spac=0.4
#进行网格设计,在器件仿真中网格设计的总体区域就是能够进行仿真建模的区域。x.mesh和y.mesh分别用来指定水平和垂直用微米作为单位的网格格点的位置,x和y的正负值均可以使用。ATLAS仿真器会根据space的大小自发的决定网格线的疏密程度。
region num=1 silicon
#这里面是定义区间x(0,12)y(0,5)整个区间的材料是silicon,在Dialog(command模块中的syntax Dialogs)中进行定义的语言是这样的:#region number=1 ix.l=0 ix.h=12 iy.l=0 iy.h=5 material=Silicon
electr name=anode x.min=5 length=2
electr name=cathode bot
#定义电极:定义x(5~7)y(0,0)为设备的阳极,定义设备的整个底面为设备的阴极。在Dialog中编写的语句是这样的:#
# #1=anode
electrode name=anode number=1 x.min=5 x.max=7 y.min=0 y.max=0
# #1=cathode
electrode name=cathode number=1 x.min=0 x.max=12 y.min=5 y.max=5
注意这里设置的时候最大值一定要大于最小值,可以写完之后在deck面板上进行修改。
doping n.type conc=5e16 uniform
# 定义掺杂:定义材料整体为n型 掺杂浓度是5e16 uniform是均匀掺杂
doping p.type conc=1e19 x.min=0 x.max=3 junc=1 rat=0.6 gauss
doping p.type conc=1e19 x.min=9 x.max=12 junc=1 rat=0.6 gauss
#定义掺杂:p型掺杂 掺杂浓度为1e19参杂的区间分别为x∈(0,3)y∈(0,0)和x∈(9,12)y∈(0,0)掺杂的结深为1微米,横向扩散长度为0.6,这里是高斯分布的掺杂。一般来说掺杂为高斯分布是更加符合掺杂的真实情况的。
doping n.type conc=1e20 x.min=0 x.max=12 y.top=2 y.bottom=5 uniform
#定义掺杂:n型掺杂,掺杂浓度为1e20,掺杂区见为 x∈(0,12)y∈(2,5)
save outf=diodeex01_0.str
tonyplot diodeex01_0.str
#保存器件结构并用tonyplot显示,这里的"-set diodeex01_0.set"是指在tonyplot中以 diodeex01_0文件的设置格式来显示包括设置的disolay中的mesh、contours、电场等设置,其实可以不用设置是没有关系的,设置了如果你没有相应的diodeex01_0文件程序反而会报错。
model conmob fldmob srh auger bgn
contact name=anode workf=4.97
#选用模型:conmob(浓度以来迁移率模型)fldmob(平行电场依赖模型)srh(schokly-Read-Hall复合模型)auger(俄歇复合模型)bgn(能带变窄模型)
solve init
#计算初始化所有的电极上施加的电压都归零
method newton
#数值计算方法为newton
log outf=diodeex01.log master
#提前定义下面的曲线文件
solve vanode=0.05 vstep=0.05 vfinal=1 name=anode
#计算阳极电压为从0.05~1v步进为0.05v时的参数变化曲线,这里我在tonyplot中显示的曲线为阳极电流相对于阳极电压的变化曲线。显示曲线为什么类型,怎么设置暂时我还不清楚。
tonyplot diodeex01.log
#画出该曲线
quit
3、网格图
4、 电极图
5、PN结的结存在位置
6、掺杂图
7、掺杂的浓度曲线(在x=6和x=10处进行切割)
8、器件的IV特性曲线
伏安特性曲线没弄明白为什么跟silicon-monologe的伏安特性曲线刚好是相反的,还有他的掺杂浓度曲线中可以同时显示n型和p型杂质的浓度图是怎么操作的?下去要好好的思考或者问问师兄怎么做。