silvaco用户手册学习1——Getting Started with Atlas

Atlas介绍

 

        Atlas 是一个基于物理的二维和三维设备模拟器。

        它预测指定半导体结构的电气行为,并提供对与设备操作相关的内部物理机制的洞察。

        Atlas 可以独立使用,也可以作为 Silvaco 虚拟晶圆厂仿真环境中的核心工具使用。

        在预测工艺变量对电路性能影响的序列中,器件仿真介于工艺仿真和 SPICE 模型提取之间。

Atlas 的Inputs 和Outputs

 input files:

  • text file:包含要执行 Atlas 的命令。
  • structure file:定义了将被模拟的结构。

output files

  • run-time output:模拟进行时为您提供进度以及错误和警告消息。
  • log file:存储来自设备分析的所有终端电压和电流。
  • solution file:存储与设备内给定偏置点的解决方案变量值相关的 2D 和 3D 数据

Atlas 的操作模式 

 强烈建议始终在 DeckBuild 中运行 Atlas。

支持操作的模式

  • interactive  mode operation
  • batch mode operation

使用 DeckBuild 的 Interactive Mode

Linux系统下

在DeckBuild 中启动Atlas。

命令提示符输入:

deckbuild -as 
#-as,指示 DeckBuild 启动 Atlas 作为默认模拟器。 


deckbuild -as <input filename>
#启动一个已经存在的input file

       run-time output显示每个 Atlas 命令的执行情况,并包括错误消息、警告、提取的参数和其他用于评估每个 Atlas 运行的重要输出。

        当 Atlas 在此模式下运行时,运行时输出将发送到 DeckBuild 窗口的输出部分,并可根据需要保存。 因此,您不需要显式保存运行时输出。

指定将用于存储  run-time output的名称

deckbuild -as <input filename> -outfile <output filename>

#在这种情况下,run-time  output被发送到 output file 和 DeckBuild 窗口的输出部分。 

使用 DeckBuild 的 Batch Mode  

Linux系统下 

 在non-interactive或 batch mode下使用 DeckBuild

deckbuild -run -as <input filename> -outfile <output filename> 

#在 non-interactive或batch mode下使用 DeckBuild, 添加参数-run 

#建议将run-time output保存到文件中,否则在批量(batch)处理工作完成时run-time output中的错误消息将丢失。

使用远程显示器运行 DeckBuild

deckbuild -run -as <input file> -outfile <output file>  -display<hostname>:0.0

Atlas 语法

Statements和Parameters 

      input file包含一系列statement。 每个statement语句都包含一个标识语句的关键字和一组参数。

一般格式:

<STATEMENT> <PARAMETER>=<VALUE>

#statement 关键字必须在前,但语句中参数的顺序并不重要 
#<VALUE>的四种类型:
#实数、整数、字符和逻辑( Real, Integer, Character, and Logical. )

大小写问题: 

  1. 除了少数例外,输入语法不区分大小写。
  2. UNIX 下输入和输出的文件名区分大小写。

例外:本手册中描述为由 DeckBuild 而不是 Atlas 执行的命令区分大小写,包括:

  • EXTRACT
  • SET
  • GO
  • SYSTE

 statement语句例子:

DOPING UNIFORM N.TYPE CONCENTRATION=1.0e16 REGION=1 OUTFILE=my.dop
#######statement讲解#########
#该statement是 DOPING。 所有其他item都是 DOPING 语句的参数。
#UNIFORM 和 N.TYPE 是Logical参数,值设置为真。(默认值通常为 false)
#CONCENTRATION 是一个 Real 参数,将浮点数作为输入值。
# REGION 是一个 Integer参数只取整数作为输入。
# OUTFILE 是一个Character参数类型,以字符串为输入。 


#######参数缩写问题###########
#只需要在任何参数中使用足够多的字母来将其与同一语句中的任何其他参数区分开来。
###例如,CONCENTRATION 可以缩写为 CONC
# REGION 不能缩写为 R, 因为有一个名为 RATIO 的参数与 DOPING 语句相关联 

 一些符号的作用:

  • ^ 放在在逻辑参数前面,将逻辑参数设置为 false。
  • # 用在开头开头,用作单行注释。
  • \用在行尾的,表示继续。(Atlas 最多可以在一行中读取 256 个字符。 但最好将长输入语句分散在多行中,以使输入文件更具可读性。)

Atlas Commands 的顺序

下面五组statement必须以正确的顺序出现。

mesh definition, structural definition, 和 solution groups中的语句顺序也很重要。 

不按照正确顺序的后果:

会出现错误信息,可能导致程序运行不正确或终止。

( 例如,如果材料参数或模型的设置顺序错误,则它们可能不会用于计算。)

DeckBuild Command Menu

DeckBuild 命令菜单(Command Menu)可以帮助您创建输入文件。

只要 Atlas 是 DeckBuild 中当前活动的模拟器,就会为 Atlas 配置命令菜单。

当 Atlas 处于活动状态时(在 DeckBuild 窗口的下方栏中指示),Atlas 命令提示符将出现在 DeckBuild 输出部分。

命令菜单使您可以访问在其中键入信息的弹出窗口。

 当您选择 Write 按钮时,语法正确的语句将写入 DeckBuild 文本编辑区域。

例如: 

注意: 

 DeckBuild 命令菜单不支持所有可能的 Atlas 语法,但旨在涵盖最常用的命令。

Atlas定义结构

Atlas定义 device structure的三种方法:

1、从文件中读取现有结构。

该结构是由较早的 Atlas 运行或其他程序(例如 Athena 或 DevEdit)创建的。

MESH 语句加载结构的网格、几何形状、电极位置和掺杂。

例如

MESH INFILE=<filename>

 2、使用 DeckBuild 的 Automatic Interface 功能来传输来自 Athena 或 DevEdit 的输入结构。

3、使用 Atlas 命令语言创建结构。 

来自 Athena 的interface  

         当 Athena 和 Atlas 在 DeckBuild 下运行时,可以利用这两个程序之间的自动接口(automatic interface)。 执行以下步骤将完整的mesh, geometry, 和 doping 从 Athena 加载到 Atlas。

使用automatic interface功能

1. 在 Athena 中沉积和图案化电极材料。

2. 使用 Athena 中的 ELECTRODE 语句来定义接触位置。

        将 X 和 Y 坐标指定为十字准线以精确定位区域。 然后整个区域变成电极。 在许多情况下,只需要 X 坐标。

例如

ELECTRODE NAME=gate X=1.3 [Y=-0.1])

        有一种特殊情况可以指定结构底部的接触

ELECTRODE NAME=substrate BACKSIDE

3.在 Athena 仍然是活动模拟器时保存结构文件。

STRUCTURE OUTF=nmos.str

4.启动atlas

同一个输入面板中,输入

go atlas

自动将最新的结构从 Athena 加载到 Atlas。

不使用auto-interface功能

将上面step 4 中保存的结构load到 Atlas 中,使用 MESH 命令。

MESH INF=nmos.str

        Atlas 继承了 Athena 最近使用的网格。 通过仔细选择初始网格或使用 Athena 中的网格操作技术,您可以从 Athena 生成最终网格,这将在 Atlas 中产生良好的结果。

        但是,适用于process simulation的网格并不总是适用于device simulation。

        如果最终的 Athena 网格不适合 Atlas,请使用 DevEdit 重新划分结构或使用 REGRID 命令。

来自DevEdit的interface 

 将 DevEdit 创建的 2D 或 3D 结构读入 Atlas:

MESH INF=<structure filename>
#该语句加载了结构的网格、几何形状、电极位置和掺杂。

        Atlas 将自动确定网格是 S-PISCES 或 Blaze 的 2D,还是 Device 3D 或 Blaze3D 的 3D。

        如果来自 DevEdit 的结构最初是由 Athena 创建的,则在 Athena 中定义电极,如上一节所述。

        如果在 DevEdit 中创建结构,则应在 DevEdit 的 Region/Add region 菜单中定义电极区域。

使用 Atlas 命令语言创建结构

通过 Atlas 命令语言定义device步骤:

1、定义一个网格(mesh或grid)。(该网格覆盖物理模拟域。 网格由一系列水平和垂直线以及它们之间的间距定义。)

2、定义region。根据构建device的需要,将该网格内的区域分配给不同的材料。 例如,MOS 器件的规范需要硅和二氧化硅区域的规范。

3、指定电极的位置。

4、指定每个区域的掺杂。

指定 Initial Mesh

#第一个statement必须是MESH SPACE.MULT=<VALUE>
MESH SPACE.MULT=<VALUE>

#SPACE.MULT 参数值用作 X.MESH 和 Y.MESH 语句创建的网格的比例因子(scaling factor)。 
#默认值为 1。
#大于 1 的值将创建全局较粗的网格以进行快速模拟。 
#小于 1 的值将创建全局更精细的网格以提高精度。



#X.MESH 和 Y.MESH 语句分别用于指定垂直线和水平线的微米位置,以及与该线关联的垂直或水平间距。
X.MESH LOCATION=<VALUE> SPACING=<VALUE>
.
Y.MESH LOCATION=<VALUE> SPACING=<VALUE>
.

#必须为每个方向指定至少两条网格线。 
#Atlas 会自动插入允许任何相邻行之间的间距值逐渐过渡所需的任何新行。
# X.MESH 和 Y.MESH 语句必须按 x 和 y 递增的顺序列出。 
#x 和 y 的负值和正值都是允许的。 

删除指定区域中的网格线

这通常在device中预估粗网格就足够的的region中完成(例如基板)。

使用statement语句

ELIMINATE
#从指定矩形内沿指定方向每隔一条网格线删除一次。

举例:

ELIMINATE COLUMNS X.MIN=0 X.MAX=4 Y.MIN=0.0 Y.MAX=3
#删除以 x=0、x=4、y=0 和 y=3 微米为边界的矩形内的每隔一条垂直网格线。

指定 Regions 和 Materials

一旦指定了网格,它的每个部分都必须指定一个材料类型。

使用语句:

REGION number=<integer> <material_type> <position parameters>

#Region number
#Region number必须从 1 开始,并为每个后续 region 语句增加。
#Atlas 中最多可以有 15000 个不同的区域。


#material_type
#Atlas中有大量的材料可用。 
#如果定义了依赖于成分的材料类型,则还可以在 REGION 语句中指定 x 和 y 成分的分数。


#position parameters
#使用 X.MIN、X.MAX、Y.MIN 和 Y.MAX 参数以微米为单位指定position parameters。
#如果新语句的position parameters与之前的 REGION 语句的position parameters重叠,则将重叠区域指定为新区域的材料类型。
#确保将材料分配给结构中的所有网格点。 如果不这样做,将出现错误消息并且 Atlas 将无法成功运行 

其他定义region 材料属性的方法:

使用语句

 MATERIAL

在使用任何 MATERIAL 语句之前,必须完成整个网格和掺杂定义。

