SET - Simple Example: Difference between revisions

From Flooxs
Jump to navigation Jump to search
(New page: DevicePackage #Create Structure line x loc=0.0 tag=top spa=0.05 line x loc=0.02 spa=0.05 line x loc=10.0 spa=1.0 line x loc=30.0 spa=5.0 line x loc=40.0 tag=bot spa=5.0 line y loc=0.0...)
 
No edit summary
Line 1: Line 1:
DevicePackage
DevicePackage
#Create Structure
#Create Structure
line x loc=0.0 tag=top spa=0.05
line x loc=0.0 tag=top spa=0.05
line x loc=0.02 spa=0.05  
line x loc=0.02 spa=0.05  
line x loc=10.0 spa=1.0  
line x loc=10.0 spa=1.0  
line x loc=30.0 spa=5.0  
line x loc=30.0 spa=5.0  
line x loc=40.0 tag=bot spa=5.0  
line x loc=40.0 tag=bot spa=5.0  


line y loc=0.0 tag=left spa=4
line y loc=0.0 tag=left spa=4
line y loc=15.0 spa=0.02
line y loc=15.0 spa=0.02
line y loc=30.0 tag=right spa=4
line y loc=30.0 tag=right spa=4
region silicon xlo=top xhi=bot ylo=left yhi=right
region silicon xlo=top xhi=bot ylo=left yhi=right
init  
init  


if {1} {
if {1} {
#Define Contacts
#Define Contacts
contact name=VCC silicon xlo=-1.0 xhi=0.0 ylo=0 yhi=110 depth=1 width=1 add  
contact name=VCC silicon xlo=-1.0 xhi=0.0 ylo=0 yhi=110 depth=1 width=1 add  
contact name=GND silicon xlo=39.0 xhi=110 ylo=0 yhi=110 depth=1 width=1 add  
contact name=GND silicon xlo=39.0 xhi=110 ylo=0 yhi=110 depth=1 width=1 add  


#Plotting Options
#Plotting Options
#plot.2d grid  
#plot.2d grid  
#plot.2d bound  
#plot.2d bound  
#plot.2d contact=VCC !cle
#plot.2d contact=VCC !cle
#plot.2d contact=GND !cle
#plot.2d contact=GND !cle


set T 300
set T 300
set k 1.38066e-23
set k 1.38066e-23
set q 1.619e-19
set q 1.619e-19
set Vt [expr {$k*$T/$q}]
set Vt [expr {$k*$T/$q}]
set ni 1.1e10
set ni 1.1e10
set esi [expr 11.8 * 8.85418e-14]
set esi [expr 11.8 * 8.85418e-14]
set eps [expr $esi / $q]
set eps [expr $esi / $q]  


#define doping
#define doping
sel z=1.0e20*(x<=0.2)+1.0e12 name=ND
sel z=1.0e20*(x<=0.2)+1.0e12 name=ND
sel z=1.0e18*(x<=1.0)+1.0e16 name=NA
sel z=1.0e18*(x<=1.0)+1.0e16 name=NA
sel z=ND-NA name=Doping
sel z=ND-NA name=Doping  


#make sure models.v4 is in same directory or else define custom path
#make sure models.v4 is in same directory or else define custom path
source models.v4
source models.v4


#Setup Solution Variables: Elec, Hole, DevPsi
#Setup Solution Variables: Elec, Hole, DevPsi
solution name=Potential nosolve
solution name=Potential nosolve
solution add name=DevPsi solve negative damp
solution add name=DevPsi solve negative damp
solution add name=Elec solve !negative
solution add name=Elec solve !negative
solution add name=Hole solve !negative
solution add name=Hole solve !negative
solution add name=Qfn const solve val= "DevPsi + $Vt*log(Hole/$ni)"
solution add name=Qfn const solve val= "DevPsi + $Vt*log(Hole/$ni)"
solution add name=Qfp const solve val= "DevPsi - $Vt*log(Elec/$ni)"
solution add name=Qfp const solve val= "DevPsi - $Vt*log(Elec/$ni)"


mobility.radiation 300
mobility.radiation 300
RG.SRH
RG.SRH
RG.Auger
RG.Auger


set T 300
set T 300
set k 1.38066e-23
set k 1.38066e-23
set q 1.619e-19
set q 1.619e-19
set Vt [expr {$k*$T/$q}]
set Vt [expr {$k*$T/$q}]
set ni 1.1e10
set ni 1.1e10
set esi [expr 11.8 * 8.85418e-14]
set esi [expr 11.8 * 8.85418e-14]
set eps [expr $esi / $q]
set eps [expr $esi / $q]
set Emob 200.0
set Emob 200.0
set Hmob 100.0
set Hmob 100.0  


#Poisson, Continuity Equations
#Poisson, Continuity Equations
set eqnP "$eps * grad(DevPsi) + Doping - Elec + Hole"
set eqnP "$eps * grad(DevPsi) + Doping - Elec + Hole"
set eqnE "ddt(Elec) - ($Emob) * $Vt * sgrad(Elec, DevPsi/$Vt) "
set eqnE "ddt(Elec) - ($Emob) * $Vt * sgrad(Elec, DevPsi/$Vt) "
set eqnH "ddt(Hole) - ($Hmob) * $Vt * sgrad(Hole, -DevPsi/$Vt) "
set eqnH "ddt(Hole) - ($Hmob) * $Vt * sgrad(Hole, -DevPsi/$Vt) "
#with Recombination-Generation
#with Recombination-Generation
#set eqnE "ddt(Elec) - ($Emob) * $Vt * sgrad(Elec, DevPsi/$Vt) + R_SRH + R_Auger "
#set eqnE "ddt(Elec) - ($Emob) * $Vt * sgrad(Elec, DevPsi/$Vt) + R_SRH + R_Auger "
#set eqnH "ddt(Hole) - ($Hmob) * $Vt * sgrad(Hole, -DevPsi/$Vt)  + R_SRH + R_Auger "
#set eqnH "ddt(Hole) - ($Hmob) * $Vt * sgrad(Hole, -DevPsi/$Vt)  + R_SRH + R_Auger "  


pdbSetDouble Si DevPsi DampValue $Vt
pdbSetDouble Si DevPsi DampValue $Vt
pdbSetDouble Si DevPsi Abs.Error 1.0e-9
pdbSetDouble Si DevPsi Abs.Error 1.0e-9
pdbSetString Si DevPsi Equation $eqnP
pdbSetString Si DevPsi Equation $eqnP
pdbSetString Si Elec Equation $eqnE
pdbSetString Si Elec Equation $eqnE
pdbSetDouble Si Elec Abs.Error 1.0e-1
pdbSetDouble Si Elec Abs.Error 1.0e-1
pdbSetString Si Hole Equation $eqnH
pdbSetString Si Hole Equation $eqnH
pdbSetDouble Si Hole Abs.Error 1.0e-1
pdbSetDouble Si Hole Abs.Error 1.0e-1


InitialGuess Doping
InitialGuess Doping


# Until Mixed-Mode implemented, Schotcky contact must be used to estimate load
# Until Mixed-Mode implemented, Schotcky contact must be used to estimate load
n.sch.contact Si VCC 2e3
n.sch.contact Si VCC 2e3
p.sch.contact Si GND 2e3
p.sch.contact Si GND 2e3
#ohmic.contact VCC
#ohmic.contact VCC
#ohmic.contact GND
#ohmic.contact GND


contact name=VCC voltage supply=0.0
contact name=VCC voltage supply=0.0
contact name=GND voltage supply=0.0
contact name=GND voltage supply=0.0
device
device


set WinA [CreateGraphWindow]
set WinA [CreateGraphWindow]
set bias 0.0
set bias 0.0
for {set bias 0.0} {$bias <= 5.01} {set bias [expr $bias+0.5]} {
for {set bias 0.0} {$bias <= 5.01} {set bias [expr $bias+0.5]} {
contact name=VCC supply = $bias
contact name=VCC supply = $bias  
device
device
puts "Electron Flux [contact name=VCC sol=Elec flux]"
puts "Electron Flux [contact name=VCC sol=Elec flux]"
Line 102: Line 102:
plot.1d y.v=15 z.v=0.0 label=Elec !cle
plot.1d y.v=15 z.v=0.0 label=Elec !cle
sel z=log10(Hole)
sel z=log10(Hole)
plot.1d y.v=15 z.v=0.0 label=Hole !cle
plot.1d y.v=15 z.v=0.0 label=Hole !cle
}
}


#Simple Gaussian to model e-h pairs generated by particle strike
#Simple Gaussian to model e-h pairs generated by particle strike
sel z=2.46e19*exp(-(y-15.0)*(y-15.0)/(0.05^2))*(x<=20.0) name=Dist
sel z=2.46e19*exp(-(y-15.0)*(y-15.0)/(0.05^2))*(x<=20.0) name=Dist
sel z=Elec+Dist+1.0 name=Elec
sel z=Elec+Dist+1.0 name=Elec
sel z=Hole+Dist+1.0 name=Hole
sel z=Hole+Dist+1.0 name=Hole


set Win2 [CreateGraphWindow]
set Win2 [CreateGraphWindow]
device time=1.0e-5 movie = {
device time=1.0e-5 movie = {
     set tim [simGetDouble Device time]
     set tim [simGetDouble Device time]
     set cur [expr abs([contact name=VCC sol=Elec flux] - [contact name=VCC sol=Hole flux])]
     set cur [expr abs([contact name=VCC sol=Elec flux] - [contact name=VCC sol=Hole flux])]
     AddtoLine $Win2 It_tot $tim $cur
     AddtoLine $Win2 It_tot $tim $cur
}
}


}
}


}
}

