Skip to content

Ch5:仿真结果

来源:sdevice_ug.pdf 第 5 章(W-2024.09) ✅ 完成

说明:本章按原章小节顺序进行逐段翻译,并在对应位置插入原文图示。

本章目录

5.1 访问仿真结果

Current File

Sentaurus Device 提供多种形式的输出。最重要的是,current file(电流文件)包含数值实验过程中获得的端点特性。Plot 文件允许您可视化器件内部量,从而提供真实实验无法获得的信息。其他输出(如 log file)允许您研究仿真过程本身,并提供理解和解决仿真问题的有力工具。

When to Write to the Current File

默认情况下,电流在 Plugin、Quasistationary 或 Transient 命令中的每次迭代后输出。此行为可通过这些命令体内的 CurrentPlot 语句进行修改。Solve 节中的 CurrentPlot 语句提供了对器件电流和电路电流绘图的完全控制。如果存在 CurrentPlot 语句,它精确决定哪些点被写入 current file。Sentaurus Device 仍可对中间点执行计算,但不会写入文件。

注意: 不要将 Solve 节中的 CurrentPlot 语句与"Tracking Additional Data in the Current File"(第 179 页)中描述的 CurrentPlot section 混淆。

CurrentPlot 语法

CurrentPlot 语句的语法为:

CurrentPlot (<parameters-opt>) {<system-opt>}

&lt;parameters-opt&gt;&lt;system-opt&gt; 都是可选的,可以省略。

&lt;parameters-opt&gt; 是一个空格分隔的列表,可以包含以下条目:

  • Time = (&lt;entry&gt;; &lt;entry&gt;; &lt;entry&gt;;) — 列出请求电流绘图的时间点。各条目以分号分隔。时间条目可采用以下形式:

    • floating-point number:请求电流绘图的时间值。

    • Range = (a b):指定从 a 到 b 的自由绘图范围。该范围内的所有时间点都将被绘图。

    • Range = (a b) Intervals = n:指定从 a 到 b 范围内的 n 个间隔,即生成以下绘图点:

      t = a, t = a + (b-a)/n, ..., t = b - (b-a)/n, t = b
  • Iterations = (&lt;int&gt;; &lt;int&gt;; &lt;int&gt;;): 列出需要绘图的迭代次数。此选项仅适用于 Plugin 命令。

  • IterationStep = &lt;int&gt;: 每隔 n 次迭代请求一次电流绘图。此选项仅适用于 Plugin 命令。

  • When (&lt;when_condition&gt;): 当条件满足时请求电流绘图。此选项的工作方式与 Plot 或 Save 命令相同(参见表 355 第 1788 页)。

&lt;system-opt&gt; 是一个空格分隔的设备列表。如果不存在 &lt;system-opt&gt;,则 Sentaurus Device 绘制所有器件电流和电路(在混合模式仿真中)。如果存在 &lt;system-opt&gt;,则仅绘制给定器件的电流。可使用关键字 Circuit 请求电路绘图。

示例:CurrentPlot 语句

单独的 CurrentPlot 语句为每次迭代创建一个电流绘图:

Quasistationary (
    InitialStep=0.2 MinStep=0.2 MaxStep=0.2
    Goal { Name="drain" Voltage=0.5 }
) {
    Coupled { Poisson Electron Hole }
    CurrentPlot
}

如果不需要电流绘图,可以指定一个"不可能"的时间 t = –1 的电流绘图:

Quasistationary (
    InitialStep=0.2 MinStep=0.2 MaxStep=0.2
    Goal { Name="drain" Voltage=0.5 }
) {
    Coupled { Poisson Electron Hole }
    CurrentPlot ( Time = (-1) )
}

在以下示例中,设备 nmos 的电流在 t = 0、10⁻⁸ 和 10⁻⁷ 时被绘图:

Transient ( MaxStep=1e-8 InitialTime=0 FinalTime=1e-6 )
{ Coupled { Poisson Circuit }
    CurrentPlot ( Time = (0; 1e-8; 1e-7) ) { nmos }
}

NewCurrentPrefix 语句

此关键字将指定的前缀附加到默认 current file 名称,并且所有后续 Plot 语句都定向到新文件。您可以在 Solve 节中多次指定 NewCurrentPrefix。例如:

Solve {
    Circuit
    Poisson
    NewCurrentPrefix = "pre1"
    Coupled {Poisson Electron Hole Contact Circuit}

    NewCurrentPrefix = "pre2"
    Transient (
        MaxStep= 2.5e-6 InitialStep=1.0e-6
        InitialTime=0.0 FinalTime=0.0001
        Plot {range=(10e-6,40e-6) Intervals=10}
    )
    {Coupled {Poisson Electron Hole Contact Circuit}}
}

在此示例中,File 和 System 节中指定的 current file 包含 Circuit 和 Poisson 求解的结果。Coupled 求解的结果保存到一个同名但带有 pre1 前缀的新 current file 中。最后一个 current file 包含带有 pre2 前缀的 Transient 求解的结果。

注意: System 节中定义的 current plot 的文件名以及 AC 分析的 plot file 也会被 NewCurrentPrefix 修改。

Tracking Additional Data in the Current File

命令文件顶层的 CurrentPlot section 用于将选定的参数值和网格数据包含到 current plot file (.plt) 中。

可用选项包括:

  • 可直接在 CurrentPlot section 中列出所需的量(参见第 180 页的 CurrentPlot Section)。
  • 可使用 Tcl 公式(参见第 184 页的 Tcl Formulas)。
  • 可使用 current plot PMI(参见第 1489 页的 Current Plot File)。
  • 可使用 current plot Tcl 接口,这是 current plot PMI 的替代方案(参见第 1544 页的 Current Plot File)。

CurrentPlot Section

Sentaurus Device 可以将附录 F(第 1573 页)列出的标量数据添加到 current plot file 中。

数据可根据坐标进行绘图。坐标以一到三个数字(取决于器件维度)表示在括号中。当按坐标绘图时,绘图值会根据需要进行插值。

