User talk:Maddie: Difference between revisions

From Flooxs
Jump to navigation Jump to search
No edit summary
No edit summary
Line 125: Line 125:
         AddtoLine $plt 1.0IV $time $cur
         AddtoLine $plt 1.0IV $time $cur
     }
     }
puts $cur
    puts $cur





Revision as of 15:45, 5 May 2015

Diode - simple IV

FIRST: Build a one dimensional silicon diode with a constant p-type doping of 1e16 and an n-type Gaussian w/ peak concentration of 1.0e20 and a junction depth of 0.1um.  Think carefully about the grid spacing needed to resolve the problem! Use constant mobility of 1000 for electrons and 200 for holes.  Ignore recombination (for now).  

CODE:

   #establish diffusion parameters and solution variable "diode"
   DevicePackage
   math diffuse dim=1 umf none col !scale
   solution add name=diode solve !negative
   solution name=Potential nosolve
   solution add name=DevPsi solve negative damp
   solution add name=Elec solve !negative
   solution add name=Hole solve !negative
   pdbSetDouble Silicon diode Abs.Error 1.0e-8
   #absolute error range more important for quasi fermi levels
   pdbSetDouble Silicon diode Rel.Error 1.0e-2
   #establish the grid and assign a material
   line x loc=0.0 spac=0.0002 tag=Top
   line x loc=1.0 spac=0.001 tag=Bottom
   region silicon xlo=Top xhi=Bottom
   init
   #Gaussian implant profile
   #fill in the file name for as-implanted profile here
   sel z=1.0e20*exp(-(x)*(x)/(1.086e-3)) name=diode
   #plot the the as-implanted profile
   sel z=log10(abs(diode+1))
   plot.1d label=implant
   #setting the mobility and other variables
   set eps [expr 11.8 * 8.854e-14 / 1.619e-19]
   solution name=qfn add silicon const val= "DevPsi - 0.025*log(Elec/1.0e10)"
   solution name=qfp add silicon const val= "0.025*log(Hole/1.0e10) + DevPsi"
   set Emob "1000.0"; #/ (sqrt(1 + (200*diff(DevPsi)/1.0e7)^2))"
   set Hmob "200.0"; #/ (sqrt(1 + (100*diff(DevPsi)/1.0e7)^2))"
   set T 300.0
   set k 1.38066e-23
   set q 1.619e-19
   set ni "1e10"
   set Na "1.0e16"
   set Nd "10"
   set Vt "[expr {$k*$T/$q}]"
   set ni "1.1e10"
   #continuity equations
   set eqnP "$eps*grad(DevPsi)+Doping-Elec+Hole"
   set eqnE "ddt(Elec)-$Emob*0.025*sgrad(Elec, DevPsi/0.025)"
   set eqnH "ddt(Hole)-$Hmob*0.025*sgrad(Hole, -DevPsi/0.025)"
   pdbSetDouble Si DevPsi DampValue 0.025
   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-5
   pdbSetString Si Hole Equation $eqnH
   pdbSetDouble Si Hole Abs.Error 1.0e-5
   pdbSetDouble top Hole Abs.Error 1.0e-8
   pdbSetDouble top Elec Abs.Error 1.0e-8
   pdbSetDouble top DevPsi Abs.Error 1.0e-6
   pdbSetDouble top Hole Rel.Error 1.0e-2
   pdbSetDouble top Elec Rel.Error 1.0e-2
   pdbSetDouble top DevPsi Rel.Error 1.0e-2
   pdbSetDouble ReflectBottom Hole Abs.Error 1.0e-8
   pdbSetDouble ReflectBottom Elec Abs.Error 1.0e-8
   pdbSetDouble ReflectBottom DevPsi Abs.Error 1.0e-6
   pdbSetDouble ReflectBottom Hole Rel.Error 1.0e-2
   pdbSetDouble ReflectBottom Elec Rel.Error 1.0e-2
   pdbSetDouble ReflectBottom DevPsi Rel.Error 1.0e-2
   pdbSetBoolean top Elec Fixed 1
   pdbSetBoolean top Hole Fixed 1
   pdbSetBoolean top DevPsi Fixed 1
   pdbSetBoolean top Elec Flux 1
   pdbSetBoolean top Hole Flux 1
   pdbSetBoolean top DevPsi Flux 1
   pdbSetString top Elec Equation {Doping - Elec + Hole}
   pdbSetString top Hole Equation {DevPsi + 0.025*log((Hole+1.0e-10)/1.0e10) - top}
   pdbSetString top DevPsi Equation {DevPsi - 0.025*log((Elec+1.0e-10)/1.0e10) - top}
   pdbSetDouble top Elec Flux.Scale 1.619e-19
   pdbSetDouble top Hole Flux.Scale 1.619e-19
   pdbSetBoolean ReflectBottom Elec Fixed 1
   pdbSetBoolean ReflectBottom Hole Fixed 1
   pdbSetBoolean ReflectBottom DevPsi Fixed 1
   pdbSetBoolean ReflectBottom Elec Flux 1
   pdbSetBoolean ReflectBottom Hole Flux 1
   pdbSetBoolean ReflectBottom DevPsi Flux 1
   pdbSetString ReflectBottom Hole Equation "Doping-Elec+Hole"
   pdbSetString ReflectBottom Elec Equation "DevPsi-0.025*log((Elec+1.0e-10)/1.0e10)"
   pdbSetString ReflectBottom DevPsi Equation "DevPsi+0.025*log((Hole+1.0e-10)/1.0e10)"
   pdbSetDouble ReflectBottom Elec Flux.Scale 1.619e-19
   pdbSetDouble ReflectBottom Hole Flux.Scale 1.619e-19
   line x loc=0.0 spac=.01 tag=Top
   line x loc=0.4 spac=0.001
   line x loc=0.7 spac=0.001
   line x loc=2.0 spac=0.01 tag=Bottom
   region silicon xlo=Top xhi=Bottom
   init
   contact name=top silicon xlo=-0.1 xhi=0.1 add
   contact name=top voltage supply=0.0
   #contact name=GND Silicon xlo=0.9  xhi=1.1 add
   sel z=1.0e21*(x<0.5)-1.0e17 name=Doping
   sel z=0.5*(Doping+sqrt(Doping*Doping+4.0e20))/1.0e10 name=arg
   sel z=0.025*log(arg) name=DevPsi
   sel z=1.0e10*exp(DevPsi/0.025) name=Elec
   sel z=1.0e10*exp(-DevPsi/0.025) name=Hole
   device init; #saves old physics unless you have init
   set plt [CreateGraphWindow]
   contact name=top voltage supply = 1.0
   device time=0.5e-10 movie = {
       set time [simGetDouble Device time]
       set cur [expr ([contact name=top sol=Elec flux] - [contact name=top sol=Hole flux])]
       puts "$time $cur"
       AddtoLine $plt 1.0IV $time $cur
   }
   puts $cur



SECOND: Implement a simple version of the three device equations and plot current v. voltage.  Cut the grid spacing in half, and rerun the current / voltage plot.  Does the current change appreciably?  What does that say about the choice of grid? Add a simple SRH recombination with carrier lifetimes of 1 nanosecond.  Use 1.0e10 for the intrinsic carrier concentration.  How does the reverse bias current change?