Silvaco 的语法结构组成:(一个语句只有一个命令, 而参数可以有多个)
通用格式:
COMMAND PARAMETER1= PARAMETER2= [PARAMETER3 | PARAMETER4
/*
其中“n”代表数值,如“30”;
“c”代表字符串,如“silicon”。
"<>"内的参数为可选参数,
“|”号表示两边的参数选其一。
*/
Command 一般为单个单词。
Silvaco 中字符串参数的命名规则:
语法规则
DeckBuild 命令:
“go”的作用:启用或切换仿真器。
仿真器:
Go 语法:
GO | SIMFLAGS=
/*
其中 simulator 为仿真器名称,simflags 指出仿真参数和程序版本。
*/
例子:
启动器件仿真器 ATLAS。
go atlas
启动器件仿真器 ATLAS,版本 5.0.8。
go atlas simflags="-V 5.0.8.R"
启动三维器件编辑器。
go devedit "-3d"
set 命令 作用:
set语法:
SET = [ | ] [NOMINAL]
/*
“variable”为任意变量,
在后续语句中使用该变量则需写为“$”。
*/
例子
用全局变量来设置工艺参数
set temp=1000
set gaspress=1
diffuse time=30 temp=$temp press=$gaspress
#变量为“temp”和“gaspress”,值分别为“1000”和“1”。
#这样在后续仿真语句中声明“$temp”和“$gaspress”时,设置的值将自动赋予这些变量。
变量为经某种运算后的结果。
extract name="oxide thickness" thickness oxide
//先提取氧化层厚度,将其名称设为“oxide thickness”。
set etch_thickness=($"oxide thickness"*10000) + 0.05
/*设置变量“etch_thickness”值为之前提取得到的氧化层厚度经一个运算(乘以 10000 再加上 0.05)
得到的结果*/
etch oxide dry thickness=$etch_thickness
//干法刻蚀二氧化硅,刻蚀的厚度就是之前运算的值,即“etch_thickness”。
经常在淀积工艺中定义网格密度的时候采用这种方式,如将纵向网格数(division)设
置成厚度除以网格间距的商。
按照设置文件“show.set”来进行显示。
tonyplot structure.str -set show.set
在 Tonyplot界面的 File 下拉菜单中点击 Save Set Files…则可以将当前的显示方式保存在 相应的 set 文件中。
Set 文件需要存放在工作路径下,这样程序才能查找到。
Tonyplot :
对于三维结构的显示需要 Tonyplot3D。
打开 Tonyplot:
Tonyplot 界面:
没有打开数据文件的时候将显示 Tonyplot 的版本信息。 顶部主要有 File、Edit、Plot 和 Tools 等菜单。
Tonyplot 显示的一个 MOS 结构:
显示的信息有浓度分布、结的边界、区域边 界、电极的名称、各区域的材料和横向、纵向的尺寸等。由于用颜色来表示物理量“Net Doping”,所以由颜色来区分材料不可用 。
Tonyplot 显示的由器件仿真得到的 MOS 输出特性曲线:
(栅电压为 1.1V、2.2V 和 3.3V 时漏电流随漏源电压的变化。)
Extract 可以用于提取仿真结果,如工艺仿真得到的结果,如材料厚度、结深、方块电阻等,或提取器件仿真的阈值电压,电流放大倍数等 。
简单语法:
EXTRACT EXTRACT – PARAMETERS
例子
提取栅氧化层厚度。
extract name="gateox" thickness oxide mat.occno=1 x.val=0.49
提取结深。
extract name="nxj" xj silicon mat.occno =1 x.val=0.1 junc.occno=1
提取结深的另一种办法。
extract name="Junction Depth" x.val from curve(depth, \
(impurity="Gallium" material="Silicon" mat.occno=1) \
- (impurity="Phosphorus"material="Silicon" mat.occno=1)) where y.val=0.0
提取表面浓度。
extract name="chan surf conc" surf.conc impurity="Net Doping" \
material="silicon" mat.occno=1 x.val=0.45
提取 x=0.1μm 处的硼浓度分布。
extract name="bcurve" curve(depth, boron silicon mat.occno=1 x.val=0.1) \
outfile="extract.dat"
提取激活了的砷的总浓度。
extract name="Active_Arsenic" 1.0e-04 * (area from curve (depth, \
impurity= "Active Arsenic" material="Silicon" mat.occno=1))
提取方块电阻。
extract name="n++ sheet rho" sheet.res material="Silicon" \
mat.occno=1 x.val=0.05 region.occno=1
学习资料:
程序自带的 EXAMPLE:
EXAMPLE 路径,X:\ sedatools\ examples\...
用户手册:
如 ATHENA 手册,位置: X:\sedatools\lib\Athena\.R\docs\athena_users1.pdf.;
SILVACO 官方网站 http://www.silvaco.com;
SILVACO 中国 http://www.silvaco.com.cn;
有关 EDA 的专题网站:
学习建议:
仿真≠真,尽信软件不如没有软件;
参考:《半导体工艺和器件仿真工具 Silvaco TCAD 实用教程》唐龙谷