Revision as of 06:19, 17 November 2010

DevicePackage
#Create Structure
line x loc=0.0 tag=top spa=0.05
line x loc=0.02 spa=0.05 
line x loc=10.0 spa=1.0 
line x loc=30.0 spa=5.0 
line x loc=40.0 tag=bot spa=5.0 
line y loc=0.0 tag=left spa=4
line y loc=15.0 spa=0.02
line y loc=30.0 tag=right spa=4
region silicon xlo=top xhi=bot ylo=left yhi=right
init 
if {1} {
#Define Contacts
contact name=VCC silicon xlo=-1.0 xhi=0.0 ylo=0 yhi=110 depth=1 width=1 add 
contact name=GND silicon xlo=39.0 xhi=110 ylo=0 yhi=110 depth=1 width=1 add 
#Plotting Options
#plot.2d grid 
#plot.2d bound 
#plot.2d contact=VCC !cle
#plot.2d contact=GND !cle
set T 300
set k 1.38066e-23
set q 1.619e-19
set Vt [expr {$k*$T/$q}]
set ni 1.1e10
set esi [expr 11.8 * 8.85418e-14]
set eps [expr $esi / $q]   
#define doping
sel z=1.0e20*(x<=0.2)+1.0e12 name=ND
sel z=1.0e18*(x<=1.0)+1.0e16 name=NA
sel z=ND-NA name=Doping 
#make sure models.v4 is in same directory or else define custom path
source models.v4
#Setup Solution Variables: Elec, Hole, DevPsi
solution name=Potential nosolve
solution add name=DevPsi solve negative damp
solution add name=Elec solve !negative
solution add name=Hole solve !negative
solution add name=Qfn const solve val= "DevPsi + $Vt*log(Hole/$ni)"
solution add name=Qfp const solve val= "DevPsi - $Vt*log(Elec/$ni)"
mobility.radiation 300
RG.SRH
RG.Auger
set T 300
set k 1.38066e-23
set q 1.619e-19
set Vt [expr {$k*$T/$q}]
set ni 1.1e10
set esi [expr 11.8 * 8.85418e-14]
set eps [expr $esi / $q]
set Emob 200.0
set Hmob 100.0 
#Poisson, Continuity Equations
set eqnP "$eps * grad(DevPsi) + Doping - Elec + Hole"
set eqnE "ddt(Elec) - ($Emob) * $Vt * sgrad(Elec, DevPsi/$Vt) "
set eqnH "ddt(Hole) - ($Hmob) * $Vt * sgrad(Hole, -DevPsi/$Vt) "
#with Recombination-Generation
#set eqnE "ddt(Elec) - ($Emob) * $Vt * sgrad(Elec, DevPsi/$Vt) + R_SRH + R_Auger "
#set eqnH "ddt(Hole) - ($Hmob) * $Vt * sgrad(Hole, -DevPsi/$Vt)  + R_SRH + R_Auger " 
pdbSetDouble Si DevPsi DampValue $Vt
pdbSetDouble Si DevPsi Abs.Error 1.0e-9
pdbSetString Si DevPsi Equation $eqnP
pdbSetString Si Elec Equation $eqnE
pdbSetDouble Si Elec Abs.Error 1.0e-1
pdbSetString Si Hole Equation $eqnH
pdbSetDouble Si Hole Abs.Error 1.0e-1
InitialGuess Doping
# Until Mixed-Mode implemented, Schotcky contact must be used to estimate load
n.sch.contact Si VCC 2e3
p.sch.contact Si GND 2e3
#ohmic.contact VCC
#ohmic.contact GND
contact name=VCC voltage supply=0.0
contact name=GND voltage supply=0.0
device
set WinA [CreateGraphWindow]
set bias 0.0
for {set bias 0.0} {$bias <= 5.01} {set bias [expr $bias+0.5]} {
	contact name=VCC supply = $bias 

device puts "Electron Flux [contact name=VCC sol=Elec flux]" puts "Hole Flux [contact name=VCC sol=Hole flux]" set cur [expr [contact name=VCC sol=Hole flux] - [contact name=VCC sol=Elec flux] ] AddtoLine $WinA I_DC $bias $cur sel z=log10(Elec) plot.1d y.v=15 z.v=0.0 label=Elec !cle sel z=log10(Hole)

	plot.1d y.v=15 z.v=0.0 label=Hole !cle
}
#Simple Gaussian to model e-h pairs generated by particle strike
sel z=2.46e19*exp(-(y-15.0)*(y-15.0)/(0.05^2))*(x<=20.0) name=Dist
sel z=Elec+Dist+1.0 name=Elec
sel z=Hole+Dist+1.0 name=Hole
set Win2 [CreateGraphWindow]
device time=1.0e-5 movie = {
   set tim [simGetDouble Device time]
   set cur [expr abs([contact name=VCC sol=Elec flux] - [contact name=VCC sol=Hole flux])]
   AddtoLine $Win2 It_tot $tim $cur
}
}
}