Appearance
附录 F(续):提取库
ext::ExtractVglin
使用线性插值从 Id–Vgs 曲线中提取给定漏极电流电平对应的栅极电压。曲线由两个 Tcl 列表表示:一个包含电压点,一个包含相应的电流值。
语法
tcl
ext::ExtractVglin -out <var_name> -v <list_of_r> -i <list_of_r> -io <r>
[-name <string>] [-f <string>] [-info 0 | 1 | 2 | 3] [-help 0 | 1]返回值
无
参数
| 参数 | 描述 |
|---|---|
-out <var_name> | 存储与指定漏极电流电平对应的漏极电压值的变量名称。(实数,无默认值) |
-v <list_of_r> | 包含漏极电压值的列表。(实数列表,无默认值) |
-i <list_of_r> | 包含漏极电流值的列表。(实数列表,无默认值) |
-io <r> | 漏极电流电平。(实数,无默认值) |
-name <string> | 出现在 Sentaurus Workbench 目录树中的提取变量名称。(字符串,默认值:"SS") 注意:如果使用 -name "noprint",则禁止 Sentaurus Workbench 提取。如果使用 -name "out",则 -out 关键字指定的变量名也用作出现在 Sentaurus Workbench 目录树中的名称。 |
-f <string> | 用于将提取的变量写入 Sentaurus Workbench 目录树的格式字符串。(字符串,默认值:"%.3f") |
-info 0 | 1 | 2 | 3 | 设置本地信息级别。默认值:0 |
-help 0 | 1 | 设置为 1 时打印帮助信息。默认值:0 |
示例
tcl
load_file DATA/IdVgLin_nMOS_des.plt -name DC
set Vgs [get_variable_data "gate OuterVoltage" -dataset DC]
set Ids [get_variable_data "drain TotalCurrent" -dataset DC]
ExtractVglin -out Vglin -name "out" -v $Vgs -i $Ids -io 1e-7 -f "%.4f"ext::ExtractVglog
使用对数插值从 Id–Vgs 曲线中提取给定漏极电流电平对应的栅极电压。曲线由两个 Tcl 列表表示:一个包含电压点,一个包含相应的电流值。
语法
tcl
ext::ExtractVglog -out <var_name> -v <list_of_r> -i <list_of_r> -io <r>
[-name <string>] [-f <string>] [-info 0 | 1 | 2 | 3] [-help 0 | 1]返回值
无
参数
| 参数 | 描述 |
|---|---|
-out <var_name> | 存储与指定漏极电流电平对应的漏极电压值的变量名称。(实数,无默认值) |
-v <list_of_r> | 包含漏极电压值的列表。(实数列表,无默认值) |
-i <list_of_r> | 包含漏极电流值的列表。(实数列表,无默认值) |
-io <r> | 漏极电流电平。(实数,无默认值) |
-name <string> | 出现在 Sentaurus Workbench 目录树中的提取变量名称。(字符串,默认值:"SS") 注意:如果使用 -name "noprint",则禁止 Sentaurus Workbench 提取。如果使用 -name "out",则 -out 关键字指定的变量名也用作出现在 Sentaurus Workbench 目录树中的名称。 |
-f <string> | 用于将提取的变量写入 Sentaurus Workbench 目录树的格式字符串。(字符串,默认值:"%.3f") |
-info 0 | 1 | 2 | 3 | 设置本地信息级别。默认值:0 |
-help 0 | 1 | 设置为 1 时打印帮助信息。默认值:0 |
示例
tcl
load_file DATA/IdVgLin_nMOS_des.plt -name DC
set Vgs [get_variable_data "gate OuterVoltage" -dataset DC]
set Ids [get_variable_data "drain TotalCurrent" -dataset DC]
ExtractVglog -out Vglog -name "out" -v $Vgs -i $Ids -io 1e-7 -f "%.4f"ext::ExtractVtgm
使用最大跨导法从 Id–Vgs 曲线中提取阈值电压。阈值电压定义为在最大跨导 点处作切线延长线与栅极电压轴的交点坐标。最大跨导所在的栅偏压使用抛物线插值计算。曲线由两个 Tcl 列表表示:一个包含电压点,一个包含相应的电流值。
语法
tcl
ext::ExtractVtgm -out <var_name> -v <list_of_r> -i <list_of_r>
[-name <string>] [-f <string>] [-info 0 | 1 | 2 | 3] [-help 0 | 1]返回值
无
参数
| 参数 | 描述 |
|---|---|
-out <var_name> | 存储与指定漏极电流电平对应的漏极电压值的变量名称。(实数,无默认值) |
-v <list_of_r> | 包含漏极电压值的列表。(实数列表,无默认值) |
-i <list_of_r> | 包含漏极电流值的列表。(实数列表,无默认值) |
-name <string> | 出现在 Sentaurus Workbench 目录树中的提取变量名称。(字符串,默认值:"SS") 注意:如果使用 -name "noprint",则禁止 Sentaurus Workbench 提取。如果使用 -name "out",则 -out 关键字指定的变量名也用作出现在 Sentaurus Workbench 目录树中的名称。 |
-f <string> | 用于将提取的变量写入 Sentaurus Workbench 目录树的格式字符串。(字符串,默认值:"%.3f") |
-info 0 | 1 | 2 | 3 | 设置本地信息级别。默认值:0 |
-help 0 | 1 | 设置为 1 时打印帮助信息。默认值:0 |
示例
tcl
# 提取 p-MOSFET 的 Vtgm
load_file DATA/IdVgLin_pMOS_des.plt -name DC
set Vgs [get_variable_data "gate OuterVoltage" -dataset DC]
set Ids [get_variable_data "drain TotalCurrent" -dataset DC]
ext::AbsList -out absIds -x $Ids
ext::ExtractVtgm -out Vtgm -name "out" -v $Vgs -i $absIds
puts "Vt (Max gm method): [format %.3f $Vtgm] V"
#-> Vt (Max gm method): -0.503 Vext::ExtractVti
从 Id–Vgs 曲线中提取给定亚阈值电流电平的阈值电压。阈值电压定义为漏极电流达到该电流电平时的栅极电压。曲线由两个 Tcl 列表表示:一个包含电压点,一个包含相应的电流值。
语法
tcl
ext::ExtractVti -out <var_name> -v <list_of_r> -i <list_of_r> -io <r>
[-name <string>] [-f <string>] [-info 0 | 1 | 2 | 3] [-help 0 | 1]返回值
无
参数
| 参数 | 描述 |
|---|---|
-out <var_name> | 存储与指定漏极电流电平对应的漏极电压值的变量名称。(实数,无默认值) |
-v <list_of_r> | 包含漏极电压值的列表。(实数列表,无默认值) |
-i <list_of_r> | 包含漏极电流值的列表。(实数列表,无默认值) |
-io <r> | 亚阈值电流电平。(实数,无默认值) |
-name <string> | 出现在 Sentaurus Workbench 目录树中的提取变量名称。(字符串,默认值:"SS") 注意:如果使用 -name "noprint",则禁止 Sentaurus Workbench 提取。如果使用 -name "out",则 -out 关键字指定的变量名也用作出现在 Sentaurus Workbench 目录树中的名称。 |
-f <string> | 用于将提取的变量写入 Sentaurus Workbench 目录树的格式字符串。(字符串,默认值:"%.3f") |
-info 0 | 1 | 2 | 3 | 设置本地信息级别。默认值:0 |
-help 0 | 1 | 设置为 1 时打印帮助信息。默认值:0 |
示例
tcl
load_file DATA/IdVgLin_nMOS_des.plt -name DC
set Vgs [get_variable_data "gate OuterVoltage" -dataset DC]
set Ids [get_variable_data "drain TotalCurrent" -dataset DC]
set lgate 0.022 ;# um
set io [expr 100e-9/$lgate] ;# subthreshold current level [A/um]
ext::ExtractVti -out VtiLin -name "out" -v $Vgs -i $Ids -io $ioext::ExtractVtsat
从 – 曲线中提取阈值电压。阈值电压定义为 – 曲线最大斜率点处作切线延长线与栅极电压轴的交点坐标。– 曲线最大斜率点所在的栅偏压使用抛物线插值计算。曲线由两个 Tcl 列表表示:一个包含电压点,一个包含相应的电流值。
语法
tcl
ext::ExtractVtsat -out <var_name> -v <list_of_r> -i <list_of_r>
[-name <string>] [-f <string>] [-info 0 | 1 | 2 | 3] [-help 0 | 1]返回值
无
参数
| 参数 | 描述 |
|---|---|
-out <var_name> | 存储与指定漏极电流电平对应的漏极电压值的变量名称。(实数,无默认值) |
-v <list_of_r> | 包含漏极电压值的列表。(实数列表,无默认值) |
-i <list_of_r> | 包含漏极电流值的列表。(实数列表,无默认值) |
-name <string> | 出现在 Sentaurus Workbench 目录树中的提取变量名称。(字符串,默认值:"SS") 注意:如果使用 -name "noprint",则禁止 Sentaurus Workbench 提取。如果使用 -name "out",则 -out 关键字指定的变量名也用作出现在 Sentaurus Workbench 目录树中的名称。 |
-f <string> | 用于将提取的变量写入 Sentaurus Workbench 目录树的格式字符串。(字符串,默认值:"%.3f") |
-info 0 | 1 | 2 | 3 | 设置本地信息级别。默认值:0 |
-help 0 | 1 | 设置为 1 时打印帮助信息。默认值:0 |
示例
tcl
load_file DATA/IdVgLin_nMOS_des.plt -name DC
set Vgs [get_variable_data "gate OuterVoltage" -dataset DC]
set Ids [get_variable_data "drain TotalCurrent" -dataset DC]
ext::ExtractVtsat -out VtiLin -name "out" -v $Vgs -i $Idsext::FilterTable
处理来自 Sentaurus Workbench 目录树的数据,以便为特定实验子集创建以一个 Sentaurus Workbench 参数(y 值)为纵坐标、另一个 Sentaurus Workbench 参数(x 值)为横坐标的图形。数据以两个列表的形式指定,用于标识 x 和 y 值,这些值经过预处理后创建图形。使用一对目标值和相应的 Sentaurus Workbench 参数列表指定实验必须满足的条件才能包含在图形中。
语法
tcl
ext::FilterTable -out <array_name> -x <list_of_r> -y <list_of_r>
-conditions <array_name> -ncond <i>
[-info 0 | 1 | 2 | 3] [-help 0 | 1]返回值
无
参数
| 参数 | 描述 |
|---|---|
-out <array_name> | 存储结果的数组名称。数组有一个字符串索引。索引包含元素 X 和 Y。X 元素的值是使用关键字 -x 指定的值列表的子集。这些值按升序排列。Y 元素的值是使用关键字 -y 指定的值列表的子集。所有包含非数值值的 y 列表条目都会被忽略。(数组名称,无默认值) |
-x <list_of_r> | 包含要预处理的 Sentaurus Workbench 参数值的列表:x 值。(实数列表,无默认值) |
-y <list_of_r> | 包含要预处理的 Sentaurus Workbench 参数值的列表:y 值。(实数列表,无默认值) |
-conditions <array_name> | 具有两个索引的数组。字符串索引数组包含元素 "Target" 和 "Values"。"Target" 元素的值包含要用作过滤条件的 Sentaurus Workbench 参数的所需值。"Values" 元素包含所有实验的相应 Sentaurus Workbench 参数值列表。 第二个整数计数器枚举条件。枚举从 1 开始。(数组名称,无默认值) |
-ncond <i> | 使用关键字 -conditions 指定的数组中包含的条件数量。(整数,无默认值) |
-info 0 | 1 | 2 | 3 | 设置本地信息级别。默认值:0 |
-help 0 | 1 | 设置为 1 时打印帮助信息。默认值:0 |
示例
tcl
# 绘制应力条件下 PMOS 的 Vt 滚降曲线
set Types [list nMOS nMOS nMOS nMOS nMOS nMOS nMOS nMOS \
pMOS pMOS pMOS pMOS pMOS pMOS pMOS pMOS]
set Lgs [list 0.090 0.090 0.045 0.045 0.130 0.130 0.065 0.065 \
0.065 0.065 0.045 0.045 0.130 0.130 0.090 0.090]
set Stress [list no yes no yes no yes no yes \
no yes no yes no yes no yes]
set Vtgms [list 0.424 0.0374 0.313 0.263 0.414 0.364 0.408 0.358 \
-0.344 -0.294 -0.232 -0.182 x x -0.374 -0.324]
set Conditions(Target,1) "pMOS"
set Conditions(Values,1) $Types
set Conditions(Target,2) "yes"
set Conditions(Values,2) $Stress
ext::FilterTable -out LgVt -x $Lgs -y $Vtgms -conditions Conditions \
-ncond 2
create_variable -name Lg -dataset VtgmLg -values $LgVt(X)
create_variable -name Vtgm -dataset VtgmLg -values $LgVt(Y)
create_plot -1d -name Plot_VtRollOff
create_curve -name VtRollOff -dataset VtgmLg -axisX "Lg" -axisY "Vtgm"
puts "Lg= $LgVt(X)"
puts "Vtgm= $LgVt(Y)"
#-> Lg= 0.045 0.065 0.090
#-> Vtgm= -0.182 -0.294 -0.324在 Sentaurus Workbench 下的用法
在 Sentaurus Visual 脚本中,可以使用 Sentaurus Workbench 的动态预处理功能 @<parameter_name>:all@ 来访问所有 Sentaurus Workbench 实验的输入参数和提取值列表。例如,上面示例中的列表 Types、Lgs、Stress 和 Vtgms 是作为 Sentaurus Visual 脚本中以下命令的结果自动生成的:
tcl
set Types [list @Type:all@]
set Lgs [list @lgate:all@]
set Stress [list @stress:all@]
set Vtgms [list @Vt:all@]这里,Tcl 列表 Types 包含所有实验的 Sentaurus Workbench 输入参数 Type 的值,例如根据该实验创建的是 NMOS 还是 PMOS 结构,这些值分别为 nMOS 或 pMOS。
类似地,Tcl 列表 Lgs 包含另一个 Sentaurus Workbench 输入参数的值列表的"并行"列表,例如包含给定 MOSFET 的栅极长度值。
提取的参数可以以相同的方式访问。例如,Tcl 列表 Vtgms 包含每个相应实验的阈值电压提取值。
NOTE
各个列表中的值可能是数值,也可能不是数值,这些值也不一定按顺序排列。
将使用关键字 -x 和 -y 在过程 ext::FilterTable 中指定要处理(过滤)以创建图形的 x 和 y 值列表。在上面的示例中,栅极长度列表(-x $Lgs)和 Vtgm 值列表(-y $Vtgms)由 ext::FilterTable 处理。
关键字 -conditions 控制实验必须满足的条件才能包含在图形中。条件总数由关键字 -ncond 指定。所有条件都使用关键字 -conditions 在字符串索引数组中指定。每个条件由一个目标值和相应的 Sentaurus Workbench 参数列表定义。目标值是用作过滤条件的参数的所需值。
字符串索引数组的每个元素有两个索引。第一个索引是 "Target" 或 "Values"。第二个索引是条件编号。对于每个条件编号:
- 使用数组的 "Target" 元素(第一个索引名为 "Target" 的元素)指定目标值。
- 使用数组的 "Values" 元素(第一个索引名为 "Values" 的元素)指定相应的 Sentaurus Workbench 参数列表。
在上面的示例中,以下代码过滤出 PMOS 器件(条件编号 1)的栅极长度(Lg)和阈值电压(Vtgm)值。此条件使用名为 Conditions 的数组定义:
tcl
set Conditions(Target,1) "pMOS"
set Conditions(Values,1) $Types这里目标值是 "pMOS",相应的 Sentaurus Workbench 参数列表是 Types。
要过滤出承受应力的器件(条件编号 2)的 Lg 和 Vtgm 值,请定义 Conditions 数组的其他元素:
tcl
set Conditions(Target,2) "yes"
set Conditions(Values,2) $Stress由于同时指定了两个条件(-conditions Conditions -ncond 2),过程 ext::FilterTable 过滤出承受应力的 PMOS 器件的 Lg 和 Vtgm 值。
在上面的示例中,如果在 Conditions 数组中定义了两个条件,但将条件数量设置为 1(-conditions Conditions -ncond 1),则过程过滤出所有 PMOS 器件(有和无应力)的栅极长度和 Vtgm 值。第二个条件将不被考虑。
该过程返回一个带有一个字符串索引(由关键字 -out 指定)的数组(指定)。索引包含元素 X 和 Y。X 元素的值是使用关键字 -x 指定的值列表的子集。这些值按升序排列。Y 元素的值是使用关键字 -y 指定的值列表的子集。数组中的这些列表可用于创建图形。
在上面的示例中,该过程返回由 Lg 值列表和承受应力的 PMOS 器件的 Vtgm 值列表组成的数组 LgVt(-out LgVt)。这些列表可直接用于创建 Vt 滚降曲线:
tcl
create_variable -name Lg -dataset VtgmLg -values $LgVt(X)
create_variable -name Vtgm -dataset VtgmLg -values $LgVt(Y)
create_plot -1d -name Plot_VtRollOff
create_curve -name VtRollOff -dataset VtgmLg -axisX "Lg" -axisY "Vtgm"作为附加功能,ext::FilterTable 过程会忽略 y 值中包含非数值的所有条目。使用此功能可省略提取失败的情况。在执行提取的工具输入文件中(例如之前的 Sentaurus Visual 工具实例),使用 #set 指令将提取的变量预设为值 x:
tcl
#set Vtgm x
...
ext::ExtractVtgm -out Vtgm -name "out" -v $Vgs -i $absIds实际提取过程(此处使用 ext::ExtractVtgm 过程)会用实际值覆盖预设置的值 x。但是,如果提取过程失败,则预设置的值保留不变。
上面示例的输出显示,承受应力的 130 nm 栅极长度(Lg=0.130)PMOS 器件的 Vtgm 值(= x)不包含在数组 LgVt 中。此外,数组 LgVt 中的栅极长度按升序排列:
tcl
puts "Lg= $LgVt(X)"
puts "Vtgm= $LgVt(Y)"
#-> Lg= 0.045 0.065 0.090
#-> Vtgm= -0.182 -0.294 -0.324ext::FindExtrema
计算曲线的所有局部极值(最大值或最小值)。曲线由两个 Tcl 列表表示,一个包含 x 值(自变量),一个包含相应的 y 值(因变量)。
NOTE
如果曲线呈现平顶或平底(两个或多个相邻 x 值具有相同的 y 值),则返回最后一个 x 值作为极值点。
语法
tcl
ext::FindExtrema -out <array_name> -x <list_of_r> -y <list_of_r>
[-type "max" | "min"] [-eps <r>]
[-info 0 | 1 | 2 | 3] [-help 0 | 1]返回值
无
参数
| 参数 | 描述 |
|---|---|
-out <array_name> | 存储结果的数组名称。数组有一个字符串索引。索引包含元素 X 和 Y。X 元素的值是所有极值对应的 x 值。Y 元素的值是极值。(数组名称,无默认值) |
-x <list_of_r> | 包含 x 值的列表。这些必须按升序或降序排列。(实数列表,无默认值) |
-y <list_of_r> | 包含 y 值的列表。(实数列表,无默认值) |
-type "max" | "min" | 选择提取曲线的最大值("max")还是最小值("min")。默认值:"max" |
-eps <r> | 如果使用关键字 -y 指定的列表的两个相邻元素之间的差值小于 -eps 的值,则认为两个元素相等。(实数,默认值:) |
-info 0 | 1 | 2 | 3 | 设置本地信息级别。默认值:0 |
-help 0 | 1 | 设置为 1 时打印帮助信息。默认值:0 |
示例
tcl
set Xs [list 0.0 1.5 2.0 3.0]
set Ys [list 0.0 1.0 0.5 2.0]
ext::FindExtrema -out XY -x $Xs -y $Ys
puts "All maxima: $XY(Y)"
puts "All x-values corresponding to the maxima: $XY(X)"
#-> All maxima: 1.0 2.0
#-> All x values corresponding to the maxima: 1.5 3.0ext::FindVals
对于给定的目标 x 值,此过程从曲线中提取所有相应的插值 y 值。曲线由两个 Tcl 列表表示:一个包含 x 值,一个包含相应的 y 值。
NOTE
要查找给定 y 值对应的插值 x 值,请交换关键字 -x 和 -y 的值。
语法
tcl
ext::FindVals -out <list_name> -x <list_of_r> -y <list_of_r> -xo <r>
[-yLog 0 | 1] [-xLog 0 | 1] [-info 0 | 1 | 2 | 3] [-help 0 | 1]返回值
无
参数
| 参数 | 描述 |
|---|---|
-out <list_name> | 存储 y 值列表的列表名称。(列表名称,无默认值) |
-x <list_of_r> | 包含 x 值的列表。(实数列表,无默认值) |
-y <list_of_r> | 包含 y 值的列表。(实数列表,无默认值) |
-xo <r> | 目标 x 值。(实数,无默认值) |
-yLog 0 | 1 | 选择用于 y 轴值的线性(0)或对数(1)插值。默认值:0 |
-xLog 0 | 1 | 选择用于 x 轴值的线性(0)或对数(1)插值。默认值:0 |
-info 0 | 1 | 2 | 3 | 设置本地信息级别。默认值:0 |
-help 0 | 1 | 设置为 1 时打印帮助信息。默认值:0 |
示例
tcl
set Xs [list 0.0 1.0 2.0 3.0 4.0]
set Ys [list 0.0 2.0 4.0 2.0 0.0]
# 查找 Ys=2.0 对应的所有 Xs 元素
ext::FindVals -out xos -x $Ys -y $Xs -xo 2.0
puts "The elements of Xs corresponding to Ys= 2.0 are $xos"
# 查找 Ys=2.0 对应的第一个 Xs 元素
ext::ExtractValue -out xos -name "noprint" -x $Ys -y $Xs -xo 2.0
puts "The first element of Xs corresponding to Ys= 2.0 is $xos"
#-> The elements of Xs corresponding to Ys= 2.0 are 1.0 3.0
#-> The first element of Xs corresponding to Ys= 2.0 is 1.0ext::LinFit
使用最小二乘法对曲线进行线性拟合 。曲线由两个 Tcl 列表表示,一个包含 x 值(自变量),一个包含相应的 y 值(因变量)。
语法
tcl
ext::LinFit -out <array_name> -x <list_of_r> -y <list_of_r>
-xmin <r> -xmax <r> [-npar 1 | 2] [-weighted "off" | "on"]
[-weights <list_of_r>] [-info 0 | 1 | 2 | 3] [-help 0 | 1]返回值
无
参数
| 参数 | 描述 |
|---|---|
-out <array_name> | 存储结果的数组名称。数组有一个字符串索引。索引包含元素 X、Y、Yestimate、residuals、slope、yintercept、n、dof 和 RMSE。X 元素的值是使用关键字 -x 指定的值列表的子集。Y 元素的值是使用关键字 -y 指定的值列表的子集。Yestimate、residuals、slope、yintercept(对于 -npar 2)、dof 和 RMSE 元素分别是估计的 Y 值()、残差()、估计的斜率()、估计的 y 截距()、自由度(dof)和均方根误差(RMSE)。n 元素的值是 X 元素表示的列表中的元素数量()。(数组名称,无默认值) |
-x <list_of_r> | 包含 x 值的列表。这些必须按升序或降序排列。(实数列表,无默认值) |
-y <list_of_r> | 包含 y 值的列表。(实数列表,无默认值) |
-xmin <r> | 执行线性拟合的 x 值范围内的最小 x 值。(实数,无默认值) |
-xmax <r> | 执行线性拟合的 x 值范围内的最大 x 值。(实数,无默认值) |
-npar 1 | 2 | 计算参数的数量。如果使用 -npar 1,则仅计算斜率,并假设 y 截距为 0。默认值:2 |
-weighted "off" | "on" | 选择无权重("off")或加权("on")线性回归。默认值:"off" |
-weights <list_of_r> | 包含每个 x 值的权重值的列表。(实数列表,无默认值) |
-info 0 | 1 | 2 | 3 | 设置本地信息级别。默认值:0 |
-help 0 | 1 | 设置为 1 时打印帮助信息。默认值:0 |
示例
tcl
set Xs [list 20 60 100 140 180 220 260 300 340 380]
set Ys [list 0.18 0.37 0.35 0.78 0.56 0.75 1.18 1.36 1.17 1.65]
ext::LinFit -out XY -x $Xs -y $Ys -xmin [lindex $Xs 0] \
-xmax [lindex $Xs end]
puts "Estimated slope= $XY(slope)"
puts "Estimated y-intercept= $XY(yintercept)"
puts "Root-MSE= $XY(RMSE)"
#-> Estimated slope= 0.00383
#-> Estimated y-intercept= 0.06924
#-> Root-MSE= 0.159使用最小二乘法进行线性拟合
Y 作为 X 函数的回归曲线为:
其中 是斜率, 是 y 截距。
第 个数据点 的残差 定义为:
其中 是第 个数据点的 y 值估计。
误差平方和(SSE)定义为:
其中 是数据点编号。
拟合或估计的回归线:
通过最小化 SSE 计算。这里 、 和 分别是估计的 y 值、斜率和 y 截距 [1]。
RMSE 定义为:
其中对于 个数据点,自由度(dof)定义为:
ext::Linspace
在两个实数(xmin 和 xmax)之间创建 个线性等间距的值列表,包括端点。
语法
tcl
ext::Linspace -out <list_name> -xmin <r> -xmax <r> -n <i>
[-info 0 | 1 | 2 | 3] [-help 0 | 1]返回值
无
参数
| 参数 | 描述 |
|---|---|
-out <list_name> | 存储线性等间距值列表的列表名称。(列表名称,无默认值) |
-xmin <r> | 获取 x 值范围的最小 x 值。(实数,无默认值) |
-xmax <r> | 获取 x 值范围的最大 x 值。(实数,无默认值) |
-n <i> | 创建的值数量,其中 -n 的值应为大于 1 的正整数。(整数,无默认值) |
-info 0 | 1 | 2 | 3 | 设置本地信息级别。默认值:0 |
-help 0 | 1 | 设置为 1 时打印帮助信息。默认值:0 |
示例
tcl
# 创建 0 到 1 之间 11 个线性等间距值的列表
ext::Linspace -out X -xmin 0 -xmax 1 -n 11
puts "Xs: $X"
#-> Xs: 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1ext::LinTransList
对列表的元素应用线性变换。列表的元素被替换为变换后的值:
语法
tcl
ext::LinTransList -out <list_name> -x <list_of_r>
[-m <r>] [-b <r>] [-info 0 | 1 | 2 | 3] [-help 0 | 1]返回值
无
参数
| 参数 | 描述 |
|---|---|
-out <list_name> | 存储变换值列表的列表名称。(列表名称,无默认值) |
-x <list_of_r> | 输入列表。(实数列表,无默认值) |
-m <r> | 线性变换的斜率。(实数,默认值:1.0) |
-b <r> | 线性变换的偏移量。(实数,默认值:0.0) |
-info 0 | 1 | 2 | 3 | 设置本地信息级别。默认值:0 |
-help 0 | 1 | 设置为 1 时打印帮助信息。默认值:0 |
示例
tcl
load_file DATA/IdVgLin_nMOS_des.plt -name DC
create_plot -1d -name Plot_IdVg
set Vgs [get_variable_data "gate OuterVoltage" -dataset DC]
set Ids [get_variable_data "drain TotalCurrent" -dataset DC]
ext::LinTransList -out VgTrans -x $Vgs -b 0.55
;# 将 Vg 值偏移 0.55 V
ext::LinTransList -out IdTrans -x $Ids -m 1e6
;# 将 Id 值从 A/um 缩放到 mA/mm
# 创建偏移和缩放后的 Id-Vg 曲线
create_variable -name VgTrans -dataset IdVgTrans -values $VgTrans
create_variable -name IdTrans -dataset IdVgTrans -values $IdTrans
create_plot -1d -name Plot_IdVg
create_curve -name IdVgTrans -dataset IdVgTrans \
-axisX "VgTrans" -axisY "IdTrans"ext::Log10List
对列表的元素应用 log10 函数。列表的元素被替换为函数值。
语法
tcl
ext::Log10List -out <list_name> -x <list_of_r>
[-info 0 | 1 | 2 | 3] [-help 0 | 1]返回值
无
参数
| 参数 | 描述 |
|---|---|
-out <list_name> | 存储值列表的列表名称。(列表名称,无默认值) |
-x <list_of_r> | 输入列表。(实数列表,无默认值) |
-info 0 | 1 | 2 | 3 | 设置本地信息级别。默认值:0 |
-help 0 | 1 | 设置为 1 时打印帮助信息。默认值:0 |
示例
tcl
set Xs [list 10 100 1000]
ext::Log10List -out Ys -x $Xs
puts "log10(Xs): $Ys"
#-> log10(Xs): 1.0 2.0 3.0ext::RemoveDuplicates
对于一对列表 x 和 y,删除列表 x 的重复元素以及列表 y 的相应元素。
语法
tcl
ext::RemoveDuplicates -out <array_name> -x <list_of_r> -y <list_of_r>
[-eps <r>] [-info 0 | 1 | 2 | 3] [-help 0 | 1]返回值
无
参数
| 参数 | 描述 |
|---|---|
-out <array_name> | 存储结果的数组名称。数组有一个字符串索引。索引包含元素 X 和 Y。X 元素的值是使用关键字 -x 指定的值列表的子集。这些值不包含重复值。Y 元素存储使用关键字 -y 指定的列表的相应元素。Y 元素的值是使用关键字 -y 指定的值列表的子集。(数组名称,无默认值) |
-x <list_of_r> | 输入列表。(实数列表,无默认值) |
-y <list_of_r> | 输入列表。(实数列表,无默认值) |
-eps <r> | 如果使用关键字 -x 指定的列表的两个相邻元素之间的差值小于 -eps,则删除第一个元素。(实数,默认值:) |
-info 0 | 1 | 2 | 3 | 设置本地信息级别。默认值:0 |
-help 0 | 1 | 设置为 1 时打印帮助信息。默认值:0 |
示例
tcl
set x [list 1 1 2 3 1 1 2 2 2 3]
set y [list 10 20 30 40 50 60 70 80 90 100]
ext::RemoveDuplicates -out XY -x $x -y $y
set Xs $XY(X)
set Ys $XY(Y)
puts "Xs: $Xs"
puts "Ys: $Ys"
#-> Xs: 1 2 3 1 2 3
#-> Ys: 20 30 40 60 90 100ext::RemoveZeros
对于一对列表 x 和 y,删除列表 x 中的零元素以及列表 y 的相应元素。
语法
tcl
ext::RemoveZeros -out <array_name> -x <list_of_r> -y <list_of_r>
[-iplists "x" | "y" | "xy"] [-eps <r>] [-info 0 | 1 | 2 | 3]
[-help 0 | 1]返回值
无
参数
| 参数 | 描述 |
|---|---|
-out <array_name> | 存储结果的数组名称。数组有一个字符串索引。索引包含元素 X 和 Y。X 元素的值是使用关键字 -x 指定的值列表的子集。这些值不包含零值。Y 元素存储使用关键字 -y 指定的列表的相应元素。Y 元素的值是使用关键字 -y 指定的值列表的子集。(数组名称,无默认值) |
-x <list_of_r> | 输入列表。(实数列表,无默认值) |
-y <list_of_r> | 输入列表。(实数列表,无默认值) |
-iplists "x" | "y" | "xy" | 从中删除零的输入列表。如果使用 -iplists "x",则从使用关键字 -x 指定的列表中删除零。如果使用 -iplists "xy",则从使用关键字 -x 和 -y 指定的两个列表中删除零。(字符串,无默认值) |
-eps <r> | 如果使用关键字 -x 指定的列表的元素小于 -eps 的值,则将其删除。(实数,默认值:) |
-info 0 | 1 | 2 | 3 | 设置本地信息级别。默认值:0 |
-help 0 | 1 | 设置为 1 时打印帮助信息。默认值:0 |
示例
tcl
set xs [list 0 1 2 3 0 -1]
set ys [list 10 20 30 40 50 0]
# 仅从 xs 列表中删除零
ext::RemoveZeros -out XY -x $xs -y $ys -iplists "x"
puts "Xs: $XY(X)"
puts "Ys: $XY(Y)"
#-> Xs: 1 2 3 -1
#-> Ys: 20 30 40 0ext::SubLists
从一对列表中创建一对子列表其中一个列表是 x 值列表。第二个列表是 y 值列表。子列表使用 x 值范围创建。
NOTE
要使用 y 值范围创建一对子列表,请交换关键字 -x 和 -y,并使用关键字 -xmin 和 -xmax 指定 y 值范围。要从单个列表创建子列表,请同时使用 -x 和 -y 关键字指定列表的值。
语法
tcl
ext::SubLists -out <array_name> -x <list_of_r> -y <list_of_r>
-xmin <r> -xmax <r>
[-info 0 | 1 | 2 | 3] [-help 0 | 1]返回值
无
参数
| 参数 | 描述 |
|---|---|
-out <array_name> | 存储结果的数组名称。数组有一个字符串索引。索引包含元素 X 和 Y。X 元素的值是使用关键字 -x 指定的值列表的子集。Y 元素的值是使用关键字 -y 指定的值列表的子集。(数组名称,无默认值) |
-x <list_of_r> | 包含 x 值的列表。这些必须按升序或降序排列。(实数列表,无默认值) |
-y <list_of_r> | 包含 y 值的列表。(实数列表,无默认值) |
-xmin <r> | 获取子列表的 x 值范围内的最小 x 值。(实数,无默认值) |
-xmax <r> | 获取子列表的 x 值范围内的最大 x 值。(实数,无默认值) |
-info 0 | 1 | 2 | 3 | 设置本地信息级别。默认值:0 |
-help 0 | 1 | 设置为 1 时打印帮助信息。默认值:0 |
示例
tcl
set xs [list 1 2 3 4 5 6 7]
set ys [list 10 20 30 40 50 60 70]
ext::SubLists -out XY -x $xs -y $ys -xmin 2 -xmax 5
puts "Xs: $XY(X)"
puts "Ys: $XY(Y)"
#-> Xs: 2 3 4 5
#-> Ys: 20 30 40 50lib::SetInfoDef
设置默认信息级别。
NOTE
- Level 0:仅警告、错误或状态消息。
- Level 1:回显结果。
- Level 2:显示进度和一些调试信息。
- Level 3:显示所有调试信息。
也可以使用提取库过程中过程的 -info 关键字设置本地信息级别。
语法
tcl
lib::SetInfoDef 0 | 1 | 2 | 3返回值
无
参数
| 参数 | 描述 |
|---|---|
<info_level> | 设置默认信息级别。默认值:0 |
示例
tcl
lib::SetInfoDef 2参考资料
[1] W. H. Press et al., Numerical Recipes in C: The Art of Scientific Computing, Cambridge: Cambridge University Press, 2nd ed., 1992.