圆柱坐标(Cylindrical Coordinates)

        圆柱坐标常用于模拟离散功率器件。

        在此模式下,Atlas 以 x=0 作为对称轴运行,圆柱几何体围绕该轴运行放置。

        使用圆柱坐标时,许多默认单位会发生变化。 计算出的电流以安培为单位,而不是通常的每微米安培。 外部元件以绝对单位指定(例如,法拉,而不是电容器的法拉/微米)。

        MESH 语句必须用于指定圆柱对称。

创建一个包含圆柱对称性的网格。

MESH NX=20 NY=20 CYLINDRICAL
#沿 X 轴有 20 个网格节点,沿 Y 轴有 20 个网格节点。

#CYLINDRICAL 参数设置不存储在网格文件中。 因此,这个参数必须是每次加载包含圆柱对称性的网格文件时指定。 

导入一个包含圆柱对称的网格。

MESH INF=mesh0.str CYLINDRICAL

指定Electrodes

指定区域和材料后,至少定义一个与半导体材料接触的电极。

使用语句:

ELECTRODE NAME=<electrode name> <position_parameters>

#最多可以指定 50 个electrode。
#使用 X.MIN、X.MAX、Y.MIN 和 Y.MAX 参数以微米为单位指定position_parameters。
#多个electrode语句可能具有相同的电极名称。
#与相同electrode名称相关联的 node 被视为已经电气连接。

定义电极位置时可以使用一些快捷方式:

  • 如果没有指定 Y 坐标参数,则假定电极位于结构的顶部。
  • 使用 RIGHT、LEFT、TOP 和 BOTTOM 参数来定义位置。
ELECTRODE NAME=SOURCE LEFT LENGTH=0.5
#指定源电极从结构的左上角开始并向右延伸距离 LENGTH

指定Doping 

指定doping的方法 

  • 指定 analytical doping distributions。
  • 让 Atlas 读取来自process simulation 或实验的配置文件。

指定doping使用的语句:

DOPING <distribution_type> <dopant_type> <position_parameters>

Analytical Doping Profiles(分析掺杂分布)

Analytical doping profiles形式

  • uniform
  •  gaussian
  • complementary error function

        定义 analytical distribution的参数在 DOPING 语句中指定。

 uniform

DOPING UNIFORM CONCENTRATION=1E16 N.TYPE REGION=1

#DOPING 语句在之前标记为region #1 的region中指定了 10^16 cm-3 的均匀 n 型掺杂密度。
#可以使用 position parameters (X.MIN、X.MAX、Y.MIN 和 Y.MAX )代替 region number。

gaussian 

DOPING GAUSSIAN CONCENTRATION=1E18 CHARACTERISTIC=0.05 P.TYPE \ 
 X.LEFT=0.0 X.RIGHT=1.0 PEAK=0.1

#DOPING 语句指定峰值浓度为 10^18 cm-3 的 p 型高斯分布。

#该声明指定峰值掺杂位于从 x = 0 到 x = 1 微米的一条线上。

#垂直于峰线,掺杂根据高斯分布下降,标准偏差为 (0.05/2^(1/2)) µm。

#在 x < 0 或 x > 1 处,掺杂横向下降,默认标准偏差为 (70/2^(1/2))% CHARACTERISTIC。

#可以使用 RATIO.LATERAL 参数更改此横向滚降。

#如果将 Gaussian profile添加到已使用相反掺杂类型定义的区域,
#则可以使用 JUNCTION 参数指定结深度的位置,而不是使用 CHARACTERISTIC 参数指定标准偏差 

 complementary error function

函数定义: 

 

 其中 z 变量是由 CHAR 参数定义的特征距离缩放的距离。

DOPING ERFC N.TYPE PEAK=0.5 JUNCTION=1.0 CONC=1.0E19 X.MIN=0.25 \
 X.MAX=0.75 RATIO.LAT=0.3 ERFC.LAT
DOPING P.TYPE CONC=1E18 UNIFORM

#这建立了一个施主分布,在 X = 0.5 微米处的峰值浓度为 1.0x10^19 cm-3。

#CHAR 参数决定了掺杂水平随距离的变化率,它没有直接设置在 DOPING 配置文件上。
#而且,它的计算使得 JUNCTION 参数给出的位置处的净掺杂水平为零。

#在这个例子中,受主浓度是 1.0×10^18 cm-3,均匀分布
#所以我们需要在 1 微米位置的施主浓度为 1.0×1018 cm 3 以在那里创建 p-n 结。


#CHAR 的值由公式计算,得到大约 0.43 微米的 CHAR 值。
#此外,施主浓度在横向方向上下降到 0.25 至 0.75 微米的范围之外。
#横向衰减参数定义为主要衰减参数的 0.3 倍,并具有互补误差函数的形状 。

CHAR

        CHA 参数决定了掺杂水平随距离的变化率,它没有直接设置在 DOPING 配置文件上。它的计算使得 JUNCTION 参数给出的位置处的净掺杂水平为零。

计算公式

  

导入一维 SSUPREM3  Doping Profiles 

        一维 Doping Profiles 可以从 SSuprem3 输出文件读入 Atlas。

        在 SSuprem3 运行结束时,必须使用以下语句从 SSuprem3 中保存doping data :

STRUCTURE OUTFILE=<output filename>

        在 Atlas 中,DOPING 语句的 MASTER 参数指定 Atlas 将读取 SSuprem3 文件。

        由于此文件通常包含来自 SSuprem3 simulation的所有dopants,还必须指定所需的dopants类型。 

例子:

DOPING MASTER INFILE=mydata.dat BORON REGION=1

#指定导入mydata.dat 中的硼分布(boron profile)并在 region #1中使用。 

 SSUPREM3 profiles一次一个导入到 Atlas 中(即,每个profiles或dopant使用一个 DOPING 语句)。 

例子:

DOPING MASTER INFILE=mydata.dat BORON OUTFILE=doping.dat 
DOPING MASTER INFILE=mydata.dat ARSENIC X.RIGHT=0.8 RATIO=0.75 
DOPING MASTER INFILE=mydata.dat ARSENIC X.LEFT=2.2 RATIO=0.75


#抵消 boron中的 arsenic掺杂,从单个 SSuprem3 结果创建 2D 掺杂分布。

#建议在第一个 DOPING 语句中包含 OUTFILE 参数以创建 2D3D 掺杂文件。


#该文件随后将在下一节中用于在 REGRID 之后在细化网格上插入掺杂。 
#这个文件不能在 TonyPlot 中绘制。
#position parameters 和 RATIO.LATERAL 参数以与 analytical doping profiles相同的方式使用,以设置一维分布的范围。 

使用命令语言进行自动网格划分(Auto-meshing)

提供了一种更简单的方法来定义设备结构和网格。

自动网格划分优点:

  • 特别适用于外延结构,尤其是具有多层的器件结构(例如,VCSEL 器件)
  • 免于人工进行精细的网格划分,以确保 Y 方向上的网格线位置与区域边缘一致对齐。(这是通过在 REGION 语句中指定 Y 网格线的位置来完成的。)  

指定 Mesh 和Region

指定mesh 

MESH AUTO
X.MESH LOCATION=-1.0 SPACING=0.1
X.MESH LOCATION=1.0 SPACING=0.1

 与“使用命令语言定义结构”指定mesh的区别:

  • 在 MESH 语句中包含了 AUTO 参数。 (需要此参数来指示要使用自动网格划分)
  • 不会指定任何 Y.MESH 语句。 (Y 网格线的位置将由 REGION 语句的参数自动确定。可以指定一个或多个 Y.MESH 语句。 此类定义的网格线将包含在网格中。 但是在自动网格划分中包含 Y.MESH 语句是可选的 )

指定region 

REGION TOP THICKNESS=0.02 MATERIAL=GaN NY=5 DONOR=1E16
REGION BOTTOM THICKNESS=0.1 MATERIAL=AlGaN NY=5 DONOR=1E17
X.COMP=0.2
REGION TOP THICKNESS=0.08 MATERIAL=AlGaN NY=4 ACCEPTOR=1E17
X.COMP=0.2
REGION BOTTOM THICKNESS=0.5 MATERIAL=AlGaN NY=10 DONOR=1E18
X.COMP=0.2

#DONOR、ACCEPTOR、X.COMPOSITION 和 Y.COMPOSITION 参数:指定 specified region上的均匀掺杂或成分(或者两个都指定)。


#TOP、BOTTOM、THICKNESS 和 NY 参数:用于描述层的相对位置和厚度以及 Y 网格线的位置。

# THICKNESS 参数:
#描述了每层 Y 方向上的厚度(以微米为单位)。
#在 X 方向,在没有指定任何 X.MIN 或 X.MAX 参数,假定该区域扩展到上述 X.MESH 语句中描述的 X 网格的整个范围。

#NY 参数:
#描述region中包含多少 Y 网格线,以便 Y 网格线在该区域上均匀分布。
#可以使用 SY 参数而不是 NY 来指定区域中 Y 网格线之间的间距(以微米为单位)。
#确保 SY 的值不超过 THICKNESS 的值。

#SY、NY和THICKNESS之间的关系:
#SY = THICKNESS/NY

依次运行region语句的结果: 

每个区域中 Y 网格线的数量并不总是与指定的数量匹配。

原因:

        在region之间的每个 interface上,Y 网格线间距的定义不明确,自动网格划分算法将始终在每个界面处选择两者之间较小的间距。

        然后,Y 网格线之间的间距在后续界面之间以类似于 X.MESH 和 Y.MESH 语句中的 LOCATION 和 SPACING 参数指定的网格间距的方式连续变化。

note:

Y 轴的 Atlas 坐标约定是正 Y 向下指向设备。

(类似于使用 ELECTRODE 语句的 TOP 和 BOTTOM 参数。)

自动网格划分算法维护 "top" 和 "bottom"的当前 Y 位置的“概念”。 (这些位置称为“Ytop”和“Ybottom”。),在处理任何 REGION 语句之前,“Ytop”和“Ybottom”都被定义为零。

在处理 REGION 语句时,将解决以下情况

  • 如果将区域放置在顶部,如 TOP 参数指定的那样,区域将从“Ytop”延伸到“Ytop”-THICKNESS(记住正 Y 点向下)并且“Ytop”将移动到新位置“Ytop"-THICKNESS"。
  • 如果将区域放置在底部,如BOTTOM 参数所指定,区域将从“Ybottom”延伸到“Ybottom”+THICKNESS,“Ybottom”将移动到新位置“Ybottom”+THICKNESS。

自动网格划分算法将确保所有区域与其相邻区域完美对齐,并且 Y 网格线的位置与其解析的区域边缘之间没有不一致。

X 方向的非均匀性和自动网格划分

仿真应用:在 X 方向具有材料不连续性的device。(不连续性可能代表蚀刻的台面结构或氧化物孔)

例子:

从上一个示例的结构中蚀刻出一个区域,从 X=0 到右侧,从 Y=0 到顶部。

REGION MATERIAL=Air X.MIN=0.0 Y.MAX=0.0

#没有使用自动网格划分功能,
#而是使用“使用命令语言定义结构”中描述的标准网格划分方法的语法。

