学习目标

  • 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 实用教程》唐龙谷

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