Skip to content

附录 G:阻抗场方法数据后处理库

NOTE

本页内容对应 PDF 原版手册第 489–520 页(Sentaurus™ Visual User Guide, W-2024.09, Appendix G)。

概述

阻抗场方法(Impedance Field Method, IFM)在 Sentaurus Device 中提供了一种精确且高效的方式来评估随机变异性对半导体器件电气行为的影响(参见《Sentaurus™ Device 用户指南》第 23 章)。

在统计阻抗场方法(sIFM)中,Sentaurus Device 会生成大量参考器件的随机化实现。例如,针对不同的随机化掺杂分布、不同的随机化栅氧化层厚度、不同的随机化金属晶粒边界等,生成 10000 个随机化实现。

对于每一个随机化实现,Sentaurus Device 会在每个偏置点计算该随机化器件相对于参考器件的线性电流响应。

阻抗场方法(IFM)数据后处理库有助于管理和分析大量的线性电流响应数据。例如,IFM 库允许您方便地对数据进行标准统计分析,如计算和可视化分布,并将其与高斯分布进行比较。

IFM 库还支持从参考器件的电气特性和线性电流响应数据构建随机化器件的个体电气特性。

Python 库

对于 Python 模式,请参阅 Sentaurus Visual Python API 文档(Help > Python API Reference)。

语法约定

IFM 库在 Sentaurus Visual 启动时自动加载。但是,如果您已关闭扩展库的自动加载功能,则可以使用以下命令显式加载 IFM 库:

tcl
load_library ifm

语法约定

IFM 库使用唯一的命名空间标识符(ifm::)来调用其过程。所有与此库关联的过程和变量在调用时都带有命名空间标识符前缀。例如:

ifm::<proc_name>

每个过程有多个参数。IFM 库使用一个输入解析器,接受以下形式的参数:

-keyword <value>

NOTE

所有 Sentaurus Visual 库都支持标准 Sentaurus Visual 语法,其中关键字前带有短横线。为保持向后兼容性,所有 Sentaurus Visual 库继续支持 keyword= <value> 语法。对于每个过程调用,您可以使用 -keyword <value> 语法或 keyword= <value> 语法。但是,在任何单个过程调用中,只能使用一种类型的语法。否则,将生成错误消息。仅记录新语法。如果您想继续使用 keyword= <value> 语法,也可以在关键字和等号之间插入空格,例如 keyword = <value>。省略等号和值字段之间的空格将导致失败(如果值是解引用 Tcl 变量)。请使用 keyword= $val(而不是 keyword=$val)。

解析器接受任意顺序的参数。对于某些参数,预定义了默认值。这些参数可以省略。如果省略了没有预定义默认值的参数,过程将退出并显示错误消息。此外,无法识别的参数会导致错误消息。

IFM 库的某些过程会计算大型和复杂的数据结构。对于这种数据结构,使用过程返回值将结果传递回调用程序的标准 Tcl 方法并不合适。因此,对于某些数据集,IFM 库使用传引用(passing-by-reference)方法来在过程和调用程序之间交换信息。使用传引用方法的过程参数以 -keyword <var_name><list_name><array_name> 标识。

以下约定用于 Tcl 命令的语法:

过程帮助

  • 尖括号 <> — 表示必须替换的文本,但它们不是语法的一部分。特别是,使用以下类型标识符:
    • <r>:替换为实数,或解引用后求值为实数的 Tcl 变量。例如:$val
    • <i>:替换为整数,或解引用后求值为整数的 Tcl 变量。例如:$i
    • <string>:替换为字符串,或解引用后求值为字符串的 Tcl 变量。例如:$file
    • <list_of_r>:替换为实数列表,或解引用后求值为实数列表的 Tcl 变量。例如:$values
    • <list_of_strings>:替换为字符串列表,或解引用后求值为字符串列表的 Tcl 变量。例如:$files
    • <var_name>:替换为局部 Tcl 变量的名称。例如:val(不是 $val)。
    • <list_name>:替换为局部 Tcl 列表的名称。例如:values(不是 $values)。
    • <array_name>:替换为局部 Tcl 数组的名称。例如:myarray(不是 $myarray)。
  • 方括号 [] — 表示参数是可选的,但它们不是语法的一部分。
  • 竖线 | — 表示选项,只能指定其中一个。