#Atlas 支持将标准语法与自动网格化混合使用 ,这样做时要小心 。

        在自动网格剖分中使用绝对 Y 坐标的潜在缺陷是您选择的位置(例如,通过总结厚度)可能与您的计算机计算的位置不匹配,其固有的数值不精确性。 

         结果不仅是生成的结构可能与您想要的不完全匹配。更重要的是,您最终可能会意外地创建一个具有紧密间隔的 Y 网格线(通常按照机器精度的顺序)的网格。

        这可能会导致数值不稳定(收敛性差)并可能导致 在某些模型中上溢或下溢。更糟糕的是,这种情况很难被发现。

        但是,在一种情况下,我们可以绝对预测边缘或 Y 网格线的位置。即在 Y=0 处。这正是我们在示例中所做的。 因此,如果您想使用 Y 的绝对值规格的自动网格划分,那么请安排您的设备结构,使 Y 的规格为零。

        这也适用于凹陷电极的位置。如果您使用自动网格划分,请确保它位于 Y=0。

        还有另一种在 X 方向上提供材料不连续性的方法,该方法对于前面讨论的问题是绝对安全的。

        在这种方法中,我们在 REGION 语句中使用另一个称为 STAY 的参数与 TOP 或 BOTTOM 参数。

REGION语句中STAY参数的作用

  • 如果将区域放置在顶部,如 TOP 参数所指定,并指定了 STAY 参数,则区域将从“Ytop”延伸到“Ytop”-THICKNESS,而“Ytop”将保持在其当前位置。
  • 如果将区域放置在底部(由 BOTTOM 参数指定)并指定 STAY 参数,则区域将从“Ybottom”延伸到“Ybottom”+THICKNESS,“Ybottom”将保持在其当前位置

Grading of Composition and Doping 

REGION 语句中另一种指定成分或掺杂(或两者都指定)的方法:

(这种方法允许对矩形区域进行线性分级)

REGION 语句支持此功能的八个参数:

ND.TOP、ND.BOTTOM、NA.TOP、NA.BOTTOM、COMPX.TOP、COMPX.BOTTOM、COMPY.TOP 和 COMPY.BOTTOM。

  • “TOP”指的是负 Y 方向的“顶部”或极端 Y 坐标
  • “BOTTOM”指的是正 Y 方向的“底部”或极端 Y 坐标。

适用规则:

  1. 如果在 REGION 语句中指定 ND.TOP 和 ND.BOTTOM,该region中的施主掺杂将从器件“TOP”的 ND.TOP 指定的值到器件“BOTTOM”的 ND.BOTTOM 指定的值线性变化。
  2. 如果在 REGION 语句中指定 NA.TOP 和 NA.BOTTOM,该region中的受主掺杂将从器件“TOP”的 NA.TOP 指定的值到器件“BOTTOM””的 NA.BOTTOM 指定的值线性变化。
  3. 如果在 REGION 语句中指定 COMPX.TOP 和 COMPX.BOTTOM,该region中的 X 组成分数将从设备“TOP”的 COMPX.TOP 指定的值到设备“BOTTOM”的 COMPX.BOTTOM 指定的值线性变化。
  4. 如果在 REGION 语句中指定 COMPY.TOP 和 COMPY.BOTTOM,该region中中的 Y 组成分数将从设备“TOP”的 COMPY.TOP 指定的值到设备“BOTTOM”的 COMPY.BOTTOM 指定的值线性变化

note:

任何后续的 DOPING 语句都将添加到 REGION 语句中的掺杂相关参数指定的掺杂中

Superlattices and Distributed Bragg Reflectors DBRs 

指定某一类超晶格或分布式布拉格反射器【 distributed Bragg reflectors (DBRs)】的方法:

此类超晶格包括任何可以描述为两个不同层的整数重复次数的超晶格。 (两层可以具有不同的厚度、材料成分或掺杂物,或全部不同。)

这些“联合”结构由 DBR 或 SUPERLATTICE 语句指定。SUPERLATTICE 是 DBR 的同义词,SUPERLATTICE 和 DBR 可以互换使用)

DBR 语句

  • 大部分语法与 REGION 语句的语法相似,只是语法设置为描述两个region(或两组region)。
  • 通过参数名称中的indices  1 和 2 来区分这些region(或region集和)

例子

MESH AUTO  #使用自动网格划分
X.MESH LOCATION=-1.0 SPACING=0.1
X.MESH LOCATION=1.0 SPACING=0.1
DBR TOP LAYERS=4 THICK1=0.1 THICK2=0.2 N1=2 N2=3 MAT1=GaAs
MAT2=AlGaAs \
X2.COMP=0.4
DBR BOTTOM LAYERS=3 THICK1=0.05 THICK2=0.075 N1=3 N2=3 MAT1=AlGaAs
\
MAT2=GaAs X1.COMP=0.4

# LAYERS 参数:指定添加的region总数
#总是先添加索引为“1”的region,然后添加索引为“2”的region,
#并且根据 LAYERS 的值,region的序列继续 1, 2, 1, 2,1, ..

Modifying Imported Regions 

应用:

如果使用 MESH 语句的 INFILE 参数从文件导入设备结构,可能希望修改结构中一个或多个region的一些特征。

方法:

        使用 MODIFY 参数和分配给感兴趣region编号的 NUMBER 或 NAME 参数指定 REGION 语句。

        指定/重新指定以下任何 REGION 语句参数:

ACCEPTORS、DONORS、LED、MATERIAL、NAME、POLAR.SCALE、POLARIZATION、QWELL、STRAIN、VNBS.GAIN、WELL、WELL.FIELD、WELL.GAIN、X.COMP , 和 Y.COMP

Remeshing Using The Command Language 

重新定义网格的原因:

        使用命令语言指定结构时,很难定义合适的网格。主要问题是解析 2D 掺杂分布和弯曲结所需的网格非常复杂。

        简单的矩形网格需要过多的节点来解析此类剖面。

        如果器件结构只包括均匀掺杂的区域,那么通常不需要重新网格。但是当存在真实的 2D 掺杂分布时,可能需要重新定义网格。

note:

为 Atlas 定义复杂网格结构的推荐解决方案是使用独立程序,DevEdit

Regrid On Doping

         Atlas 包括重新网格化功能,该功能仅在局部区域生成精细网格。

        指定要执行重新网格的数量,然后在指定数量快速变化的区域中细化网格。每当指定数量(通常是掺杂)快速变化时,重新网格化将相应地自动对网格进行分级。

        在获得任何解决方案之前,可以对doping进行重新网格化。

使用语句

REGRID LOGARITHM DOPING RATIO=2 SMOOTH.KEY=4 DOPFILE=<filename1> \
 OUTFILE=<filename2>

#此语句必须在前面描述的 MESH、REGION、MATERIAL、ELECTRODE 和 DOPING 语句之后使用。

# doping file(filename1)必须在带有 OUTFILE 参数的第一个 DOPING 语句中指定。
#重新网格的结果保存在文件 filename2 中。

#SMOOTH.KEY 参数值选择平滑算法。值 4 通常最好,因为该算法倾向于生成最少的钝角三角形。

 Regrid Using Solution Variables

        REGRID 语句可以使用范围广泛的解变量作为网格细化的基础。

       solution variables的重新网格只能在获得解决方案后使用。 在对solution variables重新网格之后,解必须在 Atlas 中以相同的偏差重新求解。  

REGRID POTENTIAL RATIO=0.2 MAX.LEVEL=1 SMOOTH.K=4
DOPFILE=<filename1> 
SOLVE PREV

#Regrid on Potential 常用于高压功率设备。

注意:

        可以在结构上多次使用 REGRID 语句。 但建议退出并重新启动 Atlas 之间electrical quantities的重新网格。

        可以使用 go atlas 语句来执行此操作。 这应该跟在 MESH 语句之后,加载 REGRID 命令的输出文件,并重新设置所有材料和模型参数

关于网格的一般讨论 


        指定一个好的网格是设备模拟中的一个关键问题,但在精度和数值效率的要求之间需要权衡。精度需要一个精细的网格来解析解中的结构。使用较少的网格点时,数值效率更高。
        要解决的关键领域很难概括,因为它们取决于技术和运输现象。唯一可能的概括是大多数关键区域往往与反向偏置冶金结重合。
 典型的关键领域是:

  • MOSFET 漏极/沟道结处的高电场
  • MOSFET 栅极下方的横向电场
  • BJT 中发射极/基极结周围的复合效应
  • 高碰撞电离区域
  • HBT 和 HEMT 中的异质结周围。

        获得解决方案所需的 CPU 时间通常与 N^α 成正比,其中 N 是节点数,α 从 2 到 3 不等,具体取决于问题的复杂性。

        最有效的方法是仅在关键区域分配细网格,在其他地方分配较粗网格。

在任何网格中三个最重要的因素:

  • 确保在高场区域有足够的网格密度
  • 避免在当前路径或高场区域中出现钝角三角形
  • 避免网格密度的突然中断

Maximum Numbers Of Nodes, Regions, and Electrodes

        Atlas 对可以使用的最大网格节点数设置了一些限制。

        在默认版本中,2D Atlas 模拟的最大节点限制为 100,000。3D Atlas 模拟的上限为 20,000,000 个节点,任何一个 Z 平面中的节点不超过 100,000 个,Z 平面的最大数量为 2,000。

        这个限制足够高,对于几乎所有传统设备的模拟,节点用完从来都不是问题。对于大多数 2D 模拟,可以通过结构中正确定位的 2,000 到 4,000 个节点点获得准确的结果。

        如果超出节点限制,则会出现错误消息,Atlas 将无法成功运行。

        解决方法:降低网格密度(因为使用最大节点的模拟需要很长时间才能完成)

        由于硬件上的虚拟内存限制,可能会看到低于这些值的节点点限制。对于每个模拟,Atlas 动态分配虚拟内存。
        程序使用的虚拟内存取决于节点的数量和项目,例如使用的模型和求解的方程数量此外,2D 和 3D Atlas 中 X 或 Y 方向的节点数存在节点限制。

        在标准版本中,此限制为 20,000 个节点。这适用于使用 X.MESH 和 Y.MESH 语句在 Atlas 语法中定义的网格。在 2D 和 3D Atlas 中定义的最大区域数为 1,000。可定义电极的最大数量为 100。

定义 Material Parameters 和 Models 

        一旦定义了网格、几何形状和掺杂分布,就可以修改电极的特性,更改默认材料参数,并选择 Atlas 在器件仿真期间将使用的物理模型。

        要完成这些操作,请分别使用 CONTACT、MATERIAL 和 MODELS 语句。 可以使用 IMPACT 语句启用碰撞电离模型。 接口属性是使用 INTERFACE 语句设置的。 

指定 Contact特性

Gates的Workfunction 或 Schottky Contacts 

          与半导体材料接触的电极默认为欧姆电极。如果定义了功函数,则将电极视为肖特基接触 

  • CONTACT 语句用于指定一个或多个电极的金属功函数。
  • NAME 参数用于标识将修改其属性的电极。
  • WORKFUNCTION 参数 设置电极的 workfunction 