此外,还可以输出指定域内量的平均值、积分、最大值和最小值。为此,请分别指定关键字 AverageIntegrateMaximumMinimum,然后在括号中指定域规格。域规格由以下任意数量的项组成:

  • Region 规格Region=&lt;string&gt;
  • Material 规格Material=&lt;string&gt;
  • Region interface 规格RegionInterface=&lt;string&gt;
  • Material interface 规格MaterialInterface=&lt;string&gt;
  • 半导体、绝缘体或全局匹配:关键字 SemiconductorInsulatorEverywhere,分别匹配所有半导体区域、所有绝缘体区域或整个器件
  • Window 规格Window[(x1 y1 z1) (x2 y2 z2)]
  • Polygon 规格Polygon(BottomPlane=&lt;value&gt; TopPlane=&lt;value&gt; Vertices((x1_1, x2_1) (x1_2, x2_2) (x1_3, x2_3) …))
  • Well 规格DopingWell(x1 y1 z1)(关于 doping well 边界定义,参见第 254 页 Doping Wells 中的静电势和准费米势初始猜测)

注意: 如果为 doping wells 激活了周期性边界条件,则任何 CurrentPlot 操作都会在与周期性 BC 相邻的所有连通 wells 上执行。支持的周期性 BC 包括 mortar 和 Robin PBC。

平均值、积分、最大值和最小值适用于器件的所有指定部分。同一器件部分的多个规格没有影响。此外,Name=&lt;string&gt; 用于指定写入 .plt 文件的名称。(默认情况下,名称由域规格中各名称自动连接而成,对于复杂规格会产生过长的名称。对于 Window 和 Region 或 Material 的组合,当使用多个相同的 Window 时,应使用 Name 参数来唯一标识 current file 中提取的量。)

对于最大值和最小值,Sentaurus Device 可以将最大值和最小值出现的坐标写入 .plt 文件。

对于平均值和积分,Sentaurus Device 可以写出数据场 f 定义的质心坐标 (⟨x⟩, ⟨y⟩, ⟨z⟩)

⟨x⟩ = ∫ x·f(x, y, z) dV / ∫ f(x, y, z) dV

其中积分覆盖指定域。⟨y⟩ 和 ⟨z⟩ 的定义类似。通过在指定域的括号中添加关键字 Coordinates 来激活坐标输出。

平均值、积分、最大值和最小值可以通过使用 window 规格来限制范围。1D、2D 或 3D window 由 window 两个对角坐标(单位为微米)定义。与 window 规格类似,2D 或 3D 拉伸 polygon 由底面和顶面的高度以及底面上所需多边形的坐标(至少需要三个坐标)定义(单位为微米)。底面和顶面根据坐标系自动推断,即对于 DF-ISE 几何体,它垂直于 z 方向;对于 UCS,它垂直于 x 方向。底面和顶面值必须与坐标系的 up 方向一致,即 DF-ISE 为 +z,UCS 为 -x。用于定义多边形的 x1 和 x2 方向根据右手坐标系定义,即 DF-ISE 为 x, y,UCS 为 z, y。请注意,定义多边形的顶点顺序可以是顺时针或逆时针。此外,对于二维几何体,BottomPlane 和 TopPlane 选项会被忽略。

此外,还可以使用 well 规格将域限制在 well 内。在这种情况下,well 由 well 内一点的坐标定义。当除了 window 或 well 外还指定了域列表时,将考虑 window 与指定域的交集进行平均值、积分、最大值或最小值计算。

积分长度单位和 current plot file 中名称的位数可以在 Math 节中指定(参见第 183 页的 CurrentPlot Options)。

Sentaurus Device 参数文件中的参数也可以添加到 current plot file 中。通用规格为:

[ Material=<material> | MaterialInterface=<interface> |
  Region=<region> | RegionInterface=<interface> ]
Model = <model> Parameter = <parameter>

指定位置(material、material interface、region 或 region interface)是可选的。但是,模型名称和参数名称必须始终存在。

注意: 规格顺序是固定的。可选的位置规格(material、material interface、region 或 region interface)必须后跟模型名称和参数名称。否则,Sentaurus Device 将报告语法错误。 关于如何确定模型名称和参数名称,参见第 137 页的 Ramping Physical Parameter Values。

示例:混合模式

在混合模式仿真中,CurrentPlot section 可以出现在 System 节内物理设备的正文中(也可以有全局 CurrentPlot section)。例如:

System {
    Set (gnd = 0)
    CAP Cm (Top=node2 Bot=gnd) {CurrentPlot {Potential ((0.7, 0.8, 0.9))}}
    ...
}

示例:高级选项

以下示例是一个使用更高级 CurrentPlot 功能的 2D 器件:

CurrentPlot {
    hDensity((0 1))               * position (0µm, 1µm) 处的空穴密度
    ElectricField/Vector((0 1))   * 电场矢量
    Potential (
        (0.1 -0.2)                * 坐标不一定是整数
        Average(Region="Channel") * 区域平均值
        Average(Everywhere)       * 整个器件的平均值
        Maximum(Material="Oxide") * 材料中的最大值
        Maximum(Semiconductor)     * 所有半导体中的最大值
                                    * 材料和区域的最小值,以名称 "x" 输出:
        Minimum(Name="x" Region="Channel" DopingWell(-0.1 0.3))
    )
    eDensity(
        Average(Semiconductor Coordinates)  * 平均值和质心坐标
        Maximum(DopingWell(-0.1 0.3) Coordinates)  * well 中最大值及坐标
        Integrate(Semiconductor)           * 半导体区域积分
    )
    SpaceCharge(
        Maximum(Window[(-0.2 0) (0.2 0.2)])  * 2D window 最大值
        Integrate(DopingWell(-0.1 0.3))     * well 积分
    )
}

注意: 如果除了 window 或 well 外还指定了多个域,则取 window 与指定域的交集进行平均值、积分、最大值或最小值计算。

示例:绘制参数值

以下示例向 current plot file 添加五条曲线:

CurrentPlot {
    Model = DeviceTemperature Parameter = "Temperature"
    Material = Silicon Model = Epsilon Parameter = epsilon
    MaterialInterface = "AlGaAs/InGaAs"
        Model = "SurfaceRecombination" Parameter = "S0_e"
    Region = "bulk" Model = LatticeHeatCapacity Parameter = cv
    RegionInterface = "Region.0/Region.1"
        Model = "SurfaceRecombination" Parameter = "S0_h"
}

