学习目标
- DeckBuild 的命令 “extract”、“go”、“set”和“Tonyplot”
- Silvaco 文档的分布和学习方法。
Silvaco语法格式
Silvaco 的语法结构组成:
(一个语句只有一个命令, 而参数可以有多个)
- command (器件仿真时的“statement”作用同此“command”)
- parameter
通用格式:
COMMAND PARAMETER1=<n> PARAMETER2=<c> [PARAMETER3 | PARAMETER4
/*
其中“n”代表数值,如“30”;
“c”代表字符串,如“silicon”。
"<>"内的参数为可选参数,
“|”号表示两边的参数选其一。
*/
Command 一般为单个单词。
Silvaco 中字符串参数的命名规则:
-
如果参数只有一个属性,则用一个单词就可以表示。
【如“硅”用 单词 silicon,“材料”用单词 material 表示。】 -
如果参数具有两个或多个属性,则参数的名称将由两个或多个单词的缩写拼接而成,单词之间由点连接,一般是左边的参数限定或说明 边的参数。
【例如“温度的值”(temp.val),“偏置的步长”(bias.step),“材料的序号”(mat.occno, “occno”是 number of occurrence 的意思),“某二维区域内的最大浓度”(2d.max.conc)等。】 -
对于特定的命令如果仿真语句中没有给出参数值则会采用默认值。
【
用户可以查询手册来了解 默认值极其默认单位。】
语法规则
- 命令可以简写,以不与其他简写相冲突为原则,如“deposit”可以用“depo”取代;
- 不区分大小写;
- 命令和参数之间、参数和参数之间以空格分开;
- 一行写不完的在该行的末尾加反斜杠“\”(注意“\”前需留有空格),则下一行和 该行将被视为同一个命令;
- “#”号后面是注释,仿真时不运行注释后面的内容;
- 空行不运行。
DeckBuild 命令:
- “go”
- “set”
- “Tonyplot”
- “extract”
go命令
“go”的作用
:启用或切换仿真器。
仿真器:
- ATHENA
- ATLAS
- Ssuprem3
- 等等
Go 语法:
GO <SIMULATOR> | SIMFLAGS=<SIMULATOR>
/*
其中 simulator 为仿真器名称,simflags 指出仿真参数和程序版本。
*/
例子:
启动器件仿真器 ATLAS。
go atlas
启动器件仿真器 ATLAS,版本 5.0.8。
go atlas simflags="-V 5.0.8.R"
启动三维器件编辑器。
go devedit "-3d"
set命令
set 命令 作用:
- 对 DeckBuild 的全局变量进行设置
- 设置 Tonyplot 的显示方式。(显示方式 可以保存在*.set 文件中,这样在显示时可直接调用。)
set语法:
SET <VARIABLE> = [ <VALUE> | <EXPR>] [NOMINAL]
/*
“variable”为任意变量,
在后续语句中使用该变量则需写为“$<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
Tonyplot :
- 可视化工具,可将仿真时生成的临时文件(结构)、工艺仿真中保存的结构文件、器件编辑器生成的结构文件、器件仿真保存的 log 文件和提取得到的 dat 文件显示出来。
- 也是交互式工具,其内建的计算器可以对数据进行计算。
对于三维结构的显示需要 Tonyplot3D。
打开 Tonyplot:
Tonyplot 界面:
没有打开数据文件的时候将显示 Tonyplot 的版本信息。 顶部主要有 File、Edit、Plot 和 Tools 等菜单。
Tonyplot 显示的一个 MOS 结构:
显示的信息有浓度分布、结的边界、区域边 界、电极的名称、各区域的材料和横向、纵向的尺寸等。由于用颜色来表示物理量“Net Doping”,所以由颜色来区分材料不可用 。
Tonyplot 显示的由器件仿真得到的 MOS 输出特性曲线:
(栅电压为 1.1V、2.2V 和 3.3V 时漏电流随漏源电压的变化。)
Extract
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 的专题网站:
- EDA 中心 http://www.eda.ac.cn;
- EDA 中国门户网站 http://www.edacn.net;
- 中国 EDA 技术网 http://www.51eda.com;
学习建议:
仿真≠真,尽信软件不如没有软件;
参考:《半导体工艺和器件仿真工具 Silvaco TCAD 实用教程》唐龙谷