CONTACT NAME=gate WORKFUNCTION=4.8
#将名为 gate 的电极的功函数设置为 4.8eV。

可以使用材料名称指定几种常用接触材料的功函数。(例如 ALUMINIUM、N.POLYSILICON、P.POLYSILICON、TUNGSTEN 和 TU.DISILICIDE)

CONTACT NAME=gate N.POLYSILICON
#设置 n 型多晶硅栅极接触的功函数 

重掺杂硅上的铝触点通常是欧姆的。 对于这种情况,不要指定工作函数。

CONTACT NAME=drain ALUMINUM

#MOS 器件没有指定功函数

 CONTACT 语句也可用于 指定肖特基势垒高度的 barrier lowering和dipole lowering。

  • BARRIER 参数:启动 barrier lowering。
  • ALPHA 参数:指定dipole lowering。
CONTACT NAME=anode WORKFUNCTION=4.9 BARRIER ALPHA=1.0e-7
#将名为阳极的肖特基接触的功函数设置为 4.9eV,
#启动 barrier lowering
#将 dipole lowering系数设置为 1 nm。 

note:
当在接触处定义肖特基势垒时,建议在半导体内部接触的正下方设置精细的 y 网格。
这允许精确模拟肖特基耗尽区。

Setting Current Boundary Conditions

CONTACT 语句还用于将电极从电压控制更改为电流控制。

电流控制电极在模拟设备时很有用,其中电流对电压高度敏感,或者是电压的多值函数。

(例如, post-breakdown和出现 snap-back时)。  

CONTACT NAME=drain CURRENT

#将漏电极更改为电流控制。
#使用当前边界条件的所有模拟都需要 BLOCK 或 NEWTON 求解方法。

Defining External Resistors, Capacitors, or Inductors

使用 CONTACT 中的 RESISTANCE、CAPACITANCE 和 INDUCTANCE 参数:

指定连接到电极的集总电阻、电容和电感

CONTACT NAME=drain RESISTANCE=50.0 CAPACITANCE=20e-12
INDUCTANCE=1e-6

#指定一个分别为 50 ohms 和 20 pF 的并联电阻和电容与一个 1uH 电感串联。

#注意:
#在 2D 模拟中,这些无源元件值按第三维中的宽度进行缩放。
#由于在 2D Atlas 中假定宽度为 1um,因此电阻变为 50 Ω-um。

使用 CON.RESIST 参数:

指定电极的分布式接触电阻。

CONTACT NAME=source CON.RESISTANCE=0.01

#指定源触点的分布电阻为 0.01 Ωcm^2

注意:

必须使用 BLOCK 或 NEWTON 求解方法来求解具有外部电阻器、电容器或电感器的仿真。

 Floating Contacts

CONTACT 语句定义浮动电极两种情况:

  • 用于 EEPROM 和其他可编程器件中的浮动栅电极。
  • 直接接触半导体材料。(例如功率器件中的浮动场板)

在 CONTACT 语句中指定 FLOATING 参数:

CONTACT NAME=fgate FLOATING

#指定名为 fgate 的电极将是浮动的,并且将应用电荷边界条件

直接接触半导体

不能使用 FLOATING 参数。

这种类型的浮动电极最好通过在 CONTACT 语句中指定当前边界条件来模拟。

CONTACT NAME=drain CURRENT

#指定名为“drain”的电极的当前边界条件。

#在随后的 SOLVE 语句中,漏极电流边界条件将默认为零电流。
#因此,是一个浮动触点。

使用连接到触点的非常大的电阻器来与半导体建立浮动触点( floating contact)

CONTACT NAME=drain RESIST=1e2

注意:

        必须使用非常大的电阻值来保持通过触点的电流微不足道。使用集总电阻器将使 tolerance on potential略高于零。

例子

        如果tolerance为 10^(-5)V 且定义的电阻仅为 10MΩ.um,则 10^(-12) A/um 的电流可能会流过触点,这在击穿模拟中可能很重要。

Shorting Two Contacts Together

        在 Atlas 中可以将两个或多个触点(contact )连接在一起,以便两个触点上的电压相等。(例如双基极双极晶体管)实现方法具体取决于最初定义结构的方式。

使用 Atlas 语法定义的结构 

 使用 具有相同的 NAME 参数的ELECTRODE 语句

        多个 ELECTRODE 语句,它们具有相同的 NAME 参数,在设备结构中定义不同的位置。

        定义为电极的区域将被视为具有相同的施加电压。

        将出现一个电流,合并通过两个 ELECTRODE 区域的电流。

        如果 Athena 中的两个独立金属区域使用 ATHENA ELECTRODE 语句定义为具有相同名称,则在 Atlas 中这两个电极将被视为一起短路。

用不同的名称定义电极

使用以下语法来连接施加到两个电极的电压:

CONTACT name=base1 COMMON=base FACTOR=0.5

#电极 base1 连接到电极 base。然后在 base上施加的 0.1V 电压出现在 base1 上。
#Atlas为 base 和 base1 计算和存储单独的电流
#(在某些情况下,例如在 EXTRACT 或 TonyPlot 中需要电流函数的地方,这是不可取的。)

#添加 SHORT 参数,只会出现单个基极电流(合并来自 base 和 base1 的电流)。

#COMMON 参数指定的电极应该最好具有与 ELECTRODE 语句中指定的名称之一完全匹配的名称

#由 NAME 参数指定的电极不应直接施加偏置。应该总是对由 COMMON 参数指定的电极施加偏置

Making an Open Circuit Contact

定义开路接触的三种方法:

  • 从结构文件中完全删除一个电极。
  • 添加一个非常大的集总电阻。 例如,将 10^20Ω 加到要开路的触点上。( floating region建议用这个方法,否则可能会影响数值收敛)
  • 将要开路的触点上的边界条件从电压控制切换到电流控制。 然后,指定通过该电极的非常小的电流或零电流。 

 Specifying Material Properties

Semiconductor, Insulator, or Conductor 

材料分类:(每个类都需要指定一组不同的参数。)

  • semiconductors(特性包括电子亲和力、带隙、态密度和饱和速度。)
  • insulators
  • conductors

许多材料的器件模拟中使用的材料属性都有默认参数。

附录 B““Material Systems”列出了默认材料参数,并讨论了为半导体、绝缘体和导体指定参数之间的差异  

Setting Parameters 

使用MATERIAL 语句这些基本参数指定的值。

MATERIAL 语句的描述提供了所有可用材料参数的完整列表。

应用于指定的material或指定的region。

MATERIAL MATERIAL=Silicon EG300=1.12 MUN=1100
#设置器件中所有硅区域的带隙和低场电子迁移率。

材料属性按region定义

region是使用 MATERIAL 语句中的 REGION 或 NAME 参数指定的。

MATERIAL REGION=2 TAUN0=2e-7 TAUP0=1e-5
#设置region 2的电子和空穴 Shockley-Read-Hall 复合寿命

假设材料叫做 base,且已使用 REGION 语句中的 NAME 参数定义

MATERIAL NAME=base NC300=3e19
#材料为base的region在 300 K 时的导带态密度。

Heterojunction Materials 

使用语句: 

MATERIAL 语句:修改异质结的材料属性

  • 定义常规材料参数
  • 定义与成分相关的材料参数(例如,成分相关的带参数、介电常数和饱和速度。)

MODELS 语句:为每种材料指定模型及其系数(对于异质结器件,每种材料的传输模型可能不同)

MATERIAL MATERIAL=InGaAs ALIGN=0.36 
MATERIAL MATERIAL=InP ALIGN=0.36
#指定 InGaAs 和 InP 之间带隙差异的 36% 应用于导带,64% 应用于价带。
#如果该材料系统的带隙差 (Eg) 为 0.6 eV,则导带势垒高度为 0.216 eV,价带势垒高度为 0.384 eV。

#对于异质结材料系统,材料之间的带隙差异分为导带和价带。

#ALIGN 参数
#指定应用于导带边缘的这种差异的分数。
#这决定了电子和空穴势垒高度并覆盖任何电子亲和性规范。

Specifying Interface Properties 

INTERFACE 语句

用于定义半导体和绝缘体之间界面处的界面电荷密度和表面复合速度。

除了固定电荷外,表面复合速度和热电子发射也可以通过 INTERFACE 语句启用和定义。

INTERFACE QF=3e10
#指定半导体和绝缘体之间的所有界面都具有 3.10^10cm^(-2) 的固定电荷。

 定义特定区域的interface属性

在许多情况下,感兴趣的界面仅限于特定区域。

通过 INTERFACE 语句上的 X.MIN、X.MAX、Y.MIN 和 Y.MAX 参数来完成。(这些参数定义了一个矩形,其中应用了接口属性。)

INTERFACE QF=3e10 X.MIN=1.0 X.MAX=2 Y.MIN=0.0 Y.MAX=0.5
#将界面电荷限制在指定矩形内的半导体-绝缘体边界。

Specifying Physical Models 

指定物理模型使用语句:

  • MODELS语句(除碰撞电离外的所有模型)
  • IMPACT 语句(碰撞电离)

包含模型的参数的语句:MODELS、IMPACT、MOBILITY 和 MATERIAL。

物理模型可以分为五类:迁移率、复合、载流子统计、碰撞电离和隧穿。

MODELS CONMOB FLDMOB SRH FERMIDIRAC 
IMPACT SELB

#指定标准浓度相关迁移率、平行场迁移率、

#应使用具有固定载流子寿命的 Shockley-Read-Hall 复合、Fermi Dirac 统计
#和 Selberherr 碰撞电离模型。

MODELS 语句的 MOS、BIP、PROGRAM 和 ERASE 参数配置一组基本的移动性、重组、载波统计和隧道模型。

MOS 和 BIP 参数启用 MOSFET 和双极器件的模型,而 PROGRAM 和 ERASE 启用编程和擦除可编程器件的模型。

MODELS MOS PRINT
#启用 CVT、SRH 和 FERMIDIRAC 模型,
MODELS BIPOLAR PRINT
#启用 CONMOB、FLDMOB、CONSRH、AUGER 和 BGN 模型。

 如果在 MODELS 语句中还指定了 LAT.TEMP,或者 TEMPERATURE 参数与 300 Kelvin 相差超过 10 Kelvin,则使用 ANALYTIC 模型而不是 CONMOB

note:
PRINT 参数列出了运行时输出的模型和参数,这些模型和参数将在模拟过程中使用。
这允许您验证模型和材料参数。 我们强烈建议您在 MODELS 语句中包含 PRINT 参数

依次定义不同材料的物理模型

        这对于异质结器件模拟和定义多个半导体区域并且可能具有不同特性的其他模拟很有用。

        对于基于先进材料的设备,应仔细研究这些模型参数。

举例 

MODEL MATERIAL=GaAs FLDMOB EVSATMOD=1 ECRITN=6.0e3 CONMOB
MODEL MATERIAL=InGaAs SRH FLDMOB EVSATMOD=1 \ 
ECRITN=3.0e3