过程帮助

要获取特定过程的帮助,在 Tcl 模式下,将 -help 关键字设置为 1:

tcl
ifm::<procedure_name> -help 1

如果此命令包含在 Sentaurus Visual 文件中,当 Sentaurus Visual 以以下方式执行时:

  • 在 Sentaurus Workbench 中以批处理模式运行,帮助信息将打印到相应 Sentaurus Visual 节点的运行时输出文件(扩展名为 .out)中。
  • 在 Sentaurus Workbench 中以交互模式运行,帮助信息将显示在 Tcl 控制台中,并打印到 Sentaurus Visual 输出文件中。

您也可以在用户界面的 Tcl 控制台中输入命令,此时帮助信息将显示在控制台中。

过程的输出

IFM 库的所有过程通过将结果存储在 Tcl 变量或 Tcl 数组中来将结果传递回调用程序。此 Tcl 变量或数组的名称在 -out 关键字的值中指定。

如果 IFM 库过程出现错误,Sentaurus Visual 的行为取决于它是在 Sentaurus Workbench 中以批处理模式还是交互模式执行。在批处理模式下,Sentaurus Visual 会退出,错误消息仅打印在 Sentaurus Visual 错误文件(扩展名为 .err)中。在交互模式下,错误消息会显示在 Tcl 控制台中,并打印到 Sentaurus Visual 错误文件中。

所有过程还会打印多条消息(包括警告消息)。如果 Sentaurus Visual 以批处理模式执行,消息仅打印在 Sentaurus Visual 输出文件中;而在交互模式下,消息会显示在 Tcl 控制台中,并打印在 Sentaurus Visual 输出文件中。

打印的信息量取决于由 lib::SetInfoDef 过程指定的信息级别。

ifm::Gauss

计算给定 x 值处归一化高斯分布的 y 值:

其中 是高斯分布的归一化系数, 是平均值, 是标准差。

语法

tcl
ifm::Gauss -out <var_name> -x <r> -moments <array_name>
[-help 0 | 1]

返回值

示例

tcl
set Moments(norm)    1.0
set Moments(ave)     0.0
set Moments(std_dev) 1.0
ifm::Gauss -out G -x 0.1 -moments Moments
puts "The result is $G"

参数说明

参数说明
-out <var_name>存储归一化高斯分布对应 y 值的变量名
-x <r>x 值(实数,无默认值)
-moments <array_name>包含 normavestd_dev 元素的数组名称。这些元素的值包含所请求的高斯分布的归一化系数、平均值和标准差(数组名,无默认值)
-help 0 | 1设置为 1 时打印帮助信息。默认值:0

ifm::GetDataQuantiles

计算随机变量列表的分位数。

此过程对随机值列表进行排序,并将每个值与相应的分位数(0 到 1 之间的值)关联。

语法

tcl
ifm::GetDataQuantiles -out <array_name> -rvs <list_of_r>
[-help 0 | 1]

返回值

示例

tcl
set RanVals [list -1.657 0.7661 2.142 1.189 -1.919 -0.6670 -0.1915 0.3662]
ifm::GetDataQuantiles -out DataQ -rvs $RanVals
puts $DataQ(X)
#-> -1.919 -1.657 -0.6670 -0.1915 0.3662 0.7661 1.189 2.142
puts $DataQ(Y)
#-> 0.0625 0.1875 0.3125 0.4375 0.5625 0.6875 0.8125 0.9375

参数说明

参数说明
-out <array_name>存储结果的数组名称。该数组有一个字符串索引,包含元素 XY。这些元素的值分别包含排序后的随机变量(X)和相应的分位数(Y)(数组名,无默认值)
-rvs <list_of_r>随机变量列表(实数列表,无默认值)
-help 0 | 1设置为 1 时打印帮助信息。默认值:0

