Como soy totalmente nuevo en el software TCAD, no puedo analizar el código.
Mis dudas son las siguientes:
1) ¿Se trata de un SOI Finfet?
2) ¿Por qué solo puedo ver la mitad de la estructura en el último nodo?
#header
#rem #---------------------------------------------------------------------#
#rem # LAYOUT
#rem #---------------------------------------------------------------------#
set Domain @Domain@
#if "@Layout@" == "gds"
#rem # Loading of the "GDSII Layout" file.
if { $Domain == "TN" } {
icwb gds.file= "FinSRAM.gds" cell= "SRAM" scale= 1e-3 \
layer.numbers= {0:0 1:0 2:0 3:0} \
layer.names= {FIN GATE CONTACT NWELL} \
domain.name= $Domain sim3d= "100.50 0.00 125.50 65.00"
} elseif { $Domain == "TP" } {
icwb gds.file= "FinSRAM.gds" cell= "SRAM" scale= 1e-3 \
layer.numbers= {0:0 1:0 2:0 3:0} \
layer.names= {FIN GATE CONTACT NWELL} \
domain.name= $Domain sim3d= "151.00 0.00 197.50 65.00"
}
#else
#rem # Loading of the "TCAD Layout" file.
icwb filename= "FinSRAM_lyt.mac" scale= 1e-3
#rem # Selecting the simulation domain.
icwb domain= $Domain
#endif
set DIM [icwb dimension]
#rem # Query utility: Returns the dimension of the selected simulation domain.
LogFile "icwb: dimension -> $DIM"
#rem # Query utility: Returns the bounding box of the simulation domain.
set Ymin [icwb bbox left ]
set Ymax [icwb bbox right]
set Zmin [icwb bbox back ]
set Zmax [icwb bbox front]
#endheader
fproc HexaPrism {args} {
#rem # HexaPrism - procedure to create prism from hexagon along SProcess Y
#rem # It take the following arguments:
#rem # 0. Name - name of the prism
#rem # 1. Height - height of the prism
#rem # 2. DeltaX - Prism center translation along SProcess X (optional, default=0)
#rem # 3. DeltaY - Prism center translation along SProcess Y (optional, default=0)
#rem # 4. DeltaZ - Prism center translation along SProcess Z (optional, default=0)
#rem # 5. alpha - Prism hexagon angle measured from YZ plane(optional, default=60)
#rem # 6. YY - Prism width along SProcess Y (optional, default=height)
#rem # 7. ZZ - Prism hexagon diagonal length along SProcess Z (optional)
if {[llength $args] < 2 || [llength $args] > 8} {
error "HexaPrism: wrong number of arguments"
exit -1
}
fset name [lindex $args 0]
fset h [lindex $args 1]
fset dx 0
fset dy 0
fset dz 0
if {[llength $args] > 2 } {
fset dx [lindex $args 2]
}
if {[llength $args] > 3 } {
fset dy [lindex $args 3]
}
if {[llength $args] > 4 } {
fset dz [lindex $args 4]
}
if {[llength $args] > 5 } {
fset alpha [expr [lindex $args 5]*atan(1.0)/45.0]
} else {
fset alpha [ expr 60.0*atan(1.0)/45.0]
}
if {[llength $args] > 6 } {
fset yy [lindex $args 6]
} else {
fset yy $h
}
if {[llength $args] == 8 } {
fset zz [lindex $args 7]
} else {
fset zz [expr $h*(1.0+1.0/tan($alpha))/2.0 ]
}
fset x1 [expr $h/2.0 + $dx]
fset x2 $dx
fset x3 [expr -$h/2.0 + $dx]
fset y1 [expr -$yy/2.0 + $dy]
fset y2 [expr $yy/2.0 + $dy]
fset z1 [expr $zz/2.0+$dz]
fset z2 [expr -$zz/2.0+$dz]
fset z3 [expr $zz/2.0-$h/(tan($alpha)*2.0)+$dz]
fset z4 [expr -$zz/2.0+$h/(tan($alpha)*2.0)+$dz]
if {$z3 < $z4} {
error "ERROR: inconsistent input: check height, width and angle!"
exit 1
}
# Points
point name= p1_$name coord= { $x1 $y1 $z4}
point name= p2_$name coord= { $x1 $y1 $z3}
point name= p3_$name coord= { $x2 $y1 $z1}
point name= p4_$name coord= { $x3 $y1 $z3}
point name= p5_$name coord= { $x3 $y1 $z4}
point name= p6_$name coord= { $x2 $y1 $z2}
point name= p7_$name coord= { $x1 $y2 $z4}
point name= p8_$name coord= { $x1 $y2 $z3}
point name= p9_$name coord= { $x2 $y2 $z1}
point name= p10_$name coord= { $x3 $y2 $z3}
point name= p11_$name coord= { $x3 $y2 $z4}
point name= p12_$name coord= { $x2 $y2 $z2}
# Polygons
polygon name= hex1_$name points= " p1_$name p2_$name p3_$name p4_$name p5_$name p6_$name "
polygon name= hex2_$name points= " p7_$name p8_$name p9_$name p10_$name p11_$name p12_$name "
polygon name= rec1_$name points= " p1_$name p2_$name p8_$name p7_$name "
polygon name= rec2_$name points= " p2_$name p8_$name p9_$name p3_$name "
polygon name= rec3_$name points= " p3_$name p9_$name p10_$name p4_$name "
polygon name= rec4_$name points= " p4_$name p10_$name p11_$name p5_$name "
polygon name= rec5_$name points= " p5_$name p11_$name p12_$name p6_$name "
polygon name= rec6_$name points= " p6_$name p12_$name p7_$name p1_$name "
polyhedron name= $name polygons= " hex1_$name hex2_$name rec1_$name rec2_$name rec3_$name rec4_$name rec5_$name rec6_$name" info= 2
}
fproc ChangeMaterialMatchRegions {args} {
# ChangeMaterialMatchRegions - procedure to change the material
# for regions that contain certain stem in the name
# It take the following three arguments:
# NameStem - name stem;
# NewMat - new material;
# ZeroData - Reset Doping Data
global ExecuteOn
if { ! $ExecuteOn } {
if {[llength $args] < 2} {
error "ChangeMaterialMatchRegions: wrong number of arguments"
exit -1
}
}
set NameStem [lindex $args 0]
set NewMat [lindex $args 1]
set ZeroData [lindex $args 2]
set Regions [region list.bulk]
foreach LocalRegion $Regions {
if { [string match $NameStem* $LocalRegion] && [string match $ZeroData Nozerodata] } {
region name=$LocalRegion $NewMat change.material !zero.data
}
if { [string match $NameStem* $LocalRegion] && [string match $ZeroData zerodata] } {
region name=$LocalRegion $NewMat change.material zero.data
}
}
return;
}
#rem # PARALLEL EXECUTION - uncomment if you have 8 CPUs or more
#math numThreads= 8
#rem # Unified Coordinate System
math coord.ucs
## Design Rule
fset PolyPitch 0.130
fset GateThick 0.025
fset FinPitch 0.05
fset debug 0
fset fp 1.0 ;# Division factor
fset HFin 0.04
fset STI_depth 0.15
fset Tsub 1.0
fset Wfin 0.017 ;# Z-axis on Layout
fset Tpoly 0.08
fset Lg 0.025 ;# Y-axis on Layout
fset gox 0.001
fset THK 0.002
fset MetalG 0.004
fset CapOx 0.005
fset PolyReox 0.002
fset Lsp 0.002
fset Lspepi 0.0125
# -------------------------------------------------------
# Initial grid and structure
# -------------------------------------------------------
line x location= 0.0 tag= top
line x location= 0.1
line x location= $Tsub tag= bottom
line y location= $Ymin spa= 0.02 tag= left
line y location= [expr $Lg/2.0]
line y location= $Ymax spa= 0.02 tag= right
line z location= $Zmin tag= back
line z location= [expr $Wfin/2.0]
line z location= $Zmax tag= front
region silicon substrate xlo= top xhi= bottom ylo= left yhi= right zlo= back zhi= front
init field= Boron concentration= 1.0e15 wafer.orient= {0 0 1}
AdvancedCalibration
# -------------------------------------------------------
# pdb settings
# -------------------------------------------------------
pdbSet ImplantData ResistSkip 1
pdbSet ImplantData BackBoundary Reflect
pdbSet ImplantData LeftBoundary Reflect
pdbSet ImplantData FrontBoundary Reflect
pdbSet ImplantData RightBoundary Reflect
pdbSet Mechanics StressHistory 1
pdbSet ImplantData DoseControl WaferDose
# Solver Enhancement
pdbSet Math diffuse 3D ILS.hpc.mode 4
# turn off stress relaxation after depo/etch
pdbSet Mechanics EtchDepoRelax 0
# meshing parameters
mgoals resolution= 1.0/3.0 accuracy= 1e-6
pdbSet Grid SnMesh min.normal.size 0.005/$fp
pdbSet Grid SnMesh normal.growth.ratio.3d 2.0
pdbSet Grid SnMesh max.box.angle.3d 175
#Refinement
icwb.create.mask layer.name= "FIN" name= FinMask polarity= positive
refinebox name= fin mask= FinMask \
extend= 0.75 extrusion.min= -0.0 extrusion.max= $Tsub \
xrefine= "0.5/$fp" yrefine= "$Lg/(2.0*$fp)" zrefine= "$Wfin/(2.0*$fp)"
refinebox name= FinIF mask= FinMask \
extend= 0.75 extrusion.min= -0.01 extrusion.max= $STI_depth \
min.normal.size= 0.001/$fp normal.growth.ratio= 2.0 interface.materials= {Silicon Oxide}
# -------------------------------------------------------
# process flow
# -------------------------------------------------------
# Hard mask nitride
deposit material= {Oxide} type= anisotropic rate= {1.0} time= 0.01
deposit material= {Nitride} type= anisotropic rate= {1.0} time= 0.1
# Fin mask
icwb.create.mask layer.name= "FIN" name= FIN polarity= negative
photo mask= FIN thickness= 0.02
etch material= {Nitride} type= anisotropic rate= {0.1} time= 1.1
if { $debug } { struct tdr.bnd= n@node@_01 }
strip Photoresist
etch material= {Oxide} type= anisotropic rate= {0.01} time= 1.1
etch material= {Silicon} type= trapezoidal rate= $STI_depth time= 1.0 angle= 88.0
strip Nitride
strip Oxide
if { $debug } { struct tdr.bnd= n@node@_02 }
etch material= {Silicon} type= isotropic rate= {0.002} time= 1.0
deposit material= {Silicon} type= isotropic rate= {0.002} time= 1.0 selective.materials= {Silicon}
if { $debug } { struct tdr.bnd= n@node@_03 }
deposit oxide fill coord= -0.005
etch oxide thickness= [expr $HFin+0.005] anisotropic
if { $debug } { struct tdr.bnd= n@node@_04 }
# Cap oxide and fill
deposit material= {Oxide} type= isotropic rate= $CapOx time= 1.0
if { $debug } { struct tdr.bnd= n@node@_05 }
refinebox name= Vth mask= FinMask \
extend= 0.004 extrusion.min= -0.0 extrusion.max= [expr 2*$HFin] \
xrefine= "0.005/$fp" yrefine= "$PolyPitch/(6.0*$fp)" zrefine= "$FinPitch/(8.0*$fp)"
stressdata Oxide sxxi= -5e8<Pa> syyi= -5e8<Pa> szzi= -5e8<Pa>
diffuse stress.relax time= 1e-10 temp= 600
# --------------------------------------------------------------
# WELL/Vt implant
# --------------------------------------------------------------
icwb.create.mask layer.name= "NWELL" name= PWELL polarity= negative
photo mask= PWELL thickness= 1.0
if { $debug } { struct tdr.bnd= n@node@_06 }
implant Boron dose= 1e13 energy= 180 tilt= 0.0
implant Boron dose= 1e13 energy= 60 tilt= 0.0
implant Boron dose= 1e13 energy= 15 tilt= 0.0
strip Photoresist
icwb.create.mask layer.name= "NWELL" name= NWELL polarity= positive
photo mask= NWELL thickness= 1.0
if { $debug } { struct tdr.bnd= n@node@_07 }
implant Phosphorus dose= 1.0e13 energy= 120 tilt= 0.0
implant Phosphorus dose= 5.0e12 energy= 70 tilt= 0.0
implant Arsenic dose= 1.5e12 energy= 30 tilt= 0.0
strip Photoresist
# Well RTA
temp_ramp name= well temperature= 600<C> time= 0.067 t.final= 900
temp_ramp name= well temperature= 900<C> time= 0.033<min> t.final= 1050
temp_ramp name= well temperature= 1050<C> time= 0.2<min> t.final= 750
temp_ramp name= well temperature= 750<C> time= 0.1<min> t.final= 600
diffuse stress.relax temp.ramp= well
etch material= {Oxide} type= cmp coord= $HFin
if { $debug } { struct tdr.bnd= n@node@_08 }
#split @Poly@
# gate stack
deposit material= {Oxide} type= isotropic rate= {1.0} time= $gox
deposit material= {HfO2} type= isotropic rate= $THK time= 1.0
if { $debug } { struct tdr.bnd= n@node@_09 }
# MetalGate
deposit material= {TiNitride} type= isotropic rate= $MetalG time= 1.0
# Poly etching
icwb.create.mask layer.name= "GATE" name= POLY polarity= negative
deposit material= {PolySilicon} type= anisotropic thickness= $Tpoly+$gox+$HFin mask= POLY
etch material= {PolySilicon} type= cmp coord= -$Tpoly-$gox
#HardMask
deposit material= {Nitride} type= anisotropic rate= $HFin time=1.0 selective.materials= {PolySilicon}
if { $debug } { struct tdr.bnd= n@node@_10 }
fset Gstack [expr $gox+$HFin]
etch material= {TiNitride HfO2 Oxide} type= anisotropic rate= {$Gstack $Gstack $Gstack} time= 2.0
deposit oxide fill coord= $HFin
if { $debug } { struct tdr.bnd= n@node@_11 }
# Offset spacer
deposit material= {Oxide} type= isotropic rate= {1.0} time= $PolyReox
if { $debug } { struct tdr.bnd= n@node@_12 }
deposit material= {Nitride} type= isotropic rate= {$Lsp} time= 1.0
if { $debug } { struct tdr.bnd= n@node@_13 }
etch nitride type= anisotropic rate= [expr $PolyReox+$HFin] time= 1.1
etch material= {all} type= cmp coord= -$Tpoly-$gox
if { $debug } { struct tdr.bnd= n@node@_14 }
refinebox name= HaloImp mask= FinMask \
extend= 0.005 extrusion.min= -$gox-$THK extrusion.max= 1.5*$HFin \
xrefine= "0.002/$fp 0.005/$fp" yrefine= "$PolyPitch/(20.0*$fp)" zrefine= "$FinPitch/(10.0*$fp)"
icwb.create.mask layer.name= "GATE" name= Gate polarity= positive
refinebox name= ExtImp mask= Gate \
extend= 0.005 extrusion.min= 0.0 extrusion.max= $HFin \
xrefine= "0.001/$fp" yrefine= "$PolyPitch/(40.0*$fp)" zrefine= "$FinPitch/(20.0*$fp)" Silicon
refinebox name= ChannelIF mask= FinMask \
extend= 0.001 extrusion.min= -$gox extrusion.max= $HFin \
min.normal.size= 0.0005/$fp normal.growth.ratio= 2.0 interface.materials= {Silicon Oxide} Silicon
#split @Ext@
#-- To activate stress in Si:C pocket for nFinFET---#
pdbSetDoubleArray Silicon Carbon Conc.Strain {0 0 1 -0.432}
pdbSetDouble Silicon Mechanics TopRelaxedNodeCoord 0.05e-4
# ------------ Halo Implantation ---------------------------------------
photo mask= PWELL thickness= 0.1
if { $debug } { struct tdr.bnd= n@node@_15 }
implant Boron dose= 3.0e+13 energy= 5 tilt= 30 rotation= 30
implant Boron dose= 3.0e+13 energy= 5 tilt= 30 rotation= 150
implant Boron dose= 3.0e+13 energy= 5 tilt= 30 rotation= 210
implant Boron dose= 3.0e+13 energy= 5 tilt= 30 rotation= 330
## ---------- S/D Extension implantation nFinFET -----------------------
implant Carbon dose= 2.0e15 energy= 2.5 tilt= 45 rotation= 0.0 !pai
implant Carbon dose= 2.0e15 energy= 2.5 tilt= 45 rotation= 180.0 !pai
implant Arsenic dose= 1.0e15 energy= 4.0 tilt= 45 rotation= 0.0
implant Arsenic dose= 1.0e15 energy= 4.0 tilt= 45 rotation= 180.0
strip Photoresist
photo mask= NWELL thickness= 0.1
if { $debug } { struct tdr.bnd= n@node@_16 }
implant Arsenic dose= 2.0e13 energy= 25 tilt= 30 rotation= 30
implant Arsenic dose= 2.0e13 energy= 25 tilt= 30 rotation= 150
implant Arsenic dose= 2.0e13 energy= 25 tilt= 30 rotation= 210
implant Arsenic dose= 2.0e13 energy= 25 tilt= 30 rotation= 330
implant Phosphorus dose= 5.0e12 energy= 40 tilt= 20 rotation= 30
implant Phosphorus dose= 5.0e12 energy= 40 tilt= 20 rotation= 150
implant Phosphorus dose= 5.0e12 energy= 40 tilt= 20 rotation= 210
implant Phosphorus dose= 5.0e12 energy= 40 tilt= 20 rotation= 330
## ---------- S/D Extension implantation pFinFET -----------------------
implant BF2 dose= 1.5e15 energy= 2.5 tilt= 45 rotation= 0.0
implant BF2 dose= 1.5e15 energy= 2.5 tilt= 45 rotation= 180.0
strip Photoresist
struct tdr= n@node@_ext_impl
diffuse temperature= 750<C> time= 1.0<min>
#split @SD@
# Spacer
deposit material= {Nitride} type= isotropic rate= {$Lspepi} time= 1.0
etch material= {Nitride Oxide} type= anisotropic rate= {$HFin $HFin} time= 1.4
if { $debug } { struct tdr.bnd= n@node@_17 }
deposit oxide fill coord= $HFin
if { $debug } { struct tdr.bnd= n@node@_18 }
# Diamond shaped Si/SiGe Pocket
mater add name= SiGePocket new.like= Silicon alt.matername= SiliconGermanium
pdbSet SiGePocket SiliconGermanium.ConversionConc 1e21
mater add name= SMTPocket new.like= Silicon alt.matername= Silicon
# Height and Dimension of the pocket
fset heigth [expr 1.4*$HFin]
fset width [expr 1.4*$FinPitch]
fset length [expr $PolyPitch-$Lg-2.0*($PolyReox+$Lsp)]
fset xcenter [expr $HFin/2.0]
#if @[ string match @Domain@ "TN" ]@
HexaPrism SMT_n $heigth $xcenter $Ymin $Zmax 40.0 $length $width
polyhedron list
insert polyhedron= SMT_n replace.materials= { Gas } new.material= SMTPocket new.region= SMTPocket_1
grid remesh
sel z= 1.5e20 name= Arsenic SMTPocket store
sel z= 1.5e21 name= Carbon SMTPocket store
ChangeMaterialMatchRegions SMTPocket Silicon Nozerodata
#elif @[ string match @Domain@ "TP" ]@
etch material= {Silicon} type= anisotropic rate= {0.003} time= 1.0
etch material= {Silicon} type= isotropic rate= {0.001} time= 1.0
deposit material= {Oxide} type= fill coord= $HFin
HexaPrism SiGe_p $heigth $xcenter $Ymin $Zmax 40.0 $length $width
polyhedron list
insert polyhedron= SiGe_p replace.materials= { Gas } new.material= SiGePocket new.region= SiGePocket_1
grid remesh
sel z= 1.5e22 name= Germanium SiGePocket store
sel z= 1.5e20 name= Boron SiGePocket store
ChangeMaterialMatchRegions SiGePocket Silicon Nozerodata
#endif
if { $debug } { struct tdr.bnd= n@node@_19 }
diffuse stress.relax time= 1e-10 temp= 600
struct tdr= n@node@_Pocket
# -------------------------------------------------------------
# SD Implantation
#--------------------------------------------------------------
photo mask= PWELL thickness= 0.1
implant Arsenic dose= 5.0e+15 energy= 15.0 tilt= 0 rotation= 0
if { $debug } { struct tdr.bnd= n@node@_20 }
strip Photoresist
photo mask= NWELL thickness= 0.1
implant BF2 dose= 5.0e15 energy= 10.0 tilt= 0 rotation= 0
if { $debug } { struct tdr.bnd= n@node@_21 }
strip Photoresist
# ---- spike RTA ----
temp_ramp name= spike1000 time= 2<s> ramprate= 200<C/s> temperature= 600.0
temp_ramp name= spike1000 time= 0.1<s> ramprate= 0<C/s> temperature= 1000.0
temp_ramp name= spike1000 time= 4<s> ramprate= -75<C/s> temperature= 1000.0
diffuse temp.ramp= spike1000 stress.relax
# ---- laser annealing ----
temp_ramp name= laser time= 1e-03<s> ramprate= 6e+05<C/s> temperature= 600.0
temp_ramp name= laser time= 1e-06<s> ramprate= 0<C/s> temperature= 1200.0
temp_ramp name= laser time= 1e-03<s> ramprate= -5e+04<C/s> temperature= 1200.0
diffuse temp.ramp= laser stress.relax
struct tdr= n@node@_sd
## ---------- Contact silicidation -----------------------
etch material= {Silicon SiliconGermanium} type= isotropic rate= {0.03*$HFin 0.03*$HFin} time= 1.0
if { $debug } { struct tdr.bnd= n@node@_22 }
pdbSet Diffuse minT 450.0
diffuse stress.relax time= 1<min> temperature= 20 ramprate= [ expr 450.0 - 20.0 ]<C/min>
deposit material= {NickelSilicide} type= isotropic rate= 0.1*$HFin time= 1.0 temperature= 450 selective.materials= {Silicon SiliconGermanium}
if { $debug } { struct tdr.bnd= n@node@_23 }
diffuse stress.relax time= 1<min> temperature= 450 ramprate= [ expr 20.0 - 450.0 ]<C/min>
#split @DeviceMesh@
fset fd 1.0 ;# Division factor
#Remove Poly and metal gate
strip PolySilicon
strip TiNitride
#Polishing
etch material= {Nitride} type= cmp coord= -$gox-$THK-$MetalG
etch material= {Oxide} type= cmp coord= -$gox-$THK-$MetalG
if { $debug } { struct tdr.bnd= n@node@_24 }
##---------------Remeshing for device simulation--------##
# clears the process simulation mesh
refinebox clear
refinebox !keep.lines
line clear
# reset default settings for adaptive meshing
pdbSet Grid AdaptiveField Refine.Abs.Error 1e37
pdbSet Grid AdaptiveField Refine.Rel.Error 1e10
pdbSet Grid AdaptiveField Refine.Target.Length 100.0
# Set high quality Delaunay meshes
pdbSet Grid sMesh 1
pdbSet Grid Adaptive 1
pdbSet Grid SnMesh DelaunayType boxmethod
pdbSet Grid SnMesh CoplanarityAngle 179
pdbSet Grid SnMesh MaxPoints 2000000
pdbSet Grid SnMesh MaxNeighborRatio 1e6
pdbSet Grid SnMesh min.normal.size 1.0/$fd
pdbSet Grid SnMesh normal.growth.ratio.3d 1.0
pdbSet Grid SnMesh max.box.angle.3d 179
#refinebox interface.materials= {Silicon Oxide}
# Refinement strategy
refinebox name= DF mask= FinMask \
extend= 0.02 extrusion.min= -$MetalG-$THK-$gox extrusion.max= $HFin+0.01 \
refine.fields= { NetActive} def.max.asinhdiff= 1.0 \
refine.max.edge= "0.01/$fd 0.01/$fd 0.01/$fd" refine.min.edge= "0.004/$fd 0.004/$fd 0.004/$fd" adaptive
refinebox name= DG mask= Gate \
extend= 0.005 extrusion.min= -$gox extrusion.max= $HFin+0.01 \
xrefine= "0.005/$fd" yrefine= "$PolyPitch/(20.0*$fd)" zrefine= "$FinPitch/(10.0*$fd)" materials= {Silicon SiliconGermanium}
refinebox name= DeviceIF mask= Gate \
extend= 0.01 extrusion.min= -$MetalG-$THK-$gox extrusion.max= $HFin+0.01 \
min.normal.size= 0.0004/$fd normal.growth.ratio= 2.0 interface.materials= {Silicon Oxide SiliconGermanium Oxide }
grid remesh
#-Contacts
icwb.contact.mask layer.name= "GATE" name= "gate" box HfO2 xlo= -$gox-$THK-$MetalG xhi= $HFin+0.001 adjacent.material= Gas
contact name= "source" x= -0.01 y= 0.002 z= $Zmax-0.002 point NickelSilicide replace
contact bottom name= substrate Silicon
struct tdr= n@node@_half !gas
if { [catch { exec tdx -mtt -Y -ren source=drain n@node@_half_fps.tdr n@node@_full_fps.tdr} Err] !=0 } {
LogFile $Err
}
exit