#改变每种材料中使用的迁移率模型和临界电场。

 Energy Balance Models

        电荷传输的传统漂移扩散模型忽略了非局部效应,例如速度超调和降低的能量相关碰撞电离。

        Atlas 可以通过使用能量平衡模型对这些影响进行建模,该模型使用玻尔兹曼传输方程的高阶近似方程。在这个方程中,迁移参数,例如迁移率和碰撞电离,是局部载流子温度而不是局部电场的函数。

启用energy balance transport model

在 MODELS 语句中使用 HCTE、HCTE.EL 或 HCTE.HO 参数。(这些参数分别为载流子、仅电子或仅空穴启用能量传输模型)

举例

MODELS MOS HCTE
#启用电子和空穴的能量平衡传输模型
# MOSFET 模型。

Physical Models总结

载流子统计模型 

Carrier Statistics Models
ModelSyntaxNotes
BoltzmannBOLTZMANN默认 模型
Fermi-DiracFERMI在重掺杂区域的reduced carrier concentrations  (statistical approach)

Incomplete Ionization

(不完全电离 )

INCOMPLETE说明dopant freeze-out。 通常,它在低温下使用。
Silicon Ionization ModelIONIZ说明重掺杂 Si 的完全电离。 与INCOMPLETE一起使用。
Bandgap NarrowingBGN在重掺杂区域很重要。 对双极增益至关重要。 使用Klaassen Model

迁移率模型

Mobility Models
ModelSyntaxNotes
Concentration DependentCONMOB查找表仅在 300K 时对 Si 和 GaAs 有效。 使用简单的power law temperature dependence。
Concentration and Temperature DependentANALYTICCaughey-Thomas公式。 调整为 77- 450K
Arora’s ModelARORASi 的 ANALYTIC 的替代方法。
Carrier-Carrier ScatteringCCSMOBDorkel-Leturq 模型。 包括 n、N 和 T 依赖性。  载流子浓度高时很重要。(例如,正向偏置功率器件)。
Parallel Electric Field DependenceFLDMOBSi 和 GaAs 模型。
需要对任何类型的速度饱和效应进行建模
Tasch ModelTASCH包括横向场相关性。
仅适用于平面设备。 需要非常精细的网格。
Watt ModelWATT仅应用于表面节点的横向场模型
Klaassen ModelKLA包括 N、T 和 n 相关性。对多数载流子和少数载流子应用单独的迁移率。 推荐用于双极器件
Shirahata ModelSHI包括 N,E(垂直方向)。 可与 KLA 结合的替代表面迁移率模型。
Modified WattMOD.WATTWATT 模型扩展到非表面节点。 应用恒定效果。 平面 MOS 器件的最佳模型
Lombardi (CVT) ModelCVT完整的模型,包括 N、T、E// 和E(垂直方向)效果。 适用于非平面设备
Yamaguchi ModelYAMAGUCHI包括 N、E// 和E(垂直方向)效果。 仅针对 300K 校准

n 是电子浓度,p 是空穴浓度,T 是晶格温度,N 是掺杂剂浓度,Ell 是平行电场,E(垂直方向)是垂直电场。

复合模型

Recombination Models
ModelSyntaxNotes
Shockley-Read-HallSRH使用固定的少数载流子寿命。 应该在大多数模拟中使用。
Concentration DependentCONSRH使用浓度相关的寿命。推荐用于硅。
AugerAUGER三个载波的直接过渡。在高电流密度下很重要。
OpticalOPTRBand-band recombination。仅适用于直接材料。
Surface

S.N

S.P

半导体与绝缘体界面的复合。 这是在 INTERFACE 语句中设置的。

电离模型

Impact Ionization
ModelSyntaxNotes
Selberherr’s ModelIMPACT SELB推荐用于大多数情况。包括温度相关参数。
Grant’s ModelIMPACT GRANT类似于 Selberherr 的模型,但具有不同的系数
Crowell-SzeIMPACT CROWELL使用依赖于载流子散射长度。
Toyabe ModelIMPACT TOYABE与Energy Balance一起使用的Non-local model。
接受任何 IMPACT 语法。
ConcannonN.CONCAN P.CONCAN在 Flash EEPROM 中开发的Non-local model
技术。

 隧道模型和载流子注入模型

Tunneling Models and Carrier Injection Models
ModelSyntaxNotes
Band-to-Band (standard)BBT.STD用于直接跃迁。需要非常高的场强
Concannon Gate Current ModelN.CONCAN P.CONCAN与 Concannon 衬底电流模型一致的非局部栅极模型
Direct Quantum tunneling (Electrons)QTUNN.EL由绝缘体引起的通过导带势垒的量子隧穿
Direct Quantum tunneling (Hole)QTUNN.HO由于绝缘体,量子隧穿穿过价带势垒。
Fowler-Nordheim (electrons)FNORD穿过绝缘体的隧道Self-consistent计算。 用于 EEPROM。
Fowler-Nordheim (holes)FNHOLES与 FNORD 的holes相同。
Klaassen Band-to-BandBBT.KL包括直接和间接跃迁
Hot Electron InjectionHEI模拟高能载流子穿过绝缘体的隧道。 用于栅极电流和闪存 EEPROM 编程。
Hot Hole InjectionHHIHHI 表示热空穴注入

使用 C 解释器指定模型

         C 语言解释器:允许指定 Atlas 使用的许多模型。

        要使用这些函数,在名为 Atlas lib 文件的特殊文件中,将模型在 C 中实现为方程。 您可以通过键入以下内容访问默认的 Atlas 模板文件:

atlas -T <filename>
#在 UNIX 命令提示符下。 这将创建一个默认模板文件,其名称由 <filename> 参数指定。

        要使用解释器函数,在包含 C 语言文件名称的语句中给出相应的参数,其中给出的模型作为参数值。

例子

MATERIAL NAME=Silicon F.MUNSAT=munsat.lib
#指定文件 munsat.lib 包含用于规范平行场相关电子迁移率模型的 C-Interpreter 函数。

Choosing Numerical Methods(选择数值方法)

数值求解技术 

        几种不同的数值方法可用于计算半导体器件问题的解决方案。

        数值方法在输入文件的 METHOD 语句中给出。

        不同的模型组合需要 Atlas 来求解多达六个方程。

对于每种模型类型,基本上有三种类型的求解技术:

解耦decoupled(GUMMEL)

        GUMMEL 方法将依次求解每个未知数,同时保持其他变量不变,重复该过程直到获得稳定的解。

        通常,GUMMEL 方法在方程组弱耦合但只有线性收敛的情况下很有用。

完全耦合 fully coupled(NEWTON)

        NEWTON 方法一起求解整个未知数系统。

        当方程组强耦合且具有二次收敛时,NEWTON更有用。

        然而,牛顿法可能会花费额外的时间来求解本质上是常数或弱耦合的量。NEWTON 还需要对问题进行更准确的初始猜测以获得收敛。因此,在这些情况下,BLOCK 方法可以提供比 NEWTON 更快的模拟时间。

BLOCK

        BLOCK 方法将求解一些完全耦合的方程,而其他的则解耦合。

        GUMMEL 通常可以为问题提供更好的初始猜测。用几次 GUMMEL 迭代开始一个解决方案以生成更好的猜测是很有用的。然后,切换到 NEWTON 以完成解决方案。

解决方法的规范如下:

METHOD GUMMEL BLOCK NEWTON

        该语句的确切含义取决于它所适用的特定模型。

 基本漂移扩散计算

        等温漂移扩散模型需要求解电位、电子浓度和空穴浓度三个方程。

        单独指定 GUMMEL 或 NEWTON 将产生简单的 Gummel 或 Newton 解决方案,如上所述。

对于几乎所有情况,首选 NEWTON 方法并且它是默认方法。

指定:

METHOD GUMMEL NEWTON
#求解器以 GUMMEL 迭代开始,如果没有达到收敛,则切换到 NEWTON。

#这是为任何设备获取解决方案的一种稳健但更耗时的方式。
#强烈建议将此方法用于所有具有浮动区域(例如 SOI 晶体管)的模拟
#浮动区定义为掺杂区,通过 pn 结将其与所有电极隔开。

#对于所有等温漂移扩散模拟,BLOCK 等效于 NEWTON

带Lattice Heating的漂移扩散计算

         当将 lattice heating model 添加到漂移扩散时,会添加一个额外的方程。

        BLOCK 算法将三个漂移扩散方程求解为 NEWTON 解。

        接下来是热流方程的 GUMMEL 解。

        NEWTON 算法以耦合方式求解所有四个方程。 一旦温度高, NEWTON是首选。但是,对于低温梯度,BLOCK 更快。
        通常,使用的组合是

METHOD BLOCK NEWTON

Energy Balance Calculations

        能量平衡模型需要解决多达 5 个耦合方程。

        GUMMEL 和 NEWTON 与漂移扩散模型的含义相同。(GUMMEL 指定解耦解,而 NEWTON 指定完全耦合解。)

        但是 BLOCK 执行电势、载波连续性方程的耦合解,然后是载波能量平衡和载波连续性方程的耦合解。

        通过在同一行上指定多个求解方法来从 BLOCK 切换到 NEWTON。

例如:

METHOD BLOCK NEWTON

#从 BLOCK 迭代开始,如果仍未达到收敛,则切换到 NEWTON。

#对于许多能量平衡应用来说,这是最稳健的方法。

#算法切换的点是预先确定的,但可以在 METHOD 语句中更改,Silvaco 设置的默认值适用于大多数情况。

Energy Balance Calculations with Lattice Heating

         当非等温求解与能量平衡模型一起执行时,必须求解多达六个方程的系统。

        GUMMEL 或 NEWTON 分别以迭代或完全耦合的方式求解方程。

         BLOCK 最初执行与能量平衡计算相同的功能,然后以解耦方式求解晶格加热方程。

Setting the Number of Carriers

        Atlas 可以同时求解电子和空穴连续性方程,也可以只求解一个或一个都不求解。使用 CARRIERS 参数进行此选择。

例子

METHOD CARRIERS=2
#需要为两个载流子指定解决方案。
#这是默认设置。 对于一个载流子,需要 ELEC 或 HOLE 参数。

仅对于空穴解决方案:

METHOD CARRIERS=1 HOLE

要为电势选择解决方案,只需指定:

METHOD CARRIERS=0 

 note:

使用语法 MODEL NUMCARR=<n> 设置载流子数量已过时,不应使用。

METHOD 语句的重要参数 

        可以更改与数值求解过程相关的所有参数。但是,除非您具有数值算法的专业知识,否则不建议这样做。对于大多数求解条件,所有这些参数都被指定了最佳值。

但是,在此阶段,以下参数值得注意:

