T-Gate, OFF state, Strain Contours & IV plot (2D) - full deck
NOTE: The files "GaN Models Source File (2D)" and "TgateDimensions" must be saved and included in the same directory as this "T-Gate" file, or have paths pointing to these files, in order to run this T-Gate script. These two previously mentioned files are sourced within this T-Gate script to define material characteristics and to define the gate size in the grid. Links to these files are provided.
DevicePackage
pdbSetDouble Math iterLimit 800 pdbSetDouble Math rhsLimit 1.0e-15 pdbSetDouble Math updateLimit 1.0e-6 math device dim=2 col umf none scale
This command sources the "GaN Models source file". It is now set such that the "GaN Models source file" is in the same directory as this T-Gate script.
source GaN Models Source file (2D) - full deck #source GaN_ETemp
mater add name=Metal mater add name=OxPhase mater add name=Nitride
#Set up solution for displacement solution name = displacement add solve dim continuous negative solution name = Temp add solve
math diffuse dim=2 umf none col !scale
pdbSetBoolean GaN displacement Negative 1 pdbSetBoolean ReflectLeft displacement Negative 1 pdbSetDouble GaN displacement Abs.Error 1.0e-8 pdbSetDouble ReflectLeft displacement Abs.Error 1.0e-8
pdbSetBoolean AlGaN displacement Negative 1 pdbSetBoolean ReflectLeft displacement Negative 1 pdbSetDouble AlGaN displacement Abs.Error 1.0e-8 pdbSetDouble ReflectLeft displacement Abs.Error 1.0e-8
pdbSetBoolean Nitride displacement Negative 1 pdbSetBoolean ReflectLeft displacement Negative 1 pdbSetDouble Nitride displacement Abs.Error 1.0e-8 pdbSetDouble ReflectLeft displacement Abs.Error 1.0e-8
pdbSetBoolean OxPhase displacement Negative 1 pdbSetBoolean ReflectLeft displacement Negative 1 pdbSetDouble OxPhase displacement Abs.Error 1.0e-8 pdbSetDouble ReflectLeft displacement Abs.Error 1.0e-8
pdbSetBoolean ReflectRight displacement Negative 1 pdbSetDouble ReflectRight displacement Abs.Error 1.0e-8
#Fix base pdbSetBoolean ReflectBottom displacement Fixed 1 pdbSetString ReflectBottom displacement Equation "displacement" #Fix sides pdbSetBoolean ReflectLeft displacement Fixed 1 pdbSetString ReflectLeft displacement Equation "displacement"
pdbSetBoolean ReflectRight displacement Fixed 1 pdbSetString ReflectRight displacement Equation "displacement"
pdbSetString GaN displacement Equation "elastic(displacement)" pdbSetString AlGaN displacement Equation "elastic(displacement)-BodyStrain(0.004)+IPZ(DevPsi)" #pdbSetString AlGaN displacement Equation "elastic(displacement)+BodyStrain(0.004) pdbSetString OxPhase displacement Equation "elastic(displacement)" pdbSetString Nitride displacement Equation "elastic(displacement)+BodyStrain(0.00005)"
This command sources the "TgateDimensions" file. It is now set such that the "TgateDimensions" file is in the same directory as this T-Gate script. The AlGaN is now set to a 25nm thickness and gate length at the bottom is 0.3um.
source T-Gate Dimensions file (2D) - full deck
These lines create the device structure and define the grid sizing:
line x loc=-0.2 spac=0.01 tag=Gwt line x loc=-0.1 spac=0.01 tag=Gwb line x loc=-0.005 spac=0.001 tag=Ox line x loc=0.0 spac=0.001 tag=AlGaNTop line x loc=$Althick spac=0.005 tag=AlGaNBottom line x loc=1.0 spac=0.1 tag=BBottom
line y loc=-1.0 spac=0.05 tag=Left line y loc=$Gtl spac=0.02 tag=sidewL line y loc=$Gbl spac=0.02 tag=sidenL line y loc=$Gbr spac=0.02 tag=sidenR line y loc=$Gtr spac=0.02 tag=sidewR line y loc=1.0 spac=0.05 tag=Right
#Bulk region GaN xlo=AlGaNBottom xhi=BBottom ylo=Left yhi=Right
#AlGaN under gate region AlGaN xlo=AlGaNTop xhi=AlGaNBottom ylo=Left yhi=Right #Metal alloy for T-gate region Metal xlo=Gwt xhi=Gwb ylo=sidewL yhi=sidewR region Metal xlo=Gwb xhi=Ox ylo=sidenL yhi=sidenR
#Nitride cap layer region Nitride xlo=Gwt xhi=Gwb ylo=Left yhi=sidewL region Nitride xlo=Gwt xhi=Gwb ylo=sidewR yhi=Right region Nitride xlo=Gwb xhi=Ox ylo=Left yhi=sidenL region Nitride xlo=Gwb xhi=Ox ylo=sidenR yhi=Right
#Created Oxide layer region OxPhase xlo=Ox xhi=AlGaNTop ylo=Left yhi=Right
init
#Contacts contact name=G Metal xlo=-0.195 xhi=-0.002 ylo=[expr {$Gtl-$buf}] yhi=[expr {$Gtr+$buf}] add depth=1.0 width=1.0 contact name=B GaN xlo=0.9 xhi=1.1 ylo=-1.0 yhi=1.0 add depth=1.0 width=1.0 contact name=S AlGaN ylo=-1.0 yhi=-0.9 xlo=-0.7 xhi=0.0005 add depth=1.0 width=1.0 contact name=D AlGaN ylo=0.9 yhi=1.0 xlo=-0.7 xhi=0.0005 add depth=1.0 width=1.0
At this point, in a plot you should have the device and contacts:
contact name=G current=(Hole_AlGaN-Elec_AlGaN) voltage supply=0.0 contact name=B current=(Hole_GaN-Elec_GaN) voltage supply=0.0 contact name=D current=(Hole_GaN-Elec_GaN) voltage supply=0.0 contact name=S current=(Hole_GaN-Elec_GaN) voltage supply=0.0 #doping definition-will use method from pfmos_qf deck for simplicity #GaN Doping-from Dessis file from Heller-acceptor-p-type sel z=-6.5e16*Mater(GaN) name=GaN_Doping #AlGaN Doping-from Dessis file from Heller-he puts equivalent donor and acceptor doping in region to signify traps sel z=1e12 name=AlGaN_Doping #sel z=1e12*Mater(OxPhase) name=OxPhase_Doping #sel z=1e20*Mater(Metal)*(x>=-0.2)*(x<=-0.002)*(y>$Gtl)*(y<$Gtr) name=Metal_Doping sel z=1e20*(x>=-0.2)*(x<=-0.002)*(y>$Gtl)*(y<$Gtr) name=Metal_Doping #Source and Drain contact doping-from contact to 2DEG like Heller-just to make contacts ohmic sel z=(1e19*(y>0.75)+(y<=0.75)*1.0e19*exp(-(y-0.75)*(y-0.75)/(0.75*0.02*0.02)))*(exp(-(x*x)/(2.0*0.03*0.03)))*(x>=0.0) name=Drain_Doping sel z=(1e19*(y<-0.75)+(y>=-0.75)*1.0e19*exp(-(y+0.75)*(y+0.75)/(0.75*0.02*0.02)))*(exp(-(x*x)/(2.0*0.03*0.03)))*(x>=0.0) name=Source_Doping
#Total doping #sel z=GaN_Doping+AlGaN_Doping+Drain_Doping+Source_Doping+Metal_Doping+OxPhase_Doping name=Doping sel z=GaN_Doping+AlGaN_Doping+Drain_Doping+Source_Doping+Metal_Doping name=Doping sel z=0.26 name=AlN_Ratio
These procedures set up the options to plot the entire device, "Plot", or just the gate area, "Plotsmall":
proc Plot {} { plot.2d bound plot.2d contact=G !cle plot.2d contact=B !cle plot.2d contact=S !cle plot.2d contact=D !cle plot.2d contact=F1 !cle plot.2d contact=F2 !cle } proc Plotsmall {} { plot.2d bound min = {-2e-5 -4e-5} max = {1.5e-5 4e-5} plot.2d contact=G !cle } proc Plotasy {} { plot.2d bound min = {-2e-5 -6.5e-5} max = {1.5e-5 1.5e-5} plot.2d contact=G !cle }
Initialize
device init
These set the initial Gate, Source and Drain biases (Vgs,Vss avd Vdd). The gate voltage is set to -5V which puts the device in the OFF state:
set Vgs -5.0 #set Vgs -1.0 set Vdd 0.0 set Vss 0.0 set Vbb 0.0
This line creates the window in which the IV curve will be plotted:
set WinA [CreateGraphWindow]
This loop steps the drain voltage up from 0 to 15V in intervals of 0.4V:
for {set Vdd 0.00} {$Vdd<15.4} {set Vdd [expr $Vdd+0.4]} {
contact name=D supply=$Vdd contact name=G supply=$Vgs contact name=S supply=$Vss contact name=B supply=$Vbb
sel z=CompStrain(xx,displacement) name=Xcom sel z=CompStrain(yy,displacement) name=Ycom sel z=CompIPZStrain(xx,DevPsi) name=Dfx sel z=CompIPZStrain(yy,DevPsi) name=Dfy sel z=sqrt((Xcom*Xcom)+(Ycom*Ycom)) name=Mtotal sel z=sqrt((Dfx*Dfx)+(Dfy*Dfy)) name=Pztotal #sel z=Xcom+Dfx name=disp sel z=Dfx name=disp
sel z=disp name=FullStrain
sel z=FullStrain
These lines create a 2D boundary outline of the device, and plots the contour values of strain as given in the 'contours' procedure below:
Plot #Plotsmall #Plotasy
proc contours {} { contour val=1.0e-4 col=blue contour val=-1.0e-4 col=red contour val=-6.5e-4 col=brown contour val=-8.5e-04 col=purple contour val=-7.5e-04 col=black contour val=-1.3e-4 col=green contour val=-1.0e-3 col=orange contour val=-2.5e-4 col=magenta contour val=6.5e-5 col=SteelBlue contour val=7.5e-5 col=Peru } contours
This is an example of what you should see for the OFF state strain:
device
This plots the IV curve in the created window named "WinA":
set cur [expr -1e3*([contact name=D sol=Qfn flux] - [contact name=D sol=Qfp flux])] AddtoLine $WinA IV.$Vgs $Vdd $cur }
This command saves the structure and all variables which were solved for within the device. This file can be read back into FLOOXS, or can be read by a number of plotting programs eg TecPlot, PL Plot etc:
struct outf=OFFVdd15