很多同学问我关于Sentaurus Device材料的问题,所以索性专门写一篇文章,详细的讲解一下sdevice里物理模型材料的问题。
材料参数是什么
材料参数是物理模型具体化的参量,比如,对于电子电流模型:
其中,
其中,器件所涉及的所有物理内涵都体现在物理模型和模型参数上,这两者缺一不可。模型参数设置是否合理,将直接决定器件仿真的准确性,甚至正确性,大家在仿真时,需要特别留意。
材料参数在哪里
Sentaurus TCAD中的模型参数的组织方式如下:
- Sentaurus内为绝大多数半导体材料提供了模型参数,保存在安装目录下的MaterialDB文件夹中,其中包含了,Si、Ge、SiO2等材料的参数。以Si为例,Si的参数文件命名为:Silicon.par。这部分参数是所有project和所有用户仿真的默认参数,为了防止用户随意修改,这部分参数文件一般是不可以修改的,大家也切记不要去修改。
- 在Sentaurus内用户建立的project目录下,用户可以建立自己的par文件。通过sdevice的cmd文件对该文件引用,即可用于为器件仿真指定自定义的模型参数。这部分模型参数仅在当前project内有效,大家可以随意、任性、愉快地修改,不会影响其他仿真。在sdevice的cmd文件中的引用par文件的命令为:
File {
Parameter = "n30_des.par"
......
}
或者在swb的sdevice里,采用@parameter@代替,在具体的某个node下,swb会使用对应的node编号生成该文件。
File {
Parameter= "@parameter@"
......
}
注意:请确保前面没有* 或#注释符,否则,即使有这句话,也不起作用,例如下面:
File {
Grid= "@tdr@"
Plot= "@tdrdat@"
Current="@plot@"
Output= "@log@"
* Parameter= "@parameter@" 这一句话被注释掉了,写了和没写一样
}
MaterialDB的路径
MaterialDB文件路径为:
sentaurus安装目录/L_2016.03-SP2/tcad/L-2016.03-SP2/lib/sdevice/MaterialDB
如果sentaurus的安装目录是:/usr/synopsys/sentaurus/,那么该路径是:
/usr/synopsys/sentaurus/L_2016.03-SP2/tcad/L-2016.03-SP2/lib/sdevice/MaterialDB
需要注意的是:MaterialDB文件夹下有不同版本sentaurus的模型参数。随着sentaurus版本更新,模型参数也会更新,所以可能导致sentaurus版本变了,一样的仿真却得出不同的结果。因此,为了保证更换sentaurus版本后的仿真结果一致,请确保参数文件的版本一致。
参数调用顺序
当一个仿真开始时,系统会检查参数文件,确定每个被启用的物理模型的模型参数,其流程如下:
- 如果在sdevice的cmd文件中,未指定par文件的路径,即input中没有Paramter=@parameter@一行,那么系统将自动调用MaterialDB内的默认物理模型参数;
- 如果在sdevice的cmd文件中,指定了par文件的路径,并且该文件在当前project目录下,sdevice将优先读取该par文件内的模型参数:如果par文件内存在模型参数,就会用该模型参数替代默认的模型参数进行仿真;如果发现未在该par文件中定义的模型参数,则系统将使用MaterialDB内的默认模型参数进行补充。
- 如果某个物理模型必须的物理参数,在用户定义par以及MaterialDB内的默认参数中均未定义,那么仿真就会报错并结束。如果在Math中添加-UndefinedModel命令,虽然仿真可以正常运行,但是这个缺失模型参数的物理模型是未被激活的,请同学们切记,避免仿真结果与预期不符。
上述流程见下图:
par参数文件的参数定义格式
大家可以打开Silicon.par文件,查看默认参数的定义格式,一般情况下,一个模型参数的格式如下:
model_name {
# 一些注释,关于模型的解释,以#开头
par1 = 10 #[V]
par2 = 10,20 #[cm^2/(Vs)]
}
- model_name为物理模型的名称,例如ConstantMoblity,为恒定迁移率模型
- 以#开头的为注释,帮助理解
- par1和par2定义的是模型参数的取值
- #[V]和#[cm^2/(Vs)] 为模型参数的单位,该处注释仅做提示,修改后不起作用,请一定按照该单位修改模型参数,即你不可以将#[V] 修改成 #[mV],然后将10改成10000,因为#[V]仅做单位的提示,不是单位的定义,切记。
- par2参数为双参数,修改时也应为双参数,例如迁移率模型中 mumax = 1200,400 分别表示最大电子迁移率和空穴迁移率,缺一不可。
下面看一个实例,请对应理解:
ConstantMobility:
{ * mu_const = mumax (T/T0)^(-Exponent)
mumax = 1.4170e+03 , 4.7050e+02 # [cm^2/(Vs)]
Exponent = 2.5 , 2.2 # [1]
mutunnel = 0.05 , 0.05 # [cm^2/(Vs)]
}
如何在swb中修改模型参数
修改一个project的模型参数,有两种方法:
第一种方法,从MaterialDB中复制一份参数文件到当前project目录下,并修改模型参数:
- step 1 在sdevice上右键,选择include Materials
- step 2 打开parameter文件
此时,par文件被添加了几行代码,逐行解释如下:
第 1 行:这是一句宏命令,定义了一个变量,名为ParFileDir,其值是一个点(.)。在linux里,(.)代表的是当前目录,即project的目录。
#define ParFileDir .
第3-5行:定义了SiO2的参数,其中,#includeext 为插入文件,ParFileDir/SiO2.par是文件名, 即将"ParFileDir/SiO2.par"文件的内容插入到本文中。
Material="SiO2" {
#includeext "ParFileDir/SiO2.par"
}
ParFileDir的内容是(.),即当前目录,所以引用的文件是./SiO2.par,即当前project目录下的SiO2.par文件。
第6-11行:与3-5行类似,需要注意的是,你并没有在project目录下新建SiO2.par, Silicon.par和Silcide.par文件,这三个文件是swb根据用户引用,从MaterialDB目录下自动复制过来的!
- Step 3 修改project目录下的SiO2.par、Silicon.par、Silicide.par这三个文件内的模型参数,即可完成参数修改。
第二种方法,直接在par中定义某个材料或区域的模型参数
假如需要修改Silicon材料的恒定迁移率ConstantMobility,可以直接在sdevice的par文件内添加ConstantMobility的定义,只不过在该定义前冠以Material = "Silicon"命令:
Material = "Silicon" {
ConstantMobility:
{ * mu_const = mumax (T/T0)^(-Exponent)
mumax = 1.4170e+03 , 4.7050e+02 # [cm^2/(Vs)]
Exponent = 2.5 , 2.2 # [1]
mutunnel = 0.05 , 0.05 # [cm^2/(Vs)]
}
}
即可完成对Silicon迁移率模型参数的修改。
如何判断模型是否修改成功
在sdevice的.out文件中观察修改结果。
假如将Silicon的参数修改如下,即将电子迁移率修改为12345,空穴修改为6789(这两个值不合理,仅做示范)。
Material = "Silicon" {
ConstantMobility:
{ * mu_const = mumax (T/T0)^(-Exponent)
mumax = 12345 , 6789 # [cm^2/(Vs)]
Exponent = 2.5 , 2.2 # [1]
mutunnel = 0.05 , 0.05 # [cm^2/(Vs)]
}
}
此时,运行sdevice,观察.out文件,会发现如下输出:
如果在.out文件中观察到参数修改的信息,即完成修改。
如何仿真不同模型参数对器件特性的影响
如需要研究不同模型参数对器件特性的影响,可以在sdevice的par文件中,插入@变量名@的方式进行批量修改。例如:
假如需要仿真电子迁移率从10变化到100,对器件特性的影响:
第一步:打开sdevice的par文件,修改参数文件,在参数处,定义一个变量eMobility
Material = "Silicon" {
ConstantMobility:
{ * mu_const = mumax (T/T0)^(-Exponent)
mumax = @eMobility@, 6789 # [cm^2/(Vs)]
Exponent = 2.5 , 2.2 # [1]
mutunnel = 0.05 , 0.05 # [cm^2/(Vs)]
}
}
第二步:在swb的sdevice下,新建eMobility的变量,并赋值10至100,间隔为10:
仿真上述10个experiments,即可研究不同eMobility对器件特性的影响。
如何在一个器件的不同区域使用不同的材料参数
有同学问我,如果想在同一个器件,同一个材料的不同区域,使用不同的参数,该如何仿真呢?
参考方法如下:
使用Region命令,示例如下:
假如reg1区域电子迁移率为10,reg2区域电子迁移率为20,那么修改sdevice的par文件如下:
Region = "reg1" {
ConstantMobility:
{ * mu_const = mumax (T/T0)^(-Exponent)
mumax = 10 , 6789 # [cm^2/(Vs)]
Exponent = 2.5 , 2.2 # [1]
mutunnel = 0.05 , 0.05 # [cm^2/(Vs)]
}
}
Region = "reg2" {
ConstantMobility:
{ * mu_const = mumax (T/T0)^(-Exponent)
mumax = 20, 6789 # [cm^2/(Vs)]
Exponent = 2.5 , 2.2 # [1]
mutunnel = 0.05 , 0.05 # [cm^2/(Vs)]
}
}
此外,还可以定义,interface处的参数,修改方法与上述方法类似。
如何添加新材料
如果需要添加新材料,使用如下方法:
假如需要添加InGaO材料:
- 第一步, 在project目录下,添加datexcodes.txt文件。
- 第二步, 修改datexcodes.txt文件,添加新材料InGaO,文件内容如下:
Materials{
InGaO{
label = "InGaO"
group = Semiconductor
color = #8298d9,#93a9ea
}
}
需要注意,group代表的是材料类型,分为半导体(Semiconductor)、导体(Conductor)、和绝缘体(Insulator)等,需要正确设置。color是颜色,随便设置即可。
- 第三步:在仿真中(sde、sprocess、sdevice)中引用该材料,并且在sdevice中,赋予必要的模型参数!新材料的模型参数需要自己查、自己改。
进一步讲,在sentaurus中,存在一个默认的datexcodes.txt文件,定义了sentaurus中所有的材料、掺杂等信息。其文件路径如下,大家可以参考。
sentaurus安装目录/L_2016.03-SP2/tcad/L-2016.03-SP2/lib
如有不足和错误,欢迎指正。
完.
写在最后
我关于sentaurus的入门做了一场知乎live,讲述Sentaurus TCAD的入门方法和基本使用。戳下面链接即可查看。
如何快速入门Sentaurus TCAD半导体器件仿真www.zhihu.comlive包含84分钟语音,3个小时的演示视频,还有一个300人的讨论群。
原创文章,发表于知乎和公众号“Sentaurus TCAD仿真”(搜索SentaurusTCAD),未经允许,不得转载。