CLIMIT 或 CLIM.DD

        指定求解器要解析的浓度的最小值。

        有时,您需要降低此值以帮助解决故障特征。

        对于所有击穿模拟,建议使用 CLIMIT=1e-4 值,其中击穿前电流很小。

        CLIM.DD 相当于 CLIMIT,但是对于临界浓度使用更方便的 cm-3 单位。

        CLIM.DD 和 CLIMIT 由以下表达式相关:

 DVMAX

        控制牛顿法每次迭代的最大电位更新。默认对应于 1V。

        对于需要大电压的功率器件,您可能需要增大 DVMAX 值。

        DVMAX=1e8 可以提高高压偏置斜坡的速度

CLIM.EB

        控制下面的截止载流子浓度,程序不会考虑载流子温度的误差。

        这应用于能量平衡模拟,以避免在结构中载流子浓度低的位置过度计算载流子温度。

        将此参数设置得太高,Atlas 会忽略显着载流子浓度的载流子温度误差,将导致不可预测且大多不正确的结果。

 METHOD选择的限制

以下情况需要为等温漂移扩散模拟设置 METHOD NEWTON CARRIERS=2

  • 当前边界条件
  • 分布式或集中的外部元素
  • 交流分析
  • 碰撞电离

BLOCK 或 NEWTON 或两者都允许用于晶格热和能量平衡

注意:在这些情况下使用 GUMMEL 方法进行模拟可能会导致不收敛或不正确的结果 

 Obtaining Solutions(获得解决方案)

Atlas 计算直流、交流小信号和瞬态解决方案

        获得解决方案类似于为设备测试设置参数测试设备。

        定义设备中每个电极上的电压,然后Atlas 计算通过每个电极的电流。

Atlas 计算内部量(例如整个设备中的载流子浓度和电场,这是难以或不可能衡量的信息)

        解决方案是通过从这个初始平衡条件逐步调整电极上的偏置来获得的。由于初始猜测策略,电压步长是有限的。

        在所有模拟中,设备从所有电极上的零偏置开始。

保存结果

        使用 LOG 或 SAVE 语句。

DC Solutions(直流解决方案)

在 DC 解决方案中,每个电极上的电压使用 SOLVE 语句指定。

例子:

SOLVE VGATE=1.0 
SOLVE VGATE=2.0
#在栅电极上用 1.0V 和 2.0V 解决单个偏置点。
SOLVE VGATE=2.0 
SOLVE VDRAIN=1.0
#解决方案是针对 1.0V 的漏极电压和 2.0V 的栅极电压

        Atlas 中的一个重要规则是,如果在给定的 SOLVE 语句中未指定任何电极上的电压,则假定来自最后一个 SOLVE 语句的值。 

        当特定电极上的电压从未在任何 SOLVE 语句中定义并且电压为零时,无需在所有 SOLVE 语句中明确说明所有电极上的电压。

例子:在 MOSFET 中,如果未指定 VSUBSTRATE,则 Vbs 默认为零

Sweeping The Bias 

        对于大多数应用,通常需要扫描一个或多个电极。基本的  DC stepping不方便,应使用ramped bias。

例子:

SOLVE VCOLLECTOR=2.0 
SOLVE VBASE=0.0 VSTEP=0.05 VFINAL=1.0 NAME=base
#将基极电压从 0.0V 斜升至 1.0V,步长为 0.05V,固定集电极电压为 2.0V
#NAME 参数是必需的,电极名称区分大小写。
#确保初始电压 VSTEP 和 VFINAL 一致。
#从零到 1.5V ,指定以0.2V步进斜生是错误的。将以 1.4V 或 1.6V 结束

Generating Families of Curves

许多应用(例如 MOSFET Id/Vds 和双极 Ic/Vce 仿真)都需要生成一系列曲线。、

生成一系列曲线的方法:

        首先在每个步进偏置点处获得解,然后在每个步进点处对扫描偏置变量进行求解。

例子:
在 MOSFET Id/Vds 曲线中,每个 Vgs 值的解都是在 Vds=0.0V 时获得的。

曲线保存 

        这些solution的输出保存在 Atlas solution files中。 对于每个栅极偏置,加载solution files并执行增加漏极电压。

三个 1V 栅极步进和 3.3V 漏极扫描的曲线族将在 Atlas 中实现如下:

SOLVE VGATE=1.0 OUTF=solve_vgate1 
SOLVE VGATE=2.0 OUTF=solve_vgate2
SOLVE VGATE=3.0 OUTF=solve_vgate3
LOAD INFILE=solve_vgate1 
LOG OUTFILE=mos_drain_sweep1 
SOLVE NAME=drain VDRAIN=0 VFINAL=3.3 VSTEP=0.3
LOAD INFILE=solve_vgate2 
LOG OUTFILE=mos_drain_sweep2 
SOLVE NAME=drain VDRAIN=0 VFINAL=3.3 VSTEP=0.3
LOAD INFILE=solve_vgate3 
LOG OUTFILE=mos_drain_sweep3 
SOLVE NAME=drain VDRAIN=0 VFINAL=3.3 VSTEP=0.3

#LOG 语句用于将每个栅极电压的 Id/Vds 曲线保存到单独的文件中。
#建议以这种方式保存数据,而不是保存到单个 LOG 文件中

 Initial Guess(初始猜测)的重要性

        要获得所用方程的收敛性,为要在每个偏置点评估的变量提供良好的initial guess 。Atlas 求解器使用此initial guess 并迭代到收敛解。(对于等温漂移扩散模拟,变量是电势和两个载流子浓度。)

          如果使用合理的网格,Atlas 中几乎所有的收敛问题都是由对解的initial guess 不佳造成的。

        在bias ramp期间,任何 bias的initial guess 由前两个结果的投影提供。 当前两个结果不可用时,问题往往会出现在ramp开始附近。 如果有一个先前的 bias可用,则单独使用它。

举例:

下面两个示例最终会产生相同的结果。但是第一个可能比第二个有更多的收敛问题。

SOLVE VGATE=1.0 VDRAIN=1.0 VSUBSTRATE=-1.0
# 使用所有指定电极在 1.0V 下获得一种solution
 SOLVE VGATE=1.0 
 SOLVE VSUBSTRATE=-1.0
 SOLVE VDRAIN=1.0 

#首先执行仅栅极电压为 1.0V 的solution 所有其他电极都处于零偏压。
#然后,在栅极为1.0V的情况下,将衬底电位升至-1.0V,获得另一种solution。
# 最后,在衬底和栅极偏置的情况下,增加漏极电位,系统再次求解。

#与上面相比,这种方法的优势在于电压的小增量变化允许在每一步进行更好的初始猜测。

        一般来说,当 I-V 曲线是线性时,initial guess的投影方法会给出很好的结果。但如果 IV 曲线高度非线性或设备工作模式发生变化,则可能会遇到问题。通常,这可能发生在阈值或击穿电压附近。

         在这些偏置下,需要较小的电压阶跃来获得收敛。 正如将要描述的,Atlas 包含诸如 TRAP 参数和曲线跟踪器等功能,可在这些高度非线性区域中自动切断电压阶跃。

        在许多情况下,这些方法旨在克服与初始猜测相关的问题。

        这在涉及三个以上漂移扩散变量的模拟中尤为重要。 通常,耦合解需要良好的initial guess,而解耦解可以在较差的initial guess下收敛。

Initial Solution

        当不存在以前的solution时,必须根据掺杂情况对电位和载流子浓度进行初步猜测。这就是为什么执行的初始解必须是零偏压(或热平衡)情况。

这由语句指定:

SOLVE INIT

        但如果未指定此语法,Atlas会在第一个SOLVE语句之前自动计算初始解决方案。为了帮助这一初始猜测的收敛,仅针对电势在零载波模式下进行求解。

The First and Second Non-Zero Bias Solutions

        从使用Atlas的经验来看,第一和第二非零偏解是最难获得良好收敛性的。一旦获得了这两个解,初始猜测的投影算法就可用了,并且所有的解都应该有一个良好的初始猜测。

        然而,这前两个解必须使用初始解的结果作为其初始猜测的基础。因为初始解是零偏差的,所以它提供了一个很差的初始猜测。

        这样做的实际结果是,第一个和第二个非零偏置解决方案应该具有非常小的电压阶跃。

        在下面的示例中,第一种情况可能收敛,而第二种情况可能不收敛。 

 SOLVE INIT 
 SOLVE VDRAIN=0.1 
 SOLVE VDRAIN=0.2 
 SOLVE VDRAIN=2.0
 SOLVE INIT 
 SOLVE VDRAIN=2.0

Trap Parameter

        虽然Atlas提供了几种方法来克服较差的初始猜测和其他收敛问题,但了解初始猜测在获得每个解中的作用是很重要的。克服收敛不良的最简单、最有效的方法是使用: 

METHOD TRAP
# 这在默认情况下是启用的。它的作用是在检测到收敛问题时减少偏差步长。

考虑上一节中的示例:

SOLVE INIT
SOLVE VDRAIN=2.0
#如果第二个solve语句不收敛,Trap会自动将偏置步长减半,并尝试获得Vd=1.0V的解。
#如果该解不收敛,则偏置步长将再次减半以求解Vd=0.5V。
#重复此过程,直到方法参数MAXTRAPS设置的最大尝试次数。
#一旦达到收敛,就会再次增加偏置步长,以求解高达2.0V的电压。

#MAXTRAPS的默认值是4,不建议增加它,因为更改语法以使用较小的偏置步长通常要快得多。

         这种 trap facility在bias ramps期间非常有用,可以克服阈值电压等过渡点附近的收敛困难。请考虑以下用于提取MOSFET ID/VGS曲线的语法。

SOLVE VGATE=0.0 VSTEP=0.2 VFINAL=5.0 NAME=gate

        假设被模拟器件的阈值电压为0.7V,并且Atlas已经解决了栅极电压高达0.6V的问题。下一个解决方案,在0.8V时,一开始可能不会收敛。这是因为最初的猜测是从Vgs=0.4V和0.6V的两个亚阈值结果中形成的,现在解已变为非线性。陷阱设备将检测0.8V解决方案中的问题,并将偏置步长减半至0.7V,然后重试。这可能会汇聚在一起。然后将执行0.8V的解决方案,并且偏置斜坡将以0.2V的步长继续。

Small-Signal AC Solutions (小信号交流解决方案)

        指定 AC模拟是 DC解决方案语法的简单扩展。交流小信号分析作为直流解决方案的后处理操作。

        交流模拟的结果是每对电极之间的电导和电容。 

Single Frequency AC Solution During A DC Ramp 

        在现有DC ramp上设置交流信号的最小语法就是交流标志和小信号频率的设置。例如:

SOLVE VBASE=0.0 VSTEP=0.05 VFINAL=1.0 NAME=base AC FREQ=1.0e6

         通常不需要用于设置信号幅度和其他参数的其他AC语法,因为默认设置就足够了。一个例外是在一维MOS电容模拟中。要在反演/深度耗尽区域获得收敛,请添加DIRECT参数以获得更健壮的求解方法。

Ramped Frequency At A Single Bias

        对于某些应用,例如确定双极增益与频率的关系,您需要提高模拟的频率。

        这是使用以下语法完成的: 

