Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

22 NM

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 12

#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= 100

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 3
# 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)" all add

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} all add

# -------------------------------------------------------
# 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
polygon clear
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)" all add

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

polygon clear
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)" all add

polygon clear
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 add

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 add

#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

# -------------------------------------------------------------
# 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} type= isotropic rate= 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}
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 all add

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)" Silicon add

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} Silicon add

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

You might also like