ifm::GetGaussian

计算高斯曲线:

或高斯曲线的分位数:

其中 是高斯分布的归一化系数, 是平均值, 是标准差。

语法

tcl
ifm::GetGaussian -out <array_name> -moments <array_name>
[-nsam <i>] [-type f | q] [-xmin <r>] [-xmax <r>] [-help 0 | 1]

参数说明

参数说明
-out <array_name>存储结果的数组名称。该数组有一个字符串索引,包含元素 XY。这些元素的值表示高斯曲线或分位数的 x 值和 y 值列表(数组名,无默认值)
-moments <array_name>包含 normavestd_dev 元素的数组名称。这些元素的值包含所请求的高斯分布的归一化系数、平均值和标准差(数组名,无默认值)
-nsam <i>采样点数量(整数,默认值:80)
-type f | qf:返回由给定矩定义的高斯曲线;q:返回该高斯曲线的分位数。默认值:f
-xmin <r>起始 x 值(实数,默认值:-3.0)
-xmax <r>结束 x 值(实数,默认值:3.0)
-help 0 | 1设置为 1 时打印帮助信息。默认值:0

返回值

示例

tcl
create_plot -1d -name Gaussian
select_plots Gaussian
set Moments(norm)    1.0
set Moments(ave)     0.0
set Moments(std_dev) 1.0
ifm::GetGaussian -out Gaussian -type f -moments Moments \
    -nsam 100 -xmin -3.5 -xmax 3.5
create_variable -name "GX" -dataset GXY -values $Gaussian(X)
create_variable -name "GY" -dataset GXY -values $Gaussian(Y)
create_curve -name gauss -dataset GXY -axisX "GX" -axisY "GY"

ifm::GetHistogram

计算用于绘制给定随机变量列表、给定绘图范围和给定箱子数量的直方图的 x 和 y 列表。

语法

tcl
ifm::GetHistogram -out <array_name> -rvs <list_of_r>
-xmin <r> -xmax <r>
[-nbin <i>] [-info 0 | 1 | 2 | 3] [-help 0 | 1]

返回值

示例

tcl
create_plot -1d -name Histogram
select_plots Histogram
set Rxs [list 1 1.1 2 5 5.1 5.3 6]
ifm::GetHistogram -out Histogram -rvs $Rxs -xmin 0 -xmax 6 -nbin 6
create_variable -name "X" -dataset XY -values $Histogram(X)
create_variable -name "Y" -dataset XY -values $Histogram(Y)
create_curve -name his -dataset XY -axisX "X" -axisY "Y"

参数说明

参数说明
-out <array_name>存储结果的数组名称。该数组有一个字符串索引,包含元素 XY。这些元素的值表示直方图的 x 值和 y 值列表(数组名,无默认值)
-rvs <list_of_r>随机变量列表(实数列表,无默认值)
-xmin <r>直方图的起始 x 值(实数,无默认值)
-xmax <r>直方图的结束 x 值(实数,无默认值)
-nbin <i>直方图的箱子数量(整数,默认值:40)
-info 0 | 1 | 2 | 3设置本地信息级别。默认值:0
-help 0 | 1设置为 1 时打印帮助信息。默认值:0

ifm::GetMoments

计算给定随机变量列表的归一化系数、平均值、根均方值(rms)、标准差、偏度和超额峰度:

其中归一化系数 由随机值的数量给出,索引 枚举随机值, 是平均值, 是根均方值, 是标准差, 是偏度, 是超额峰度。

语法

tcl
ifm::GetMoments -out <array_name> -rvs <list_of_r>
[-info 0 | 1 | 2 | 3] [-help 0 | 1]

参数说明

参数说明
-out <array_name>存储计算矩的字符串索引数组。该数组包含元素 normavermsstd_devskewkurtx。这些元素的值包含随机变量列表的计算得到的归一化系数、平均值、rms、标准差、偏度和超额峰度(数组名,无默认值)
-rvs <list_of_r>随机变量列表(实数列表,无默认值)
-info 0 | 1 | 2 | 3设置本地信息级别。默认值:0
-help 0 | 1设置为 1 时打印帮助信息。默认值:0