SOLVE VBASE=0.7 AC FREQ=1e9 FSTEP=1e9 NFSTEPS=10
#第一种情况是以1GHz的步长将频率从1GHz渐变到11GHz。使用频率线性增加,FSTEP以赫兹为单位。

SOLVE VBASE=0.7 AC FREQ=1e6 FSTEP=2 MULT.F NFSTEPS=10
#在第二个示例中,需要更大的频率范围,因此使用了频率的几何步长。
#MULT.F 参数用于指定FSTEP是频率的无单位乘法器。这将在从1MHz连续增加一倍到1.024GHz。

        可以将以下用于提升交流信号频率的语法与用于提升偏置的语法结合起来。在DC ramp期间,在每个偏置点进行频率 ramp。

SOLVE VBASE=0.0 VSTEP=0.05 VFINAL=1.0 NAME=base AC FREQ=1.0e6 \ 
 FSTEP=2 MULT.F NFSTEPS=10

Transient Solutions (瞬态解决方案)

        对于分段线性、指数和正弦偏置函数,可以获得瞬态解。当需要时间相关的测试或响应时,使用瞬态解决方案。要获得线性ramp的瞬态解,请指定TSTOP、TSTEP和RAMPTIME参数。

        下图显示了瞬态电压ramp的语法。

  • RAMPTIME指定线性增加获得其最终值的时间。
  • TSTOP指定解决方案停止的时间。
  • TSTEP指定初始步长。

        随后的时间步长由Atlas自动计算。

例如,以下语句: 

SOLVE VGATE=1.0 RAMPTIME=1E-9 TSTOP=10e-9 TSTEP=1e-11
#指定栅极电极上的电压将在1纳秒内在时域内从其现值增加到1.0 v。

        时域解在另外9纳秒内得到。指定初始时间步长为10皮秒。请注意,如果您指定后续的瞬时解决方案,不要将时间重置为零。

 Advanced Solution Techniques

Obtaining Solutions Around The Breakdown Voltage 

        使用标准的Atlas方法很难获得有关击穿电压的解决方案。在选择电压阶跃和解释结果时需要特别小心。在许多情况下,曲线示踪器是最有效的方法。 

        MOSFET击穿模拟可以使用以下标准语法来增加漏极偏置。注意,当击穿前泄漏较低时,建议在击穿模拟中设置CLIMIT。

IMPACT SELB 
METHOD CLIMIT=1e-4 
SOLVE VDRAIN=1.0 VSTEP=1.0 VFINAL=20.0 NAME=drain

        如果击穿电压为11.5V,则在偏差高于11.0V时将出现收敛问题。虽然这取决于所使用的技术,但击穿曲线通常是平坦的,直到电压非常接近击穿,然后几乎垂直。对于非常小的偏差增量,电流的变化是数量级的。

        这为使用上述语法的Atlas产生了一些问题。如果击穿发生在11.5V,没有解决方案的电压大于这个值。Atlas要升到20.0伏。因此,Atlas在某一点上无法收敛是不可避免的。这通常不是问题,因为到那个点时,击穿电压和曲线已经得到了。

        在11V以上,由于TRAP参数,将发生偏置阶跃降低。Atlas将不断尝试将漏极电压提高到11.5V以上,而这些点将无法汇合。但它将解渐近接近Vds=11.5V的点,直到它达到MAXTRAPS参数设置的极限。如果您使用默认的4个陷阱,最小允许的电压步长将是1.0X(0.5)^4或0.004V。这通常是足够的精度,以确定击穿点。但在需要MAXTRAPS之前,模拟可能不允许电流达到足够高的电平。

        通常在器件模拟中,一旦发现电流在一个小的电压增量中增加两个数量级,击穿点就确定了。如果你想跟踪整个击穿曲线直到大电流值,应用比简单的电压斜坡更先进的技术。下面的小节将描述其中的两种技术。这些方法可能会占用额外的CPU时间。

Using Current Boundary Conditions 

        在SOLVE语句的基本描述中考虑的所有示例中,都假定电压是强制的,电流是测量的。

        Atlas还通过当前边界条件支持反向情况。通过电极的电流在SOLVE语句中指定,并计算触点处的电压。当前的边界条件使用CONTACT语句设置。

        一旦指定了当前边界条件,就会更改SOLVE语句的语法。 

SOLVE IBASE=1e-6
#指定了给定电流的单个solution。

SOLVE IBASE=1e-6 ISTEP=1e-6 IFINAL=5e-6 NAME=base
#这将设置一个电流增加,在语法上类似于前面描述的电压增加。

SOLVE IBASE=1e-10 ISTEP=10 IMULT IFINAL=1e-6 NAME=base
#这与前面的情况类似。
#然而,IMULT参数用于指定ISTEP应该用作电流的乘法器,而不是线性加法。
#这是典型的电流增加,因为当需要覆盖几个数量级的电流时,线性增加是不方便的。

        关于电流边界条件,需要记住的重要一点是,当使用非常小的(噪声水平)电流时,初始猜测问题更加尖锐。通常,最好是增加电压,直到电流高于1pA/m,然后切换到电流强制。在解释结果时,记住电流边界条件下电极上的计算电压作为内部偏压存储是很重要的。换句话说,就是在 deckbuild 的 extract 语法中,tonyplot 或 vint.base 中的 base int.bias。

Compliance Parameter

       Compliance是用于在模拟过程中限制通过电极或电极上的电流或电压的参数。您可以设置电极Compliance。达到此限制后,偏置扫描将停止。

        这类似于参数设备测试,当我们停止设备过度压力或破坏时。Compliance是指获得解决方案后存在的最大合成电流或电压。如果您设置了电极电压,则Compliance将参考电极电流。如果存在电流边界条件,则可以设置电压合规性。

这些声明: 

SOLVE VGATE=1.0 
SOLVE NAME=drain VDRAIN=0 VFINAL=2 VSTEP=0.2 COMPL=1E-6 CNAME=drain

#求解栅极上的IV,然后以0.2V的步长将漏极电压向2V增加。
#如果在VD=2V之前漏极电流达到1µA/µm,则模拟将停止。

#因此,就像在参数测试中一样,您可以定义一个特定级别,并将模拟设置为在该点之前求解。
#一旦Atlas达到符合性限制,它将模拟命令文件中的下一语句行。

Curvetrace Capability 

        可以调用自动曲线跟踪算法,使Atlas能够跟踪复杂的IV曲线。该算法能自动从电压边界条件切换到电流边界条件,反之亦然。您可以使用单个SOLVE语句来跟踪复杂的IV曲线,例如击穿曲线和CMOS  latch-up ,包括Snapback区域和二次击穿。该算法基于动态载重线方法。

        例如,用于绘制二极管击穿的IV曲线的典型CURVETRACE和SOLE语句如下所示: 

CURVETRACE CONTR.NAME=cathode STEP.INIT=0.5 NEXTST.RATIO=1.2 \
 MINCUR=1e-12 END.VAL=1e-3 CURR.CONT 
SOLVE CURVETRACE

#CONTR.NAME指定要增加电压的电极的名称。
#STEP.INIT指定初始电压阶跃。
#NEXTST.RATIO指定用于增加IV曲线上远离转折点区域的电压步长的系数。
#MINCUR设置一个高于该值的小电流值,以激活动态载荷线算法。在MINCUR级别以下,使用STEP.INIT和NEXTST.RATIO确定下一个解决方案偏置。
#如果电极增加的电压或电流等于或超过END.VAL,则END.VAL停止跟踪。
#使用VOLT.CONT或CURR.CONT指定END.VAL是电压值还是电流值。

        在TonyPlot中绘制由CURVETRACE语句创建的log文件时,请为增加电压的电极选取标记为int.bias的内部偏置,而不是绘制标记为电压的施加偏置。

使用 deckbuild 来指定 solve 语句

可以使用 deckbuild 解决菜单生成解决语句。

菜单有一个电子表格样式的条目。要访问此菜单,请选择 deckbuild 中的 command/solutions/solve... 按钮。

要定义测试,请在工作表中单击鼠标右键,并选择 add new row 选项。

这将在工作表中添加新行。这个过程应该在你的设备结构中每个电极重复一次。然后可以编辑每个单元格的条目来构造一个 solve 语句。

有些单元格要求使用弹出菜单或数值输入进行选择。

第一单元中指定所述电极名称。要编辑电极名称,使用弹出式菜单按下鼠标右键单元格。

第二单元指定电极是电压(v)、电流(i)还是电荷(q)控制。

第三个单元指定 solve 语句是单个 dc solve (const)、扫描 dc 变量(var1)、步进 dc 变量(var2)还是瞬态解(pulse)。

剩下的单元格指定所需解决方案类型所需的参数值。

指定解决方案文件名的弹出窗口通过 props... 按钮访问。

您可以构造几个 solve 语句来创建 solve 序列,它们定义了一个测试。这个测试可以保存在一个文件中,然后使用Save... 和Load..按钮来读取。 

解释result

 Run-Time Output 

         Run-time output在 deckbuild 窗口的底部提供。如果作为批处理作业运行(batch job),则可以将Run-time output存储到文件中。

        运行时输出中发生的错误将显示在此窗口中。注意,并非所有错误都是致命的(因为 deckbuild 试图解释文件并继续)。这可能导致语句被忽略,从而导致意想不到的结果。我们建议您在任何新创建的输入文件第一次运行时检查它的运行时输出,以拦截任何错误。

        如果您在 models 语句中指定了 print 选项,那么将在运行时输出的开始处指定材料参数、常数和迁移率模型的详细信息。这是一个有用的方法,检查什么参数值和模型正在应用于仿真。我们建议您始终在输入文件中指定MODELS PRINT。

        在SOLVE语句中,每个方程的误差数字在每次迭代显示。对你来说了解迭代信息并不重要。然而,它可以为收敛问题提供重要的见解。

       output可以解释为:

左上角的值proj表示使用的初始猜测方法。此处使用默认投影方法。可选的是Precision、Local或Init。

第二个值DIRECT表示求解器类型。这要么是直接的,要么是迭代的。

前三个列标题:i、j和m表示求解的迭代次数和求解方法。I表示解耦解的外环迭代次数。J表示内循环编号。m用单个字母表示求解方法,它们是: 

  • G = gummel
  • B = block
  • N = newton
  • A = newton with autonr
  • S = coupled Poisson-Schrodinger solution

其余的列标题表明哪个列列出了要解的方程的XNORM和RHSNORM错误。

在散列下面的每个错误列中打印的值是以10为底的错误的对数。每一列中虚线上方的值是所使用的公差。

当星号*符号作为数字中的最低有效位数出现时,这意味着该误差测量已满足其容忍度。

在实现收敛后,Atlas通过电极列出结果。

列Va,列出了接触面的电压。如果使用外部电阻或曲线仪,这将不同于施加的电压。列出了所有相关的当前组件。这里只给出电子、空穴、传导和总电流。

在其他模拟模式中,这些列可能不同。交流分析、MixedMode和3D模拟的输出与此标准不同。Atlas可以为复杂的模拟产生大量的运行时输出。

