Synopsys Sentaurus TCAD系列教程之-Tcl《4》

Tool command language(Tcl)

4. 示例

介绍TCAD sentaurus特有的Tcl示例

4.1 Inspect: 抽取击穿电压

source util_ins.cmd

proj_load  break.plt  D
cv_create IcVc "D IcVc(4) x" "D IcVc(4) y" 

set Ilevel 1e-8
Extract_BV IcVc $Ilevel

cv_display IcVc
cv_setCurveAttr IcVc "IcVc" \
  red solid 3 circle 3 defcolor 1 defcolor
gr_setAxisAttr X  {Collector Voltage (V)} 14 {} {} black 1 14 0 5 0
gr_setAxisAttr Y  {Current (A)}           14 {} {} black 1 14 0 5 1

此示例“Inspect_ins.cmd”显示了如何在Inspect输入流中混合Tcl命令和Inspect命令,以从双击晶体管模拟结果中提取开路基极击穿电压。
提取不同的击穿电压:
1)BV_vmax定义为扫描期间获得的最大集电极电压
2)BV_Ilevel被定义为集电极电流超过某一值时的集电极电压
如果“Inspect”工具节点没有完成状态,既不是黄色,请首先运行该节点以生成结果。然后,单击“Run Selected Visualizer Nodes Together” 工具栏按钮以创建绘图。
首先,来源文件util_ins.cmd,提供击穿电压提取程序EXTRACT_BV:

source util_ins.cmd

其次,加载.plt文件并创建集电极I-V曲线

proj_load break.plt D
cv_create IcVc "D IcVc(4) x" "D IcVc(4) y"

最后,通过使用限流调用EXTRACT_BV来提取击穿电压

set Ilevel 1e-8
Extract_BV IcVc $Ilevel

击穿电压提取程序EXTRACT_BV在文件util_ins.cmd中定义
因此,Inspect节点返回从“DOE:”输出中提取的值:
DOE: BV_vmax 75.35
DOE: BV_Ilevel 40.91
DOE: Ilevel 1e-8

proc Extract_BV { Cname Ilevel } {
  set VList [cv_getValsX $Cname]
  set IList [cv_getValsY $Cname]
 
  set vmax 0.0
  set vi   0.0
  foreach v $VList i $IList {
     if { $v > $vmax } { set vmax $v }
     if { $i >= $Ilevel && $vi == 0.0} { set vi $v}
  }
 
  ft_scalar BV_vmax   $vmax
  ft_scalar BV_Ilevel $vi
  ft_scalar Ilevel    $Ilevel
}

Inspect命令cv_getValsX 和cv_getValsY将Inspect曲线转换为Tcl列表,其中包含曲线的x或y值
Inspect命令ft_scalar打印提取的值并将其传递给Sentaurus Workbench.

4.2 Sentaurus Process: 抽取SiO2厚度

本示例sprocess_fps.cmd.演示了在Sentaurus Process命令文件中使用Tcl脚本

#--- 1D Grid definition ----------------------------------------------
line x location=0.0         spacing=  2<nm> tag=SiTop                     
line x location=0.5<um>  spacing= 50<nm> tag=SiBottom                 

#--- Initial simulation domain ---------------------------------------
region silicon xlo=SiTop xhi=SiBottom 

#--- Initialize the simulation ---------------------------------------
init concentration=1.0e15<cm-3> field=Boron wafer.orient=100

#--- Grid settings for automatic meshing in newly generated layers -
grid set.min.normal.size=3<nm> set.normal.growth.ratio.2d=1.4

#--- Growing screening oxide -----------------------------------------
gas_flow name=O2_1_N2_1 pressure=1<atm> \
         flowO2=1.2<l/min> flowN2=1.0<l/min>
diffuse temperature=1000<C>  time=40<min> gas_flow=O2_1_N2_1
grid remesh

#--- Measuring the oxide thickness -----------------------------------
select z=Boron

set LAYERS [layers]
puts "$LAYERS"
#->{         Top                Bottom             Integral             Material }
#->{  -1.584176604347e-02  1.126859234306e-02  6.391490417248e+09 Oxide }
#->{   1.126859234306e-02  5.000000000000e-01  4.360844257716e+10 Silicon }

set FirstColumn [list]
foreach Row $LAYERS {
 lappend FirstColumn [lindex $Row 0]
}

set Tox [expr [lindex $FirstColumn 2] - [lindex $FirstColumn 1]]
puts "The thickness of the grown oxide is \
        [format %.2f [expr 1e3*$Tox]] nm"
#-> The thickness of the grown oxide is 27.20 nm
puts "DOE: Tox $Tox"

Sentarurus Process接收到仿真命令后,Sentaurus Process Tcl函数层用于提取有关生成的层的信息作为列表。每个图层条目都是一个列表,包含了顶部和底部坐标、当前数据集的积分值(此处不研究这个),以及材料:

set LAYERS [layers]
puts "$LAYERS"
#->{         Top                Bottom             Integral             Material }
#->{  -1.584176604347e-02  1.126859234306e-02  6.391490417248e+09 Oxide }
#->{   1.126859234306e-02  5.000000000000e-01  4.360844257716e+10 Silicon }

为了提取氧化物厚度,Layers表被简化为一个简单的平面列表,由第一列也就是顶部坐标构成:

set FirstColumn [list]
foreach Row $LAYERS {
 lappend FirstColumn [lindex $Row 0]
}

然后,通过减去第一层和第二层的顶部坐标来确定氧化物厚度。结果作为DOE:output打印到日志文件中,这样Sentaurus Workbench可以从输出中提取结果并将其添加到结果表中。

set Tox [expr [lindex $FirstColumn 2] - [lindex $FirstColumn 1]]
puts "The thickness of the grown oxide is \
        [format %.2f [expr 1e3*$Tox]] nm"
#-> The thickness of the grown oxide is 27.20 nm
puts "DOE: Tox $Tox"

使用命令行选项-n运行Sentautus Process, 以在使用Tcl表达式时忽略语法检查,Tcl表达式使用尽在运行时可用的信息。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值