返回值

示例

tcl
set Vs [list 1 2 3 4 5]
ifm::GetMoments -out Moments -rvs $Vs
puts $Moments(norm)
#->5
puts $Moments(ave)
#->3
puts $Moments(rms)
#->3.31662479036
puts $Moments(std_dev)
#->1.41421356237
puts $Moments(skew)
#->0.0
puts $Moments(kurtx)
#->-1.3

ifm::GetMOSIVs

为一个或多个随机化源构造 MOS 型器件的随机化 Id–Vg 曲线。

将线性电流响应 与节点漏电流 和栅电压 变化联系起来的边界条件为:

索引 枚举随机化。此方程提供了将线性电流响应直接解释为漏电流变化的灵活性:

或者,将其解释为栅偏置的调整:

对于线性化系统,以下两种方法产生相同的结果:

  • 栅电压调整方法(dV):
  • 漏电流调整方法(dI):

参考器件的漏电流和栅电压分别为

TIP

这两种方法的等价性可以通过将两个方程展开为泰勒级数来验证。对于非线性系统,两种公式不等价,根据非线性的细节,其中一种方法可能给出更准确的结果。

两种方法的极限情况分析

为了更好地理解影响,考虑两种极限情况:

(i) 亚阈值和近阈值区 Id–Vg 急剧上升

在这个区域,变异性效应很好地近似为阈值电压偏移。这意味着,虽然 都随栅偏置增加而呈指数增长,但两个量的比值 近似保持恒定。当 值较大时,使用漏电流调整方法可能会导致某些随机化实现出现非物理的负输出电流;而使用栅电压调整方法则始终保证正且物理的输出电流。

(ii) 低漏偏置和高栅偏置下的 Id–Vg 饱和

在这个区域,跨导 趋于零,因此 发散,而 近似保持恒定。因此,当使用栅电压调整方法时,较大的 值可能导致某些随机化实现出现非物理的栅电压(非单调、小于地电位或大于电源电压)。而漏电流调整方法始终保证单调且物理的输入电压。

加权方法

对于 Id–Vg 特性曲线,亚阈值/近阈值区域与饱和区域之间的转换点可以定义为最大跨导点,因此您可以根据跨导导数的符号应用栅电压调整方法或漏电流调整方法。这一观察是第三种方法的基础:

  • 加权方法(weighted):

权重 通过调用 ifm::GetMOSWeights 过程在内部计算。

加权方法在栅电压调整方法和漏电流调整方法之间切换,以避免电流或电压的人为过度调整。在转换点调整相对较大的情况下,可能会观察到不连续和重叠。平滑选项(smooth)激活平滑程序以消除转换点处的这些伪影。

另一种加权方案(SSweighted)当亚阈值斜率变得大于用户定义的阈值 ss 时,从 dV 方法切换到 dI 方法。此方法使用误差函数来平滑转换,您可以通过设置归一化参数 dss 来控制平滑度。权重通过调用 ifm::GetMOSWeights 过程在内部计算。

TIP

对于线性区域的 Id–Vg 扫描,建议使用加权方法之一,优先选择能给出最平滑 I–V 曲线的方法。

指数方法

最后,从概念上更简单的指数方法确保非负电流,并避免栅偏置过冲。此方法通常给出满意的结果,但它违反了线性假设:

最大偏差监控

即使使用最合适的 Id–Vg 构造方法,对于某些随机化实现,线性电流响应 相对于标称电流 可能过大,导致结果的 Id–Vg 可能呈现意外形状。这可能导致这些特定随机化实现的电气参数(如亚阈值斜率或阈值电压)的不可靠提取。您可以通过查看最大偏差 来标记和过滤此类曲线。最大偏差是在每个构造的 Id–Vg 的用户指定偏置范围内计算的,可通过包含 Id–Vg 曲线的 x 值和 y 值的数组的 maxdev 数组元素访问。您可以通过指定 -vmin-vmax 参数来限制偏置范围。