此示例还显示了固定的规格顺序。可选的位置(material、material interface、region 或 region interface)后跟模型名称和参数名称。因此,此示例向 current plot file 添加以下五个参数值:

  1. 全局器件温度
  2. 硅的介电常数 ε
  3. AlGaAs–InGaAs 材料界面上电子的表面复合参数 s₀
  4. 'bulk' 区域的晶格热参数 cv
  5. Region.0–Region.1 区域界面上空穴的表面复合参数 s₀

CurrentPlot Options

在 current plot 积分过程中使用的长度单位(参见第 179 页的 Tracking Additional Data in the Current File)可按如下方式选择:

Math {
    CurrentPlot (IntegrationUnit = um)
}

选项为 cm(厘米)和 um(微米)。默认为 um。当积分密度(单位 cm⁻³)等量时,此关键字很有用。在 2D 仿真中,积分的单位为 µm²·cm⁻³(IntegrationUnit=um)或 cm⁻¹(IntegrationUnit=cm)。

current plot file 中量名称的位数可按如下方式指定:

Math {
    CurrentPlot (Digits = 6)
}

默认为 Digits=6。当两个量的名称由于四舍五入而变得相同时,此关键字很有用。在以下示例中,您希望监控两点的价带能量:

CurrentPlot {
    ValenceBandEnergy ((5.0, 199.011111) (5.0, 199.011112))
}

但是,使用默认设置 Digits=6 时,由于四舍五入,两个量被分配了相同的名称:

Pos(5,199.011) ValenceBandEnergy

通过增加位数,current plot file 中的名称变得不同。Digits 影响 current plot file 中以下量的名称:

  • 坐标(Coordinates)
  • Well 规格(Well specification)
  • Window 规格(Window specification)

Tcl Formulas

Sentaurus Device 可以评估 Tcl 公式并向 current plot file 添加结果。Tcl 解释器可以访问附录 F(第 1573 页)列出的数据,您可以提供 Tcl 命令来计算导出量。例如,可以计算电子电导率 σₙ:

σₙ = q·n·µₙ

对于 Tcl 公式,可以执行以下操作:

  • 在给定顶点处求值
  • 在由坐标指定的位置求值
  • 计算域上的最小值/最大值/平均值/积分
  • 绘制输出到 PMI 用户字段

对于最小值、最大值、平均值或积分运算或绘图操作,评估域可以限制为:

  • Region
  • Material
  • Region interface
  • Material interface
  • Contact
  • Semiconductor、insulator 或 metal regions
  • 整个器件
  • Doping well
  • Window
  • Polygon

对于最小值、最大值、平均值或积分运算,最小值或最大值的位置,或平均值或积分运算的质心(参见公式 30)也将被添加到 current plot file。

以下示例显示如何计算沟道区域中的平均电子电导率 σₙ:

CurrentPlot {
    Tcl (
        Dataset  = "Ave_channel eConductivity"
        Function = "Conductivity"
        Formula  = "set q 1.602e-19
                    set n [tcl_cp_ReadScalar eDensity]
                    set mu [tcl_cp_ReadScalar eMobility]
                    set value [expr $q * $n * $mu]"
        Operation = "Average Region = channel"
    )
}

Tcl 语句支持以下选项:

CurrentPlot {
    Tcl (
        Dataset  = "..."
        Function = "..."
        Unit     = "..."
        Init     = "..."
        Formula  = "..."
        Finish   = "..."
        Operation = "..."
    )
}
Dataset Option

此选项指定出现在 current plot file 标题部分的数据集名称。如果未指定,Sentaurus Device 生成名称 Tcl_Dataset_&lt;index&gt;,其中 &lt;index&gt; 是唯一的整数。例如:

Dataset = "channel eConductivity"
Function Option

此选项指定出现在 current plot file 标题部分的函数名称。如果未指定,Sentaurus Device 生成名称 Tcl_Function_&lt;index&gt;,其中 &lt;index&gt; 是唯一的整数。例如:

Function = "Conductivity"
Unit Option

此选项是 current plot 量的单位。.plt 文件格式不支持单位。例如:

Unit = "cm/s"
Init Option

此选项中的 Tcl 代码在每个绘图时间点首先执行。它可用于初始化将在 Formula 中引用的量。例如:

Init = "set counter 0"
Formula Option

此选项中的 Tcl 代码在各个网格顶点上执行。它必须计算一个公式并将结果赋值给 Tcl 变量 value

以下 Tcl 函数和变量可用:

  • tcl_cp_dim:网格维度;可能的值为 1、2 或 3
  • tcl_cp_vertex:当前顶点的网格索引
  • tcl_cp_ContactOuterVoltage:返回局部接触顶点的接触电压值(评估域必须是 contact)
  • tcl_cp_ContactInnerVoltage:返回局部接触顶点的接触内电压值(评估域必须是 contact)
  • proc tcl_cp_ReadScalar {dataname {plotname ""}}:返回局部顶点处标量数据场的值。对于常规数据集,使用数据名作为 dataname,plotname 留空以检索标量数据。对于动态数据集,必须同时指定 dataname 和 plotname。动态数据集的描述以及具有相应绘图名称的有效数据名,参见附录 F 第 1573 页。如果为某个数据名定义了绘图名称但未作为函数的第二个参数输入,则会显示"Unrecognized data name"错误消息。
  • proc tcl_cp_ReadVector {dataname index {plotname ""}}:返回局部顶点处向量数据场在指定索引处的分量。对于常规数据集,使用数据名作为 dataname,plotname 留空以检索标量数据。对于动态数据集,必须同时指定 dataname 和 plotname。参数 index 必须满足 0 &lt;= $index < $tcl_cp_dim
  • proc tcl_cp_WriteScalar {dataname value}:此 Tcl 函数为局部顶点定义标量场的值。这是 Tcl current plot 语句的副作用,通常用于计算 PMI 用户字段的值。

或者,您可以使用 Plot 操作(参见 Operation Option)。例如:

Formula = "incr counter
set value [tcl_cp_ReadScalar ElectrostaticPotential]"
Finish Option