您可以将运行时输出保存到一个文件中。

Log Files

日志文件存储Atlas计算出的终端特征:

  • 在直流模拟中,存储每个电极的电流和电压。
  • 在瞬态模拟中,存储时间。
  • 在交流仿真中,存储小信号频率和电导和电容。
LOG OUTF=<FILENAME>
#用于打开日志文件。
#LOG语句之后所有SOLVE语句的终端特征和PROBE语句的结果一起保存到这个文件中。

         若要不将终端特征保存到该文件中,请使用另一个带有不同日志文件名或OFF参数的LOG语句。通常,每个偏置扫描都应该使用一个单独的日志文件。

        例如,在MOS Id/Vds模拟中,每个门偏置使用单独的日志文件,在双极Ic/Vce模拟中,每个基电流使用单独的日志文件。这些文件然后覆盖在TonyPlot。

        日志文件仅包含终端特征。它们通常在TonyPlot中查看。日志文件中数据的参数提取可以在DeckBuild中完成。无法将日志文件加载到Atlas中以重新初始化模拟。

日志文件中的电流单位

        通常,电流单位会写入日志文件。在TonyPlot中,它是安培每微米。这是因为Atlas是一个二维模拟器。它将第三维(或Z方向)设置为一微米。因此,如果将MOSFET的Atlas 2D模拟结果与宽度为20微米的MOSFET的测量数据进行比较,则需要将日志文件中的电流乘以20。

有四个例外: 

  • 在Atlas的3D模块中,宽度在3D结构中定义。因此,电流单位为安培
  • 在MixedMode中,设置设备的宽度。电流的单位也是安培
  • 使用柱面坐标时,写入日志文件的电流通过柱面积分,单位为安培
  • 使用MESH语句中的“宽度”参数时,电流按此因子缩放,单位为安培。

        类似的规则适用于交流模拟产生的电容和电导。它们通常分别为1/(欧姆.微米)和法拉/微米。 

Utmost Interface 

        Atlas日志文件可以直接以批处理模式读取,最大限度地提高了效率。

        以下命令用于读取存储在单独日志文件中的一组IV曲线。 

INIT INF=<filename> MASTER 
INIT INF=<filename> MASTER APPEND

DeckBuild中的参数提取

        EXTRACT命令在DeckBuild环境中提供。它允许您提取设备参数。该命令具有灵活的语法,允许您构造特定的提取例程。

        “提取”操作上一个已解算的曲线或结构文件。默认情况下,EXTRACT使用当前打开的日志文件。要覆盖此默认值,请在提取例程之前提供提取要使用的文件名。例如: 

EXTRACT INIT INF="<filename>"

        使用提取的一个典型示例是提取MOS晶体管的阈值电压。在以下示例中,通过计算Id/Vg曲线的最大斜率,找到与X轴的截距,然后减去应用漏极偏置的一半来提取阈值电压

EXTRACT  NAME="nvt"  XINTERCEPT(MAXSLOPE(CURVE  (V."GATE",
(I."DRAIN"))) \
-(AVE(V."DRAIN"))/2.0)

        提取结果将显示在运行时输出中,默认情况下存储在文件结果中。最终的要在EXTRACT命令结束时将结果存储在其他文件中,请使用以下选项:

EXTRACT....DATAFILE="<filename>"

        截止频率和正向电流增益特别用作输出参数。这些功能可定义如下:

# MAXIMUM CUTOFF FREQUENCY 
EXTRACT  NAME="FT_MAX"  MAX(G."COLLECTOR""BASE"/
(6.28*C."BASE""BASE"))
#FORWARD CURRENT GAIN 
EXTRACT NAME="PEAK GAIN" MAX(I."COLLECTOR"/ I."BASE")

交流参数提取

可以用 deckbuild 或 tonyplot 对 atlas 产生的电容和电导矩阵进行基本分析。

闸极和漏极之间的电容在 tonyplot 中标记为 cgate > drain,在 deckbuild 的提取物中标记为 c“ gate”“ drain”。

任何电极上的总电容定义为Celectrode>electrode。

因此,cgate > gate 的大小就是总的栅电容。

Log 语句还包括小信号、双端口 rf 分析选项,包括 sparameter 提取。

解决方案被保存到日志文件和运行时输出中。

射频分析的选项包括: 

s.param, y.param, h.param, z.param, abcd.param gains 

终端阻抗和寄生效应通过添加下列任何一项来解释:

impedance=<val>, rin=<val>, rout=<val>, rcommon=<val> or 
rground=<val>, lin=<val>, lout=<val>,
lcommon=<val> or lground=<val>, width=<val>
#宽度默认为1um,阻抗默认为50Ω。所有寄生参数默认为零。

        当 GAINS选项被添加到LOG语句时,Stern稳定系数k与当前增益(h21)、GUmax和GTmax一起计算。交流分析的运行时输出被修改为只列出分析频率和电极电导/电容值。如果将两个端口选项之一添加到LOG语句中(例如,S.PARAM),则运行时输出中也会包含两个端口参数。

        交流分析的运行时输出被修改为只列出分析频率和电极电导/电容值。如果将两个端口选项之一添加到LOG语句中(例如,S.PARAM),则运行时输出中也会包含两个端口参数。

其他函数

EXTRACT有两个额外的重要函数。

  • 第一个函数是为VWF数据库提供数据。换句话说,要将设备参数存储到VWF数据库,必须使用EXTRACT对它们进行评估。
  • 第二个函数是,当使用DeckBuild优化器调优参数时,使用EXTRACT语句作为优化目标。

TonyPlot中的函数

        在TonyPlot中的编辑/功能菜单允许您在Graph Function文本字段中指定和绘制终端特征的功能。

        例如,使用以下函数计算跨导:

dydx (drain current, gate voltage)

电流增益可计算为:

collector current / base current

        在创建函数时,纠正语法的关键在于,函数中任何变量的名称与Display菜单上的Y Quantities列表中的名称相同。

Solution Files

      Solution files or structure files提供设备在特定偏置点(直流解决方案或瞬态解决方案)的图像。

        这使您能够查看所讨论的器件结构中的任何评估量,从掺杂分布和能带参数到电子浓度和电场。这些文件应该使用TonyPlot来绘制。

用于生成这些文件的语法有两种形式:

SAVE OUTFILE=<filename> 

#将保存一个名为<filename>的文件,其中包含先前求解的偏置点的数据。
SOLVE .... OUTFILE=<filename>.sta MASTER [ONEFILEONLY]
#在这种情况下,将在solve语句中求解的每个偏置点保存在一个Structure files中。
#文件名的最后一个字母将自动按字母顺序递增(即*.sta,*.stb, *.stc...,等等)。
#如果需要最后一个偏差点的solution,可以在命令中添加参数onefileonly。 <filename>.sta文件将在每个solution点被覆盖。

       structure files可以很大(1 - 2 MB),这取决于所保存的网格密度和数量。建议删除不需要的结构文件。

        如果从长时间的模拟中编写了许多  Solution files,那么通常很难找出哪个  Solution files属于哪个偏置点或瞬态时间。 Solution files应该在TonyPlot中绘制。在TonyPlot中,您可以创建2D等高线图和1D切线。要找出TonyPlot中任何  Solution files的偏置点,选择该plot,并按键盘上的B。

Interpreting Contour Plots(等高线图解释) 

         保存在Solution files中的某些数量在求解期间没有在节点处进行计算。它们在网格中每个三角形边的中心被评估。每个节点上的数量的V值是由与该节点相连的三角形边的值求平均值得到的。可以通过OUTPUT语句中的选项选择用于进行平均的加权方法。对于某些网格,选择一种非默认的平均方法可以获得更平滑的轮廓图。

        在解释等高线图时,一定要记住Solution files只包含每个节点的值。在TonyPlot中看到的颜色填充只是基于节点值的插值。这可能会导致偶尔出现奇怪的等值线值。在这些情况下,使用TonyPlot中的探针检查节点值。

        主要的求解变量(势能,载流子浓度,晶格温度和载流子温度)在Atlas网格节点上计算。因此,它们在TonyPlot中总是正确的。但由于Atlas不使用节点值的数量,如电场和移动性,在计算中使用的实际值不能从TonyPlot或结构文件确定。PROBE语句允许您直接探测结构中给定位置的值。这提供了最精确的方法来确定Atlas计算中使用的实际值。

Customizing Solution Files (OUTPUT Statement)

        在一个结构文件中默认保存多个数量。例如,掺杂,电子浓度和电势。你也可以通过使用OUTPUT语句指定额外的量(例如conduction band potential)。

        这必须在有关的SAVE语句之前。

例如,

为了保存传导和价带电势,以下命令将在相关保存之前的某个点使用:

OUTPUT CON.BAND VAL.BAND

保存每个偏置点处结构的数量 (PROBE statement)

  • Structure files 在一个偏置点提供结构的所有数据。
  • log files为一组偏差点提供终端特征。

使用 PROBE 语句将这些结合起来,并允许在每个偏置点保存某些结构量。

PROBE语句

指定要在给定XY位置保存的数量。

保存某些数量的最大值或最小值。

举例:

瞬态模式下每个偏置点处的PROBE (DC或时间步长)保存到log files中。语法:

PROBE NAME=mycarriers N.CONC X=1 Y=0.1
#把在(1,0.1)处求解的的电子浓度保存在日志文件中。
#当 tonyplot 显示日志文件时,该值将被标记为 mycarriers。
#然后可以绘制出载波与终端偏置或电流或其他探测数量的对比图。

        某些与方向有关的量,如电场和迁移率,可以被探测。在这些情况下,使用DIR、V.X、V.Y、V.Z、V.MAG、V.XANG或V.ZANG参数指定向量的一个成分。

        PROBE语句提供了提取数量的实际值的唯一方法,这些值是在Atlas中沿着每个三角形的边计算的。PROBE语句实际上存储了最接近探测位置的三角形边值,同时考虑了矢量的方向。

注意:

在材料或区域界面上精确指定探针的位置往往会导致错误的结果。最好是稍微偏移探测器在材料或感兴趣区域内的位置

在给定的偏置点重新初始化Atlas 

        每个SOLVE 语句将以偏置在前一个求解值的设备开始。要在先前求解的偏置点开始求解,请重新加载当时保存的结构文件。这是以下列方式完成的: 

LOAD INFILE=<filename> MASTER
#有关该求解点的信息将显示在输出窗口中。
#此命令用于求解一组I/V曲线。
#例如,要求解一系列Id/Vd(在各种Vg下),在零漏极偏置下,增加栅极。
#然后,在Vg的每个所需值处保存一个结构文件。在执行Vd扫描时,可以依次重新加载这些结构文件。

注意:

Atlas输入文件不能以LOAD语句开头。加载结构文件之前,请使用MESH语句加载相同结构的设备网格。此外,使用Atlas保存文件时,还需要相同的 MODELS, MATERIAL, 和CONTACT 设置。

  • 31
    点赞
  • 155
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值