语法

tcl
ifm::GetMOSIVs -out <array_name> -sifm <array_name> -nrow <var_name>
-ncol <var_name> -v <list_of_r> -i <list_of_r> -y <list_of_r>
-vmin <r> -vmax <r> -id <string>
[-type IdVg] [-method dV | dI | weighted | SSweighted | exp]
[-smooth yes | no] [-sgn 1 | -1] [-ss <r> -dss <r>]
[-info 0 | 1 | 2 | 3] [-help 0 | 1]

参数说明

参数说明
-out <array_name>存储构造的 I–V 曲线的双索引数组名称。第一个索引是字符串索引,元素为 XY。第二个索引是整数索引,表示随机化索引。数组元素值包含各自 I–V 曲线的 x 值和 y 值列表。数组元素 maxdev 包含最大偏差:`maxdev = max
-sifm <array_name>包含 sIFM 数据的数组名称。该数组有三个索引:第一个索引是字符串索引,元素是变异性源标识符;第二个索引是整数索引,表示行或偏置索引;第三个索引是整数索引,表示列或随机化索引。数组元素值包含 sIFM 线性电流响应(数组名,无默认值)
-nrow <var_name>包含 sIFM 数据行数(偏置点数量)的变量名称(变量名,无默认值)
-ncol <var_name>包含 sIFM 数据列数(随机化数量)的变量名称(变量名,无默认值)
-v <list_of_r>包含参考电压值的列表(实数列表,无默认值)
-i <list_of_r>包含参考电流值的列表(实数列表,无默认值)
-y <list_of_r>包含相关参考 Y 矩阵值的列表(实数列表,无默认值)
-vmin <r>δI/I 监控的最小偏置
-vmax <r>δI/I 监控的最大偏置
-id <string>sIFM 变异性源的 ID(字符串,无默认值)
-type IdVg目前仅支持 IdVg。默认值:IdVg
-method dV | dI | weighted | SSweighted | exp选择 I–V 构造方法。默认值:weighted
-smooth yes | no为加权方法激活 I–V 平滑。默认值:no
-sgn 1 | -1设置为 1 表示 NMOS,设置为 -1 表示 PMOS。默认值:1
-ss <r>亚阈值斜率拐点,单位 mV/decade(实数,仅 SSweighted 需要)
-dss <r>转换区域宽度,单位 mV/decade(实数,仅 SSweighted 需要)
-info 0 | 1 | 2 | 3设置本地信息级别。默认值:0
-help 0 | 1设置为 1 时打印帮助信息。默认值:0

返回值

示例

tcl
set IDs [list rdf ift SUM]
set FILEs [list]
foreach ID $IDs {
    lappend FILEs mos_${ID}_I_ndrain.csv
}
load_file mos_circuit_des.plt -name Data(DC)
load_file mos_ac_des.plt -name Data(AC)
set adgs [get_variable_data "a(ndrain,ngate)" -dataset Data(AC)]
set Vgs  [get_variable_data "v(ngate)"        -dataset Data(DC)]
set Ids  [get_variable_data "i(mos,ndrain)"   -dataset Data(DC)]

ifm::ReadsIFM -out sIFM -nrow Nrow -ncol Ncol -files $FILEs -ids $IDs

create_plot -1d -name RanIV
select_plots RanIV
set j 42

ifm::GetMOSIVs -out IV_rdf -sifm sIFM -nrow Nrow -ncol Ncol \
    -method "weighted" -sgn 1.0 -v $Vgs -i $Ids -y $adgs -id "rdf" -smooth yes
create_variable -name V -dataset RanIV(rdf,$j) -values $IV_rdf(X,$j)
create_variable -name I -dataset RanIV(rdf,$j) -values $IV_rdf(Y,$j)
create_curve -name IV_rdf($j) -dataset RanIV(rdf,$j) -axisX "V" -axisY "I"

ifm::GetMOSWeights

计算用于构建随机化 MOSFET Id–Vg 曲线的权重。

此过程计算每个偏置点的权重,权重在 1 到 -1 之间,用于指示使用栅电压调整方法还是漏电流调整方法。

对于 -type IdVg_weighted,权重根据跨导导数的符号设置为 1 或 -1。

对于 -type IdVg_SSweighted,权重计算如下:

其中 SS 是亚阈值斜率,ss 是用户定义的切换阈值。转换的平滑度由用户定义的归一化参数 dss 设置。

语法

tcl
ifm::GetMOSWeights -out <list_name> -y <list_of_r>
[-type IdVg_weighted | IdVg_SSweighted]
[-i <list_of_r> -ss <r> -dss <r>]
[-help 0 | 1]

参数说明

参数说明
-out <list_name>存储计算权重的列表名称(列表名,无默认值)
-y <list_of_r>包含相关参考 Y 矩阵值的列表(实数列表,无默认值)
-type IdVg_weighted | IdVg_SSweighted选择权重计算方法。默认值:IdVg_weighted
-i <list_of_r>包含参考电流值的列表(实数列表,仅 IdVg_SSweighted 需要)
-ss <r>亚阈值斜率拐点,单位 mV/decade(实数,仅 IdVg_SSweighted 需要)
-dss <r>转换区域宽度,单位 mV/decade(实数,仅 IdVg_SSweighted 需要)
-help 0 | 1设置为 1 时打印帮助信息。默认值:0

返回值

示例

tcl
load_file mos_ac_des.plt -name Data(AC)
set adgs [get_variable_data a(ndrain,ngate) -dataset Data(AC)]
ifm::GetMOSWeights -out Ws -y $adgs
create_variable -name W -dataset Data(AC) -values $Ws

create_plot -1d -name Weights
select_plots Weights
create_curve -name W -dataset Data(AC) -axisX "v(ngate)" -axisY "W"
create_curve -name Y -dataset Data(AC) -axisX "v(ngate)" -axisY2 "a(ndrain,ngate)"

ifm::GetNoiseStdDev

从漏电流噪声谱密度 (参见《Sentaurus™ Device 用户指南》第 23 章)和栅-漏导纳 计算漏电流 和栅电压 标准差:

语法

tcl
ifm::GetNoiseStdDev -out <array_name> -s <list_of_r> -y <list_of_r>
[-help 0 | 1]

参数说明

参数说明
-out <array_name>存储结果的数组名称。该数组有一个字符串索引,包含元素 IVI 元素的值是电流标准差列表。V 元素的值是电压标准差列表(数组名,无默认值)
-s <list_of_r>包含电流噪声谱密度值的列表(实数列表,无默认值)
-y <list_of_r>包含相关参考 Y 矩阵值的列表(实数列表,无默认值)
-help 0 | 1设置为 1 时打印帮助信息。默认值:0

返回值

示例

tcl
load_file "mos_ac_des.plt" -name Data(AC)
set adgs         [get_variable_data a(ndrain,ngate) -dataset Data(AC)]
set S_Ids(noise) [get_variable_data S_I(ndrain)     -dataset Data(AC)]

ifm::GetNoiseStdDev -out sigIV -s $S_Ids(noise) -y $adgs

create_plot -1d -name Sig
create_variable -name sigId(noise) -dataset Data(AC) -values $sigIV(I)
create_curve -name sigId(noise) -dataset Data(AC) -axisX "v(ngate)" -axisY "sigId(noise)"
create_variable -name sigVg(noise) -dataset Data(AC) -values $sigIV(V)
create_curve -name sigVg(noise) -plot Sig -dataset Data(AC) -axisX "v(ngate)" -axisY2 "sigVg(noise)"

ifm::GetQQ

将给定数据分布的分位数与高斯分布的分位数进行比较。

对于高斯分布分位数中的每个值,找到数据分布的匹配(插值)值。然后,将对应的数据 x 值相对于归一化高斯 x 值 进行绘图。

语法

tcl
ifm::GetQQ -out <array_name> -dq <array_name> -gq <array_name>
-moments <array_name> [-help 0 | 1]

参数说明

参数说明
-out <array_name>存储结果的数组名称。该数组有一个字符串索引,包含元素 XY。这些元素的值表示分位数-分位数比较曲线的 x 值和 y 值列表(数组名,无默认值)
-dq <array_name>, -gq <array_name>包含给定数据分布(dq)和相应高斯分布(gq)分位数的数组名称。dq 和 gq 数组各有一个字符串索引,包含元素 XY。这些元素的值分别表示分位数的 x 值和 y 值列表(数组名,无默认值)
-moments <array_name>包含 normavestd_dev 元素的数组名称。这些元素的值包含所请求的高斯分布的归一化系数、平均值和标准差(数组名,无默认值)
-help 0 | 1设置为 1 时打印帮助信息。默认值:0

返回值

示例

tcl
set RanVals [list -1.657 0.7661 2.142 1.189 -1.919 -0.6670 -0.1915 0.3662]
ifm::GetDataQuantiles -out DataQ -rvs $RanVals
ifm::GetMoments -out Moments -rvs $RanVals
ifm::GetGaussian -out GaussianQ -type q -moments Moments -nsam 40 -xmin -3.5 -xmax 3.5
ifm::GetQQ -out QQ -dq DataQ -gq GaussianQ -moments Moments

create_plot -1d -name QQplot
select_plots QQplot
create_variable -name "QQX" -dataset QQXY -values $QQ(X)
create_variable -name "QQY" -dataset QQXY -values $QQ(Y)
create_curve -name qq -dataset QQXY -axisX "QQX" -axisY "QQY"

ifm::GetsIFMStdDev

从 sIFM 线性电流响应和栅-漏导纳计算漏电流和栅电压标准差。

对于 sIFM 数据文件中的每个偏置点,此过程读取线性电流响应,并调用 ifm::GetMoments 计算漏电流标准差 。栅电压 标准差通过将漏电流标准差除以栅-漏导纳 得到。

此过程还支持接触电阻变异性引起的漏电流和栅电压标准差的计算。

语法

tcl
ifm::GetsIFMStdDev -out <array_name> -sIFM <string> -y <list_of_r>
[-rsig <r> -ydd <list_of_r> -i <list_of_r>] [-help 0 | 1]

参数说明

参数说明
-out <array_name>存储结果的数组名称。该数组有一个字符串索引,包含元素 IVI 元素的值是电流标准差列表。V 元素的值是电压标准差列表(数组名,无默认值)
-sIFM <string>包含 sIFM 线性电流响应的逗号分隔值(CSV)文件的名称。如果此字符串设置为 "crv",则计算接触电阻变异性(字符串,无默认值)
-y <list_of_r>包含相关参考 Y 矩阵值的列表(实数列表,无默认值)
-rsig <r>接触电阻变异性标准差,单位 Ohm。当 sIFM 设置为 "crv" 时激活(实数,仅接触电阻变异性需要)
-ydd <list_of_r>包含参考 Y(d,d) 矩阵元素的列表。当 sIFM 设置为 "crv" 时激活(实数列表,仅接触电阻变异性需要)
-i <list_of_r>包含参考电流值的列表。当 sIFM 设置为 "crv" 时激活(实数列表,仅接触电阻变异性需要)
-help 0 | 1设置为 1 时打印帮助信息。默认值:0

返回值

示例

tcl
load_file "mos_ac_des.plt" -name Data(AC)
set adgs [get_variable_data a(ndrain,ngate) -dataset Data(AC)]
ifm::GetsIFMStdDev -out sigIV -sIFM "mos_rdf_I_ndrain.csv" -y $adgs

create_plot -1d -name Sig
set_plot_prop -plot Sig -title "Standard Deviations"
create_variable -name sigId(stat) -dataset Data(AC) -values $sigIV(I)
create_curve -name sigId(stat) -dataset Data(AC) -axisX "v(ngate)" -axisY "sigId(stat)"
create_variable -name sigVg(stat) -dataset Data(AC)

基于 Sentaurus TCAD 官方文档构建

代码块