Schottky Contact: Difference between revisions

From Flooxs
Jump to navigation Jump to search
(New page: == Model == pdbSetDouble Silicon Egcond 0.55 pdbSetDouble Silicon Egval -0.55 pdbSetDouble Silicon Ncond 2.51e19 pdbSetDouble Silicon Nval 2.51e19 proc n.schottky.contact {Contact ...)
 
 
(One intermediate revision by the same user not shown)
Line 20: Line 20:
     set Econd "[pdbDelayDouble $Mat Egcond] - DevPsi"
     set Econd "[pdbDelayDouble $Mat Egcond] - DevPsi"
     set Nc "[pdbDelayDouble $Mat Ncond]"
     set Nc "[pdbDelayDouble $Mat Ncond]"
     set eqn "$Econd + 0.025 * log( (ND+1.0e-15) / $Nc) - $Contact"
     set eqn "$Econd + 0.025 * log( (ND+1.0e-15) / $Nc) + $Contact"
     pdbSetString $Contact DevPsi Equation $eqn  
     pdbSetString $Contact DevPsi Equation $eqn  
   
   
Line 41: Line 41:
     set Eval "-[pdbDelayDouble $Mat Egval] + DevPsi"
     set Eval "-[pdbDelayDouble $Mat Egval] + DevPsi"
     set Nv "[pdbDelayDouble $Mat Nval]"
     set Nv "[pdbDelayDouble $Mat Nval]"
     set eqn "$Eval + 0.025 * log( (NA+1.0e-15) / $Nv) - $Contact"
     set eqn "$Eval + 0.025 * log( (NA+1.0e-15) / $Nv) + $Contact"
     pdbSetString $Contact DevPsi Equation $eqn
     pdbSetString $Contact DevPsi Equation $eqn
   
   
Line 48: Line 48:


== Notes ==
== Notes ==
Minor bug: The definitions are currently defined causing the opposite bias to give the correct result.
 
Doping in term of ND and NA must be defined. In other words, you need a sel z=value name=ND, sel z=value name=NA, sel z=ND-NA name=Doping.

Latest revision as of 16:04, 10 December 2008

Model

pdbSetDouble Silicon Egcond 0.55
pdbSetDouble Silicon Egval -0.55
pdbSetDouble Silicon Ncond 2.51e19
pdbSetDouble Silicon Nval 2.51e19

proc n.schottky.contact {Contact Rvel} {
    pdbSetBoolean $Contact Elec Fixed 0
    pdbSetBoolean $Contact Hole Fixed 0
    pdbSetBoolean $Contact DevPsi Fixed 1
    pdbSetBoolean $Contact Elec Flux 1
    pdbSetBoolean $Contact Hole Flux 1
    pdbSetBoolean $Contact DevPsi Flux 1
    pdbSetDouble $Contact Hole Flux.Scale 1.619e-19
    pdbSetDouble $Contact Elec Flux.Scale 1.619e-19
    
    pdbSetString $Contact Elec Equation "$Rvel*(Elec-ND)"
    
    set Econd "[pdbDelayDouble $Mat Egcond] - DevPsi"
    set Nc "[pdbDelayDouble $Mat Ncond]"
    set eqn "$Econd + 0.025 * log( (ND+1.0e-15) / $Nc) + $Contact"
    pdbSetString $Contact DevPsi Equation $eqn 

    pdbSetString $Contact Hole Equation "$Rvel*(Hole - 1.0e20/ND)"
}

proc p.schottky.contact {Contact Rvel} {
    pdbSetBoolean $Contact Elec Fixed 0
    pdbSetBoolean $Contact Hole Fixed 0
    pdbSetBoolean $Contact DevPsi Fixed 1
    pdbSetBoolean $Contact Elec Flux 1
    pdbSetBoolean $Contact Hole Flux 1
    pdbSetBoolean $Contact DevPsi Flux 1
    pdbSetDouble $Contact Hole Flux.Scale 1.619e-19
    pdbSetDouble $Contact Elec Flux.Scale 1.619e-19
   
    #charge neutrality for the dominant carrier w/ Recombination velocity
    pdbSetString $Contact Hole Equation "$Rvel*(Hole-NA)"
   
    set Eval "-[pdbDelayDouble $Mat Egval] + DevPsi"
    set Nv "[pdbDelayDouble $Mat Nval]"
    set eqn "$Eval + 0.025 * log( (NA+1.0e-15) / $Nv) + $Contact"
    pdbSetString $Contact DevPsi Equation $eqn

    pdbSetString $Contact Elec Equation "$Rvel*(Elec - 1.0e20/NA)"
}

Notes

Doping in term of ND and NA must be defined. In other words, you need a sel z=value name=ND, sel z=value name=NA, sel z=ND-NA name=Doping.