此选项中的 Tcl 代码在每个绘图时间点最后执行。它可用于后处理目的。它可以访问 Tcl 列表结果,其中包含最终的 current plot 值,后跟坐标。当操作为 Minimum、Maximum、Average 或 Integrate 时(参见 Operation Option),坐标为相应极值或质心的坐标(参见公式 30)。例如:

Finish = "puts \"Used $counter calls\""

有关更多示例,参见第 189 页的 Examples。

Operation Option

此选项决定 current plot 公式的求值方式。可识别以下操作:

  • Node=&lt;int&gt;:在指定节点求值公式。
  • Coordinate=(...):在指定坐标求值公式。
  • Minimum:计算指定域上的最小值。
  • Maximum:计算指定域上的最大值。
  • Average:计算指定域上的平均值。
  • Integrate:计算指定域上的积分。
  • Plot=&lt;name&gt;:将公式输出到 PMI 用户字段。

注意: 必须仅指定这些操作之一。

要获得指定坐标处 current plot 公式的值,Sentaurus Device 在附近顶点处求值公式并插值这些值。

可通过指定 Interpolation=&lt;string&gt; 来选择所需的插值方案。可用的插值方案包括 ArsinhLinear(默认)和 Logarithmic

还可以为 arsinh 插值指定缩放因子:ArsinhFactor=&lt;value&gt;(默认值为 1)。

计算积分时的长度单位可按如下方式选择:IntegrationUnit=&lt;unit&gt;(选项为 cm(厘米)和 um(微米),默认为 um)。

对于 Minimum、Maximum、Average、Integrate 操作或 Plot 操作,也可以按如下方式指定所需域:

  • Region=&lt;regionname&gt;:Region 域
  • Material=&lt;materialname&gt;:Material 域
  • RegionInterface=&lt;region1/region2&gt;:Region interface 域
  • MaterialInterface=&lt;material1/material2&gt;:Material interface 域
  • Contact=&lt;contactname&gt;:Contact 域(仅适用于最小值、最大值、平均值或积分操作)
  • Semiconductor:使用所有半导体区域作为域
  • Insulator:使用所有绝缘体区域作为域
  • Conductor:使用所有金属区域作为域
  • Everywhere:使用整个器件作为域(默认)
  • DopingWell=(...):Doping well 域
  • Window=[[(...) (...)]]:Window 域
  • Polygon=(BottomPlane=... TopPlane=... Vertices((...) (...) (...) …)))

如果指定了多个域,Sentaurus Device 将仅在域相交的位置求值 current plot 公式。例如,可以指定:

Operation = "Average Region=drain DopingWell=(1 2)"

在这种情况下,公式仅在 drain 区域内同时也位于指定 doping well 内的那些顶点上求值。

Region interface、material interface 和 contact 规格不能与其他域组合。例如:

Operation = "Average Window=[(1 2) (3 4)]"

对于 contact 规格,当 contact 连接到多个区域时,您可以选择参与操作的 contact 顶点的子集(contact 与所选区域的交集)。所选区域由 Region 关键字指定。

例如,要对 contact anode 和 region r1 的交集求积分,请指定:

Operation = "Integrate Contact=\"anode\" Region=\"r1\""

Examples

在坐标 (7.2 µm, 2.1 µm) 处求值静电势 φ:

CurrentPlot {
    Tcl (
        Formula  = "set value [tcl_cp_ReadScalar ElectrostaticPotential]"
        Operation = "Coordinate = (7.2 2.1)"
        Dataset  = "7.2_2.1 ElectrostaticPotential"
        Function = "ElectrostaticPotential"
    )
}

将电子电导率 σₙ = q·n·µₙ(见第 184 页公式 31)保存为 PMI 用户字段:

CurrentPlot {
    Tcl (
        Formula  = "set q 1.602e-19
                    set n [tcl_cp_ReadScalar eDensity]
                    set mu [tcl_cp_ReadScalar eMobility]
                    set value [expr $q * $n * $mu]"
        Unit     = "Ohm^-1*cm^-1"
        Operation = "Plot = PMIUserField5 Semiconductor"
    )
}

绘制 window [(0 µm, 6 µm) (2.5 µm, 7 µm)] 内空间电荷 ρ 的积分:

CurrentPlot {
    Tcl (
        Formula  = "set value [tcl_cp_ReadScalar SpaceCharge]"
        Operation = "Integrate Window = [(0 6) (2.5 7)] IntegrationUnit = cm"
        Dataset  = "Integral_Window SpaceCharge"
        Function = "SpaceCharge"
    )
}

计算半导体区域中电子 Joule 热 Jₙ·E 的积分:

CurrentPlot {
    Tcl (
        Formula  = "set value 0
                    for {set d 0} {$d < $tcl_cp_dim} {incr d} {
                        set j [tcl_cp_ReadVector eCurrentDensity $d]
                        set f [tcl_cp_ReadVector ElectricField $d]
                        set value [expr $value + $j * $f]
                    }"
        Operation = "Integrate Semiconductor IntegrationUnit = cm"
        Dataset  = "Integral_Semiconductor eJouleHeat"
        Function = "JouleHeat"
    )
}

计算 contact anode 的分布电导:

CurrentPlot {
    Tcl (
        Formula = "set value 0
                  set Vext [tcl_cp_ContactOuterVoltage \"anode\"]
                  set QF [tcl_cp_ReadScalar \"QuasiFermiPotential\"]
                  for {set d 0} {$d < $tcl_cp_dim} {incr d} {
                      set j [tcl_cp_ReadVector eCurrentDensity $d]
                      set N [tcl_cp_ReadVector ContactSurfaceNormal $d]
                      set value [expr $value + $j * $N]
                  }
                  set value [expr $value / ($Vext - $QF + 0.0001)]"
        Operation = "Integrate Contact=\"top1\" Region=\"r2\" IntegrationUnit = cm"
        Dataset  = "Conductance"
        Function = "Conductance"
    )
}

计算积分值并使用 Finish 语句。要计算硅内光学产生率的积分并将结果写入 log file,请按如下方式使用 Finish 选项:

CurrentPlot {
    Tcl (
        Formula  = "set value [tcl_cp_ReadScalar OpticalGeneration]"
        Operation = "Integrate Material=Silicon"
        Dataset  = "IntegrSilicon G"
        Function = "OpticalGeneration"
        Finish = "
            set v [lindex $result 0]
            set x [lindex $result 1]
            set y [lindex $result 2]
            puts [format \"GSi = %.4g; centroid_coord=(%.4g %.4g)\" $v $x $y]"
    )
}

在这种情况下,log file 将包含以下信息:

GSi = 1.669e+21; centroid_coord=(1.718 0.5995)

Checkpoint 1/4 complete — Segment 1 written successfully.


5.2 Plot 文件

Device Plots

Device plots 显示器件中与空间相关的数据集,并提供器件内部的可视化视图。

What to Plot

Plot section 指定在仿真结束或仿真过程中(可选)保存到 File 节中指定的或 Solve 节中 Plot 命令指定的 Plot file 中的数据。连续的 plot 可以收集在单个文件中,也可以写入单独的编号文件,或通过覆盖先前 plot 写入单个文件。要将连续的 plot 收集在单个文件中,请在 File 节中指定 Plot(collected)=&lt;filename&gt;

Plot 命令中的关键字 OverwritenoOverwrite(参见第 193 页的 When to Plot)控制 plot 是写入单独文件还是写入单个文件。

注意: 您可以通过在 Math 节中指定 CompressTDR 来控制 Plot 文件的进一步压缩(超越基本标准压缩)。但是,进一步压缩可能并不总是能显著减小文件大小,并且根据文件内容,可能会略微增加文件大小。在 Math 节中指定 CompressTDR 适用于生成包含空间相关数据集的所有类型的 plot 命令。

矢量数据可通过在相应关键字后附加 /Vector 来绘制。例如:

Plot { ElectricField/Vector }

基于单元的标量数据可通过在相应关键字后附加 /Element 来绘制。例如:

Plot { eMobility/Element }

某些量(如载流子密度)即使未在 Plot section 中列出也会被放入 Plot file。全局 Math 节中的关键字 PlotExplicit 可抑制此行为。

默认情况下,plot file 还包含 Load 重新启动仿真所需的附加信息(参见第 233 页的 Save and Load Statements)。要禁止写入此附加信息,请在全局 Math 节中指定 -PlotLoadable

您可以指定关键字 DatasetsFromGrid 将量直接从 TDR 网格文件复制到 plot file。您可以通过单独指定 DatasetsFromGrid 来复制所有数据集:

Plot { DatasetsFromGrid }

或者,您可以通过列出其名称来复制选定的量:

Plot {
    DatasetsFromGrid (dataset1 dataset2 dataset3)
}

仅当 Sentaurus Device 未计算数据集时,才从 TDR 网格文件复制该数据集。否则,以 Sentaurus Device 计算的数据集优先。

注意: 关键字 DatasetsFromGrid 仅将整个数据集从 TDR 网格文件复制到 plot file。您不能复制部分数据集,例如张量和矢量数据集的分量。

所有可能的 plot 选项参见第 1773 页的表 342。

When to Plot

创建设备 plot 最简单的方法是在 File 节中定义 Plot。默认情况下,仅在仿真结束时输出到 Plot file。

Quasistationary 和 Transient 分析命令支持选项 Plot,允许您在这些命令执行时写入 plot。plot 文件名源自 File 节中 Plot 指定的名称。关于语法,参见第 140 页的准静态期间保存和绘图以及第 148 页的瞬态命令。

创建设备 plot 最灵活的方法是通过 Solve 节中的 Plot 语句。它提供对绘图时间的完全控制以及对文件名的有限控制。Plot 语句可用于 Solve 节的任何层级。命令形式为:

Plot (<parameters-opt>) <system-opt>

如果未指定 &lt;system-opt&gt;,则绘制所有物理设备和电路。使用 &lt;system-opt&gt; 指定用大括号分隔的可选设备列表(参见第 1776 页的表 346)。

如果未指定 &lt;parameters-opt&gt;,则使用默认值。关键字 LoadableExplicit 提供针对全局 Math 节中 PlotLoadablePlotExplicit 的 plot 专用覆盖。所有选项摘要参见第 1788 页的表 355。

示例

Solve {
    Plugin {
        Poisson
        Plot ( FilePrefix = "output/poisson")
        Coupled { Poisson Electron Hole }
        Plot (FilePrefix = "output/electric" noOverwrite)
    }
    Transient {
        Coupled { Poisson Electron Hole Temperature }
        Plot ( FilePrefix = "output/trans"
            Time = ( range = (0 1) ;
                     range = (0 1) intervals = 4 ; 0.7 ;
                     range = (1.e-3 1.e-1) intervals = 2 decade )
            NoOverwrite )
    }
    ...
}

Plugin 中的第一个 Plot 语句在泊松方程计算后写入名为 output/poisson_des.tdr 的文件。Plugin 中的第二个 Plot 语句写入名为 output/electric_0000_des.tdr 的文件,每次调用时内部编号递增。

瞬态中的 Plot 语句指定三种不同类型的时间条目(以分号分隔)。第一个条目指示必须写入 plot 文件的该范围内的所有时间。第二个时间条目强制瞬态仿真为给定时间计算解。在本例中,给定时间为 0.25、0.5、0.75 和 1.0。第三个条目用于单个时间 0.7。第四个条目触发在对数刻度细分范围的时间点绘图,在本例中导致在 1.e-3、1.e-2 和 1.e-1 处绘图。

Snapshots

Sentaurus Device 提供在仿真过程中以交互方式保存 snapshots 的功能。这可以通过向 Sentaurus Device 进程发送 POSIX 信号来完成。根据 File 节中是否指定了 Plot 或 Save 或两者都指定,该信号会在实际时间步长完成后请求写入 plot (.tdr) 文件或 save (.sav) 文件。

支持以下信号来保存 snapshots:

  • USR1:USR1 信号的出现促使 Sentaurus Device 在仿真完成其实际时间步长后写入 plot 文件或 save 文件。仿真之后将继续。
  • INT:默认情况下,发送 INT 信号会导致进程退出。如果在 Math 节中指定了 Interrupt=BreakRequestInterrupt=PlotRequest,则此行为会改变(参见第 1630 页的表 216)。在这两种情况下,INT 信号的出现都会促使 Sentaurus Device 写入 plot 文件或 save 文件。Interrupt=BreakRequest 会导致 Sentaurus Device 在保存 snapshot 后终止实际的 solve 语句。如果指定了 Interrupt=PlotRequest,仿真将继续。

可以通过调用 kill 命令向进程发送信号(请参阅操作系统的相应 man 页面)。进程 ID 可以从 .log 文件中提取。

Interface Plots

可以通过使用修饰符 /RegionInterface 来绘制在界面上定义的数据场。例如:

Plot { eTrappedCharge/RegionInterface }

以下字段可用于 interface plots:

  • TotalTrapConcentration
  • eTrappedCharge
  • hTrappedCharge
  • eHIDensity
  • hHIDensity
  • eHIDensityPerDensity
  • hHIDensityPerDensity
  • eHIDensityPerTemperature
  • hHIDensityPerTemperature
  • eHIDensityPer_eTemperature
  • hHIDensityPer_hTemperature

仅当网格文件中出现 interface 区域时才会生成 interface plots。

Plotting Results Along Carrier Paths

本节讨论如何沿载流子路径绘制结果。

Saddle Point Analysis in CIS Devices

CMOS 图像传感器(CIS)器件的一个设计参数是在光电二极管和栅沟道之间形成的载流子能量势垒。该过渡区域对应于静电势地形中的一个鞍点。

Sentaurus Device 可以对 CIS 器件执行鞍点分析。利用其路径搜索能力,Sentaurus Device 从一组起始点开始沿指定矢量场跟踪路径。路径另存为单独 TDR 文件中的 1D 数据集,可与器件结构 TDR 文件叠加。路径数据可以使用 Sentaurus Visual 以 xy 绘图模式绘制(例如,路径长度与带能量的关系)。

对于每个定义的起始点,Sentaurus Device 沿可使用 direction 指定的矢量场进行跟踪。以下是可能的 direction 规格:

  • CurrentDensity 这是默认选项。当求解完整的漂移-扩散方程组时,应使用此方向场。

    • direction = "CurrentDensity"direction = "+CurrentDensity":如果局部净掺杂为 n 型,n>p,则路径搜索沿负多数电子电流矢量 -Je 跟踪。如果局部净掺杂为 p 型,p≥n,则路径搜索沿正多数空穴电流矢量 +Jh 跟踪。
    • direction = "-CurrentDensity":如果局部净掺杂为 n 型,n>p,则路径搜索沿正多数电子电流矢量 +Je 跟踪。如果局部净掺杂为 p 型,p≥n,则路径搜索沿负多数空穴电流矢量 -Jh 跟踪。
  • ElectricField 此选项可用于仅泊松设置。

    • direction = "ElectricField"direction = "+ElectricField":如果局部净掺杂为 n 型或 p 型,路径搜索沿正电场矢量跟踪。
    • direction = "-ElectricField":如果局部净掺杂为 n 型或 p 型,路径搜索沿负电场矢量跟踪。
  • GradQuasiFermi 此选项可用于求解泊松方程和线性传导方程的设置。

    • direction = "GradQuasiFermi"direction = "+GradQuasiFermi":如果局部净掺杂为 n 型,n>p,则路径搜索沿正 eGradQuasiFermi 矢量场跟踪。如果局部净掺杂为 p 型,p≥n,则路径搜索沿正 hGradQuasiFermi 矢量场跟踪。
    • direction = "-GradQuasiFermi":如果局部净掺杂为 n 型,n>p,则路径搜索沿负 eGradQuasiFermi 矢量场跟踪。如果局部净掺杂为 p 型,p≥n,则路径搜索沿负 hGradQuasiFermi 矢量场跟踪。

注意: 鞍点分析的正确性基于以下内容的正确性:

  • 用于路径搜索的底层矢量场
  • 用于估算鞍点势垒高度的静电势和带轮廓

Math 节中的 ComputeCarrierPath section 控制载流子路径的鞍点分析计算。

起点条件

路径搜索的起始点在 Start 语句中定义。可以指定不同的形状来定义路径搜索的起始点:doping well、cuboid 和 line。有两种可能性来定义定义形状内的起始点:

  • 从位于形状内部的顶点位置开始
  • 从位于形状内部的张量子网格开始

从顶点位置开始:Doping Well

通常,起始点位于特定 doping well 内。您可以通过使用 DopingWell(point=&lt;vector&gt;) 指定 doping well 内的坐标,Sentaurus Device 会检测相应的 doping well。位于 doping well 内的所有顶点用作路径搜索的起始点。例如:

ComputeCarrierPath(
    Start(
        DopingWell( point=(4.23 3.88 12.6) )
    )
)

从顶点位置开始:Cuboid

您可以通过使用 Cuboid(corner1=(x1 y1 z1) corner2=(x2 y2 z2)) 指定一个 cuboid,其中 corner1 和 corner2 是 cuboid 的对角顶点。位于 cuboid 内的所有顶点用作路径搜索的起始点。例如:

ComputeCarrierPath(
    Start(
        Cuboid( corner1=(0.92 2.3 0.3) corner2=(3.0 3.5 3.4) )
    )
)

从顶点位置开始:Line

您可以通过使用 Line(point1=(x1 y1 z1) point2=(x2 y2 z2)) 指定一条线,其中 point1 和 point2 分别标记线的起点和终点。位于该线上的所有顶点用作路径搜索的起始点。例如:

ComputeCarrierPath(
    Start(
        Line( point1=(1 0 0) point2=(2 0 0) )
    )
)

从张量子网格开始

在 DopingWell、Cuboid 和 Line 语句中,您可以使用 grid=&lt;vector&gt; 指定张量子网格。Sentaurus Device 在原点周围构造等距子网格。原点对于 DopingWell 定义为 point,对于 Cuboid 定义为 corner1,对于 Line 定义为 point1。例如:

ComputeCarrierPath(
    Start(
        DopingWell( point=(4.23 3.88 12.6) grid=(0.1 0.2 0.3) )
        Cuboid( corner1=(0.9 2.3 0.3) corner2=(3.0 3.5 3.4) grid=(0.2 0.1 0.5) )
        Line( point1=(1 0 0) point2=(2 0 0) grid=(0.05) )
    )
)

终点条件

默认情况下,路径搜索在到达 contact 时停止。通常,当路径搜索到达终点 doping well 时停止就足够了。终点 doping well 可以使用 End 语句中的 DopingWell 语句指定。例如:

ComputeCarrierPath(
    End(
        DopingWell( point=(1.23 0.88 3.6) )
    )
)

将载流子路径另存为单独 TDR 文件中的 1D 数据集

您可以使用关键字 CarrierPath 在 File 节中指定单独输出 TDR 文件的文件名。例如:

File{
    CarrierPath = "myFileName.tdr"
}

计算附加量

载流子路径渡越时间:渡越时间根据公式 t(l) = ∫(ds / v(s)) 计算,其中 l 是路径长度,v(s) 是多数载流子速度。

如果 direction 不是 CurrentDensity,则载流子路径渡越时间的计算会关闭,因为速度数据条目没有物理价值。

如果您指定输出单独的 TDR 文件(参见"将载流子路径另存为单独 TDR 文件中的 1D 数据集"),则 Sentaurus Device 在此文件中保存两个渡越时间量:

  • CarrierPathTransitTime:对于载流子路径上的每个点,此量表示从路径起点开始经过的时间。
  • CarrierPathTransitTimeToEnd:对于载流子路径上的每个点,此量表示载流子到达路径终点所需的时间。这意味着 CarrierPathTransitTimeToEnd 在路径起点处最大,在路径终点处为 0。

累积渡越时间分配给每个路径点。在 TDR plot 文件中,Sentaurus Device 保存 CarrierPathTransitTime,其中路径终点处的渡越时间 t(l) 被分配给每个载流子路径起点位置最近的顶点。

关键字 CarrierPathTransitTime 在 Plot 或 CarrierPathPlot section 中触发计算:

Plot {
    ...
    CarrierPathTransitTime
}

载流子路径势垒高度:对于电子,载流子路径势垒高度 ΔEᶜ 定义为直到路径终点的上升导带能量的累积贡献,并考虑高于局部最小值的贡献。因此,载流子路径势垒高度显示了载流子在到达路径终点之前经历的累积势垒。载流子路径势垒高度在路径起点处最大,在路径终点处为 0。

相应地,对于空穴,载流子路径势垒高度定义为直到路径终点的下降价带能量的累积贡献,并考虑低于局部最大值的贡献。

关键字 CarrierPathBarrierHeight 在 Plot 或 CarrierPathPlot section 中触发计算:

Plot {
    ...
    CarrierPathBarrierHeight
}

值分配:对于另存为 1D 数据集的载流子路径,累积势垒高度分配给每个路径点。对于 TDR plot 文件,每个载流子路径的势垒高度 ΔEᶜ(l) 被分配给每个载流子路径起点位置最近的顶点。

沿载流子路径绘制什么

要控制保存在载流子路径上的数据,可以在 CarrierPathPlot section 中指定标量量。例如:

CarrierPathPlot(
    ElectricField
    ConductionBandEnergy ValenceBandEnergy
)

Sentaurus Device 默认存储路径长度数据 Distance 和 DistanceToEnd。此外,Sentaurus Visual 提供路径点的 X、Y 和 Z 分量用于绘图。如果未指定 CarrierPathPlot,则 Plot section 中指定的标量数据会保存在载流子路径上。

何时绘制载流子路径

要控制何时计算和保存载流子路径,请在 Solve、Quasistationary 和 Transient section 中指定 PlotCarrierPath section,类似于 Plot 命令。PlotCarrierPath 的输出文件名对应于使用 Plot 的文件命名,只是后缀为 *_cp_des.tdr 而不是 *_des.tdr


5.3 Log File

Log file 的名称在 File 节的 Output 中指定。Log file 包含 Sentaurus Device 在仿真运行期间打印的消息副本。Log file 包含各种信息,包括:

  • 技术信息,如正在运行的 Sentaurus Device 版本、运行所在的机器以及进程 ID
  • 关于正在模拟的结构、已选择的物理模型以及使用的参数的确认
  • 关于仿真如何进行的详细信息,包括时序和收敛信息
  • 警告消息

只要您的仿真设置良好且没有出现收敛问题,log file 就不是很重要。它是仿真设置期间或出现收敛问题时的宝贵诊断工具。

可以通过指定 --xml 命令行选项生成带有 XML 标签注释的 log file。该文件包含与常规 log file 相同的信息,但具有额外的 XML 标签来组织其内容。XML log file 使用与常规 log file 相同的文件名,但扩展名为 .xml 而不是 .log。

XML log file 最好使用 TCAD Log File Browser 显示。有关详细信息,请参阅《Utilities User Guide》第 2 章。


5.4 Extraction File

Sentaurus Device 支持一种特殊用途的文件格式(扩展名 .xtr)用于提取 MOSFET 紧凑模型参数。

Extraction File Format

Extraction file 由以下部分组成:

  • 标识文件格式的头部。
  • 一个 section 包含 MOSFET 的工艺信息,如沟道长度或沟道宽度。
  • 曲线集合包含因变量作为自变量的函数的值,例如 Id–Vg 扫描中漏电流与栅电压的关系。此外,每条曲线都包含相应的偏置条件,例如 Id–Vg 扫描中的 Vb、Vd 和 Vs。

示例 Extraction file:

# Synopsys Extraction File Format Version 1.1
# Copyright (C) 2008 Synopsys, Inc.
# All rights reserved.
$ Process
AD 31.50f
AS 31.50f
D NMOS
L 90.00n
NF 1.000
NRD 0.000
NRS 0.000
PD 880.0n
PS 880.0n
SA 500.0n
SB 500.0n
SC 0.000
SCA 0.000
SCB 0.000
SCC 0.000
SD 0.000
W 90.00n
$ Data
Curve: Id_Vg
Bias : Vb = 0 , Vd = 0.5 , Vs = 0
1.60000000000000E+00  7.95091490486384E-05
1.63750000000000E+00  8.27433425335473E-05
1.67500000000000E+00  8.59289596870642E-05
1.71250000000000E+00  8.90665609661286E-05
1.75000000000000E+00  9.21567959785304E-05
Curve: Is_Vg
Bias : Vb = 0 , Vd = 0.5 , Vs = 0
1.60000000000000E+00  -7.95091490484525E-05
1.637500000000000E+00  -8.27433425333610E-05
1.67500000000000E+00  -8.59289596868774E-05
1.71250000000000E+00  -8.90665609659414E-05
1.75000000000000E+00  -9.21567959783428E-05

Analysis Modes

Sentaurus Device 支持不同的分析模式。

表 22 分析模式

AnalysisCurveDescription
DCIi_Vj第 i 个端电流与第 j 个端电压的关系,其中 i,j = b (bulk)、d (drain)、g (gate) 或 s (source)。偏置条件:除第 j 个端电压外的所有端电压
ACAi_j_Vk导纳 Aij 与第 k 个端电压的关系,其中 i,j,k = b (bulk)、d (drain)、g (gate) 或 s (source)。偏置条件:除第 k 个端电压和频率外的所有端电压
Ai_j_F导纳 Aij 与频率的关系,其中 i,j = b (bulk)、d (drain)、g (gate) 或 s (source)。偏置条件:Vb、Vd、Vg、Vs
Ci_j_Vk电容 Cij 与第 k 个端电压的关系,其中 i,j,k = b (bulk)、d (drain)、g (gate) 或 s (source)。偏置条件:除第 k 个端电压和频率外的所有端电压
Ci_j_F电容 Cij 与频率的关系,其中 i,j = b (bulk)、d (drain)、g (gate) 或 s (source)。偏置条件:Vb、Vd、Vg、Vs
Noisenoise_Vi_Vj电极 i 的自相关噪声电压谱密度 (NVSD) 与第 j 个端电压的关系,其中 i,j = b (bulk)、d (drain)、g (gate) 或 s (source)。偏置条件:除第 j 个端电压和频率外的所有端电压
noise_Vi_F电极 i 的自相关噪声电压谱密度 (NVSD) 与频率的关系,其中 i = b (bulk)、d (drain)、g (gate) 或 s (source)。偏置条件:Vb、Vd、Vg、Vs
noise_Ii_Vj电极 i 的自相关噪声电流谱密度 (NISD) 与第 j 个端电压的关系,其中 i,j = b (bulk)、d (drain)、g (gate) 或 s (source)。偏置条件:除第 j 个端电压和频率外的所有端电压
noise_Ii_F电极 i 的自相关噪声电流谱密度 (NISD) 与频率的关系,其中 i = b (bulk)、d (drain)、g (gate) 或 s (source)。偏置条件:Vb、Vd、Vg、Vs
  1. 下划线是可选的,用于提高可读性。

File Section

在 Sentaurus Device 命令文件的 File 节中指定 extraction file 的名称。例如:

File {
    Extraction = "mosfet_des.xtr"
    ...
}

默认文件名为 extraction_des.xtr

Electrode Section

如果四个 MOSFET 电极被称为"bulk"、"drain"、"gate"和"source",或"b"、"d"、"g"和"s"(不区分大小写),Sentaurus Device 会自动识别它们。

对于其他接触名称,您可以在 Electrode 节中指定映射:

Electrode {
    { Name = "contact_bulk" Voltage = 0.0 Extraction {bulk} }
    { Name = "contact_drain" Voltage = 0.0 Extraction {drain} }
    { Name = "contact_gate" Voltage = 0.0 Extraction {gate} }
    { Name = "contact_source" Voltage = 0.0 Extraction {source} }
}

必须存在所有四个 MOSFET 电极(bulk、drain、gate 和 source)。允许额外的电极,但它们将被忽略用于提取目的。

Extraction Section

工艺参数可以是 Sentaurus Device 网格或掺杂文件的一部分。您也可以在 Extraction 节中指定相同的信息。例如:

Extraction {
    AD 31.50f
    AS 31.50f
    D NMOS
    L 90.00n
    NF 1.000
    NRD 0.000
    NRS 0.000
    PD 880.0n
    PS 880.0n
    SA 500.0n
    SB 500.0n
    SC 0.000
    SCA 0.000
    SCB 0.000
    SCC 0.000
    SD 0.000
    W 90.00n
}

Extraction 节中的每一行由一个名称-值对组成。所有条目原样复制到 extraction file。

注意: Sentaurus Device 命令文件 Extraction 节中的工艺参数优先于网格或掺杂文件中的信息。

Solve Section

Solve 节中的 Quasistationary 语句支持 Extraction 选项来请求与电压相关的提取曲线。可以在单次扫描期间生成多条曲线。如果缺少 Extraction 选项,则不会产生提取曲线。例如:

Solve {
    # ramp contributes to extraction
    Quasistationary (
        Goal { Name="contact_gate" Voltage=1.5 }
        Extraction { IdVg IsVg ... }
    )
    { Coupled { Poisson Electron }
        CurrentPlot (Time = (Range=(0 1) Intervals=10))
    }

    # ramp does not contribute to extraction
    Quasistationary (
        Goal { Name="contact_base" Voltage=0.5 }
    )
    { Coupled { Poisson Electron } }

    # ramp contributes to extraction
    Quasistationary (
        Goal { Name="contact_drain" Voltage=1.5 }
        Extraction { IdVd IbVd ... }
    )
    { Coupled { Poisson Electron } }
}

AC 和噪声仿真必须在混合模式中进行。电路中仅支持一个物理器件。

与电压相关的曲线在 Quasistationary 语句中作为选项指定;而与频率相关的曲线出现在 ACCoupled 语句中:

Solve {
    Quasistationary (
        ...
        Extraction { Ads_Vg Agg_Vg Cgd_Vg noise_Id_Vg noise_Ig_Vg }
    )
    { ACCoupled (
        ...
        Extraction { Add_F Cgd_F Csd_F
                     noise_Vd_F noise_Vg_F noise_Is_F }
    )
    { Poisson Electron }
    }
}

Extraction 选项中可识别的曲线参见第 203 页的表 22。

基于 Sentaurus TCAD 官方文档构建

代码块