Summary of III-V Photodiode Modelling Results



Summary of III-V Photodiode Modelling ResultsA primer for whoever continues onPrepared for Professor Tom SmyAuthored by: Ryan GriffinCarleton UniversitySeptember 2015Contents TOC \o "1-3" \h \z \u Summary of III-V Photodiode Modelling Results PAGEREF _Toc432078941 \h 2Model Details PAGEREF _Toc432078942 \h 2The stoichiometry of layer 3 is supposed to be such that the bandgap varies linearly. As the x and y mole fraction gradings were not provided they have been assumed to vary linearly. PAGEREF _Toc432078943 \h 3Simulation Workspace PAGEREF _Toc432078944 \h 3Simulation Results PAGEREF _Toc432078945 \h 4Analytical Model PAGEREF _Toc432078946 \h 5Appendix A – Sentaurus Structure Editor Input File PAGEREF _Toc432078947 \h 7Appendix B – Sentaurus Device Input File PAGEREF _Toc432078948 \h 14Appendix C – Sentaurus Visual Input File PAGEREF _Toc432078949 \h 17Summary of III-V Photodiode Modelling ResultsModel DetailsSentaurus Structure Editor (SDE) was used to model a III-V InP/InGaAs/AlInGaAs photodiode. The structure was a representation of the work by Valery Tolstikhin, but is not a perfect match to the structure he proposed. Table 1 contains the layer structure as designed by Valery, as well as the details of the structure used in simulation. Table 1: Designed and Simulated III-V Photodiode Model#Layer DescriptionMaterialDoping[cm-3]Valery Thickness[nm]Simulated Thickness[nm]Extra Details13Metal ContactAu2012P-Contact 2Ga(0.47)In(0.53)As2E195050P-type dopant used is Zinc11P-Contact 1InP2E1850050010P-Contact EBLAl(0.48)In(0.52)As2E1850509P-GRA Grading FinishGa(0.47)In(0.53)As1E19018P-GRA GradingGa(0.47)In(0.53)AsZn exponentially graded5004987P-GRA Grading StartGa(0.47)In(0.53)As2E17016P-URAGa(0.47)In(0.53)As2E171001005I-URAGa(0.47)In(0.53)As1E154004004N-Contact Grading FinishAl(0.02)Ga(0.5)In(0.48)As1E1501N-type dopant used is Tellurium3N-Contact GradingAl(x)Ga(y)In(1-x-y)As1E151513x & y vary linearly from start to stop values2N-Contact Grading StartAl(0.22)Ga(0.25)In(0.53)As1E15011N-ContactInP5E185005000(v)S.I. SubstrateInP0(sim)Metal ContactAu20Additionally, Sentaurus does not appear to include the optical attenuation coefficient for III-V materials, hence it was manually set to be k=0.15 in GaInAs layers only. This was specified in the InGaAs.par file in the ModelParameters directory. Note that k=αλ4π where α is the attenuation coefficient provided in Valery’s documentation.Then Zn grading follows REF _Ref431907755 \h Equation 1 as per Valery’s documentation where dg is the thickness of the graded region, and the subscripts “0” and “1” refer to z = zg (bottom of the graded absorber) and z = 0 (top of the graded absorber), respectively. NAz=NA0explnNA1NA0dg-zdgEquation 1The stoichiometry of layer 3 is supposed to be such that the bandgap varies linearly. As the x and y mole fraction gradings were not provided they have been assumed to vary linearly.Note that a Sentaurus Structure Editor input file can be found in Appendix A.Simulation WorkspaceA simulation workspace was set up in Sentaurus Workbench that would generate the model, ramp up the reverse bias voltage to a set parameter in absence of any optical input, and simulate Gaussian optical pulses with a set intensity and standard deviation. Sentaurus Visual was then used to automatically export the results of the simulation in a format which Matlab could import. For a student continuing the work, Figure 1 demonstrates how the workbench was set up. Appendix C contains the Sentaurus Visual input file used.Figure 1: Sentaurus Workbench ProjectSimulation ResultsNote that the some models are not available for all material types. Details of this can be seen in Appendix B which includes the parameterized Sentaurus Device input file used in these simulations.Table 2: Material Models Enabled in Device SimulationMaterialModels Enabled in SimulationGaInAsPhysics( Material="InGaAs"){ MoleFraction( xFraction= 0.47 Grading= 0) Mobility( Dopingdependence ) Recombination( Radiative SRH Auger ) }AlGaInAsPhysics( Material="AlInGaAs"){ Mobility( Dopingdependence ) Recombination( Radiative ) }InPPhysics( Material="InP"){ Mobility( Dopingdependence ) Recombination( Radiative SRH Auger ) }There are also quite a few methods available for performing optical simulations. These are detailed in the Sentaurus Device manual, but are not described as much as I would have liked. I’m using the OpticalBeam method, but only because it was the first one that I got working satisfactorily.Simulations were carried out with various pulse shapes, but for ease of extracting the impulse response Gaussian optical pulse profiles were used. The amplitude and standard deviation of the Gaussian pulses were parameters in the workbench. An optical input at 1300 nm was used for comparison to older papers.The workbench automatically exports the data for analysis in Matlab. Figure 2 below was generated using the DataAnalysisCompare.m script file in the ExportedData folder in the Sentaurus project. Three datasets are imported, analyzed, and compared. The data set names describe the reverse bias voltage, standard deviation, and optical power of the input optical pulse. Current values are scaled using the “area” command in the Sentaurus device input file, as was done by Synopsys support agent. I was less concerned with absolute values, and more observing the shape of the photodiode response.Also note that a 10 Ω/?m series resistance was added at the top contact interface.Figure 2: Sample Simulation DataAnalytical ModelCampbell’s 1985 paper in IEEE J. Quantum Electronics titled Frequency Response of InPInGaAsP/InGaAs Photodiodes with Separate Absoprtion “Grading” and Multiplication Regions, was used to provide a simple analytical frequency domain model for comparison purposes. Here they provided a frequency dependence of the photodiodes gain given byM(ω)Mo=sincωW2v?11+(ωRC)2?11+(ω/eh)2?11+(ωτmMo)2Where:Mo is the DC gainW is the depletion region widthω is the radian frequencyv is the saturated carrier drift velocityR is the series resistanceC is the capacitanceτm is the effective transit time through the multiplication regioneh is the emission rate for holes trapped at the heterojunction interfaceNote that “sinc” is not a typoCampbell was able to achieve a reasonable fit to the performance of their device using the parameters in Table 2. However, we are not dealing with an avalanche photodiode, and the device simulated here is much thinner than Cambell’s device which was on the order of 15 ?m thick. Additionally, the junction capacitance of the simulated photodiode will likely be nowhere near Campbell’s device. Note that Valery’s design has a diode with a diameter of 20 ?m, while in the simulations here a device 1 ?m across was simulated to minimize meshing needs and computational effort.ParameterCampbellParameters which produce a bandwidth similar to that was simulated hereMo11W3.3 ?m0.05 ?mωVariesVariesv6 × 105 m/s2.5 × 106 m/sR450 Ω10C0.15 pF0.05 pFτm9 ps0.9 pseh1/15 ps1/0.15 psAs it stands, these parameters have little significance. They are simply a result of playing with the numbers to give a very coarse match to the frequency response between the model and simulated output. The fastest carrier velocity I’ve seen in the literature was used, the transit time component was kept, but now refers to the transit time through the thick InP layers (which again, are much thinner than Cambell’s device), and the hole emission rate was increased by two orders of magnitude. I have not yet investigated what a reasonable emission rate would be.Appendix A – Sentaurus Structure Editor Input File; -----------------------------------------; Initialize environment; -----------------------------------------(sde:clear)(set! process-up-direction "+z")(sde:set-menubar-font-size 15)(sdegeo:set-auto-region-naming OFF) ; -----------------------------------------; Define parameters; -----------------------------------------; Layer thicknesses (define tAuTopContact 0.02) ;Layer 0 (define tnInP 0.5) ;Layer 1 (define tnAlGaInAsStart 0.001) ;Layer 2 (define tnAlGaInAsGrade 0.0013) ;Layer 3 (define tnAlGaInAsEnd 0.001) ;Layer 4 (define tiInGaAs 0.4) ;Layer 5 (define tpInGaAs 0.1) ;Layer 6 (define tpInGaAsStart 0.001) ;Layer 7 (define tpInGaAsGrade 0.498) ;Layer 8 *Doping graded (define tpInGaAsEnd 0.001) ;Layer 9 (define tpAlGaInAsEBL 0.05) ;Layer 10 (define tpInP 0.5) ;Layer 11 (define tpInGaAsTop 0.05) ;Layer 12 (define tAuBottomContact 0.02) ;Layer 13; Layer doping levels (define nInPDoping 5E18) ;Layer 1 (define nAlGaInAsDoping 1E15) ;Layer 2,3,4 (define iInGaAsDoping 0) ;Layer 5, spreadsheet has 1E15 (posibly indicating intrinsic value) (define pInGaAsDoping 2E17) ;Layer 6 (define pInGaAsDopingStart pInGaAsDoping) ;Layer 7,8,9 (define pInGaAsDopingEnd 1E19) ;Layer 7,8,9 (define pAlInGaAsEBLDoping 2E18) ;Layer 10 (define pInPDoping 2E18) ;Layer 11 (define pInGaAsTopDoping 2E19) ;Layer 12 ; Tertiary mole fractions for [Ga(x) In(1-x)][As]; Quaternary mole fractions for [Al(x) In(y) ][Ga(1-x-y)][As]; Mole dependent material: Al(x)In(y)Ga(1-x-y)As (x=0,y=0) = GaAs; Mole dependent material: Al(x)In(y)Ga(1-x-y)As (x=1,y=0) = AlAs; Mole dependent material: Al(x)In(y)Ga(1-x-y)As (x=0,y=1) = InAs ; Constand mole fraction in pInGaAs layers 5, 6, 7, 8, 9, 12 (define xMoleInGaAs 0.47) ; Layer 10 EBL mole fractions (define xMoleAlInGaAsEBL 0.48) (define yMoleAlInGaAsEBL 0.52) ; Mole fraction in nAlInGaAs layer 4 (define xMoleAlInGaAs 0.02) (define yMoleAlInGaAs 0.48) ; Mole fraction at the begining and end of the nAlInGaAs graded layer 3 (define xMoleAlInGaAsEnd xMoleAlInGaAs) (define yMoleAlInGaAsEnd yMoleAlInGaAs) ; Mole fraction in nAlInGaAs layer 2 (define xMoleAlInGaAsStart 0.22) (define yMoleAlInGaAsStart 0.53) ; -----------------------------------------; Define simulation region; -----------------------------------------; Only bothering with single slayer stack. (define Ytop 0.0) ;Structure top (define Y0_AuTopContact Ytop) ;Layer 13 (define Y0_pInGaAsTop (+ Y0_AuTopContact tAuTopContact)) ;Layer 12 (define Y0_pInP (+ Y0_pInGaAsTop tpInGaAsTop)) ;Layer 11 (define Y0_pAlGaInAsEBL (+ Y0_pInP tpInP)) ;Layer 10 (define Y0_pInGaAsEnd (+ Y0_pAlGaInAsEBL tpAlGaInAsEBL)) ;Layer 9 (define Y0_pInGaAsGrade (+ Y0_pInGaAsEnd tpInGaAsEnd )) ;Layer 8 (define Y0_pInGaAsStart (+ Y0_pInGaAsGrade tpInGaAsGrade)) ;Layer 7 (define Y0_pInGaAs (+ Y0_pInGaAsStart tpInGaAsStart)) ;Layer 6 (define Y0_iInGaAs (+ Y0_pInGaAs tpInGaAs)) ;Layer 5 (define Y0_nAlGaInAsEnd (+ Y0_iInGaAs tiInGaAs)) ;Layer 4 (define Y0_nAlGaInAsGrade (+ Y0_nAlGaInAsEnd tnAlGaInAsEnd)) ;Layer 3 (define Y0_nAlGaInAsStart (+ Y0_nAlGaInAsGrade tnAlGaInAsGrade)) ;Layer 2 (define Y0_nInP (+ Y0_nAlGaInAsStart tnAlGaInAsStart)) ;Layer 1 (define Y0_AuBottomContact (+ Y0_nInP tnInP)) ;Layer 0 (define Ybottom (+ Y0_AuBottomContact tAuBottomContact)) ;Structure bottom (define Xmin -0.5) (define Xmax 0.5) ;---------------------------------------------------------------------------; Build epi structure;--------------------------------------------------------------------------- ; Layer 13 - Creating the top Au contact (sdegeo:create-rectangle (position Xmin Y0_AuTopContact 0.0 ) (position Xmax Y0_pInGaAsTop 0.0 ) "Gold" "L13-AuTopContact-p" ) ; Layer 12 - Creating the p-type InGaAs layer (sdegeo:create-rectangle (position Xmin Y0_pInGaAsTop 0.0 ) (position Xmax Y0_pInP 0.0 ) "InGaAs" "L12-pInGaAsTop" ) ; Layer 11 - Creating the p-type InP layer (sdegeo:create-rectangle (position Xmin Y0_pInP 0.0 ) (position Xmax Y0_pAlGaInAsEBL 0.0 ) "InP" "L11-pInP" ) ; Layer 10 - Creating the p-type AlInGaAs EBL layer (sdegeo:create-rectangle (position Xmin Y0_pAlGaInAsEBL 0.0 ) (position Xmax Y0_pInGaAsEnd 0.0 ) "AlInGaAs" "L10-pAlInGaAsEBL" ) ; Layer 9 - Creating the p-type InGaAs layer end (sdegeo:create-rectangle (position Xmin Y0_pInGaAsEnd 0.0 ) (position Xmax Y0_pInGaAsGrade 0.0 ) "InGaAs" "L9-pInGaAsEnd" ) ; Layer 8 - Creating the p-type InGaAs layer grading (sdegeo:create-rectangle (position Xmin Y0_pInGaAsGrade 0.0 ) (position Xmax Y0_pInGaAsStart 0.0 ) "InGaAs" "L8-pInGaAsGrade" ) ; Layer 7 - Creating the p-type InGaAs layer start (sdegeo:create-rectangle (position Xmin Y0_pInGaAsStart 0.0 ) (position Xmax Y0_pInGaAs 0.0 ) "InGaAs" "L7-pInGaAsStart" ) ; Layer 6 - Creating the p-type InGaAs layer (sdegeo:create-rectangle (position Xmin Y0_pInGaAs 0.0 ) (position Xmax Y0_iInGaAs 0.0 ) "InGaAs" "L6-pInGaAs" ) ; Layer 5 - Creating the i-type InGaAs layer (sdegeo:create-rectangle (position Xmin Y0_iInGaAs 0.0 ) (position Xmax Y0_nAlGaInAsEnd 0.0 ) "InGaAs" "L5-iInGaAs" ) ; Layer 4 - Creating the n-type AlInGaAs layer end (sdegeo:create-rectangle (position Xmin Y0_nAlGaInAsEnd 0.0 ) (position Xmax Y0_nAlGaInAsGrade 0.0 ) "AlInGaAs" "L4-nAlInGaAsEnd" ) ; Layer 3 - Creating the n-type AlInGaAs layer grading (sdegeo:create-rectangle (position Xmin Y0_nAlGaInAsGrade 0.0 ) (position Xmax Y0_nAlGaInAsStart 0.0 ) "AlInGaAs" "L3-nAlInGaAsGrade" ) ; Layer 2 - Creating the n-type AlInGaAs layer start (sdegeo:create-rectangle (position Xmin Y0_nAlGaInAsStart 0.0 ) (position Xmax Y0_nInP 0.0 ) "AlInGaAs" "L2-nAlInGaAsStart" ) ; Layer 1 - Creating the n-type InP layer (sdegeo:create-rectangle (position Xmin Y0_nInP 0.0 ) (position Xmax Y0_AuBottomContact 0.0 ) "InP" "L1-nInP" ) ; Layer 0 - Creating the bottom Au contact (sdegeo:create-rectangle (position Xmin Y0_AuBottomContact 0.0 ) (position Xmax Ybottom 0.0 ) "Gold" "L0-AuBottomContact-n" ) ;---------------------------------------------------------------------------; Define epi structure refinements, mole fractions, and doping;--------------------------------------------------------------------------- ; Global reference window (sdedr:define-refeval-window "RefWinAll" "Rectangle" (position Xmin Ytop 0) (position Xmax Ybottom 0)) (sdedr:define-refinement-placement "PlaceRF.all" "RefDef.all" "RefWinAll" ) (sdedr:define-refinement-size "RefDef.all" 1.00 0.01 0.5 0.005 ) ; Layer 13 - Top contact refinement ;(sdedr:define-refinement-size "RefDef.AuTop_contact" 99 0.0125 66 0.01 ) ;(sdedr:define-refinement-region "RefDef.AuTop_contact" "RefDef.AuTop_contact" "RefAuTop") ; Layer 12 - pInGaAsTop doping, mole fractions, and refinement (sdedr:define-constant-profile "pInGaAsTop_const" "ZincActiveConcentration" pInGaAsTopDoping) (sdedr:define-constant-profile-region "Place_pInGaAsTop_const" "pInGaAsTop_const" "L12-pInGaAsTop") (sdedr:define-constant-profile "xmole_pInGaAs_const" "xMoleFraction" xMoleInGaAs) (sdedr:define-constant-profile-region "Place_xmole_pInGaAsTop_const" "xmole_pInGaAs_const" "L12-pInGaAsTop") ; Layer 11 - pInP contact doping and refinement (sdedr:define-constant-profile "pInP_const" "ZincActiveConcentration" pInPDoping) (sdedr:define-constant-profile-region "Place_pInP_const" "pInP_const" "L11-pInP") ; Layer 10 - AlInGaAs EBL doping and refinement (sdedr:define-constant-profile "pAlInGaAs_const" "ZincActiveConcentration" pAlInGaAsEBLDoping) (sdedr:define-constant-profile-region "Place_pAlInGaAs_const" "pAlInGaAs_const" "L10-pAlInGaAsEBL") (sdedr:define-constant-profile "xmole_pAlInGaAs_const" "xMoleFraction" xMoleAlInGaAsEBL) (sdedr:define-constant-profile-region "Place_xmole_pAlInGaAs_const" "xmole_pAlInGaAs_const" "L10-pAlInGaAsEBL") (sdedr:define-constant-profile "ymole_pAlInGaAs_const" "yMoleFraction" yMoleAlInGaAsEBL) (sdedr:define-constant-profile-region "Place_ymole_pAlInGaAs_const" "ymole_pAlInGaAs_const" "L10-pAlInGaAsEBL") ; Layer 9 - pInGaAsEnd doping, mole fractions, and refinement (sdedr:define-constant-profile "pInGaAsEnd_const" "ZincActiveConcentration" pInGaAsDopingEnd) (sdedr:define-constant-profile-region "Place_pInGaAsEnd_const" "pInGaAsEnd_const" "L9-pInGaAsEnd") ; (sdedr:define-constant-profile "xmole_pInGaAs_const" "xMoleFraction" xMoleInGaAs) ; Defined in layer 12 (sdedr:define-constant-profile-region "Place_xmole_pInGaAsEnd_const" "xmole_pInGaAs_const" "L9-pInGaAsEnd") ;;;;;;;;;;;;;;;;;;; ; Layer 8 - pInGaAsEnd doping, mole fractions, and refinement, profile given on p23 of UTC slides ;(define delDoping (- pInGaAsDopingEnd pInGaAsDopingStart)) ;(define slope (/ delDoping tpInGaAsGrade)) ;(define StringSlopeLinear (string-append "a=" (number->string slope))) ;(define StringFunctionLinear (string-append (number->string pInGaAsDopingEnd) "-a*x")) ;(sdedr:define-refinement-window "RefWin_pInGaAsGrade" "Line" (position Xmin Y0_pInGaAsGrade 0.0) (position Xmax Y0_pInGaAsGrade 0.0)) ;(sdedr:define-analytical-profile "pInGaAsGrading" "ZincActiveConcentration" StringSlopeLinear StringFunctionLinear 2e+17 "Eval" "Eval" 0 0) ;(sdedr:define-analytical-profile-placement "Place_pInGaAsGrade_AP" "pInGaAsGrading" "RefWin_pInGaAsGrade" "Positive" "NoReplace" "Eval" "L8-pInGaAsGrade" 0 "region") ; Doping from top down is 1E19 cm^-3 to 2E17 cm^-3 ; Na(z) = Nao exp( ln(Na1/Nao)*(1 - z/dg) ) (define Nao pInGaAsDopingStart) (define Na1 pInGaAsDopingEnd) (define N (/ Na1 Nao)) (define dg tpInGaAsGrade) (define StringFunctionExp1 (string-append (number->string dg) "-x)") ) ; dg-x) (define StringFunctionExp2 (string-append StringFunctionExp1 "/") ) ; dg-x)/ (define StringFunctionExp3 (string-append StringFunctionExp2 (number->string dg)) ) ; dg-x)/dg (define StringFunctionExp4 (string-append "*((" StringFunctionExp3) ) ; *((dg-x)/dg (define StringFunctionExp5 (string-append StringFunctionExp4 ")") ) ; Final result *((dg-x)/dg) (define StringFunctionExp6 (string-append "(log(" (number->string N)) ) ; (log(N (define StringFunctionExp7 (string-append StringFunctionExp6 ")") ) ; (log(N) (define StringFunctionExp8 (string-append StringFunctionExp7 StringFunctionExp5) ) ;(log(N)*((dg-x)/dg) (define StringFunctionExp9 (string-append StringFunctionExp8 ")") ) ; Final result (ln(N)*((dg-x)/dg)) (define StringFunctionExp10 (string-append "*exp" StringFunctionExp8) ) ; *exp(ln(N)*((dg-x)/dg)) (define StringFunctionExp (string-append (number->string Nao) StringFunctionExp10) ) ; Final result Nao*exp(ln(N)*(dg-x)/dg)) (define StringInitializeExp "") (sdedr:define-refinement-window "RefWin_pInGaAsGrade" "Line" (position Xmin Y0_pInGaAsGrade 0.0) (position Xmax Y0_pInGaAsGrade 0.0)) (sdedr:define-analytical-profile "pInGaAsGrading" "ZincActiveConcentration" StringInitializeExp StringFunctionExp 2e+17 "Eval" "Gauss" "Factor" 0) (sdedr:define-analytical-profile-placement "Place_pInGaAsGrade_AP" "pInGaAsGrading" "RefWin_pInGaAsGrade" "Positive" "NoReplace" "Eval" "L8-pInGaAsGrade" 0 "region") ; (sdedr:define-constant-profile "xmole_pInGaAs_const" "xMoleFraction" xMoleInGaAs) ; Defined in layer 12 (sdedr:define-constant-profile-region "Place_xmole_pInGaAsGrade_const" "xmole_pInGaAs_const" "L8-pInGaAsGrade") ;;;;;;;;;;;;;;;;;;; ; Layer 7 - pInGaAsStart doping, mole fractions, and refinement (sdedr:define-constant-profile "pInGaAsStart_const" "ZincActiveConcentration" pInGaAsDopingStart) (sdedr:define-constant-profile-region "Place_pInGaAsStart_const" "pInGaAsStart_const" "L7-pInGaAsStart") ; (sdedr:define-constant-profile "xmole_pInGaAs_const" "xMoleFraction" xMoleInGaAs) ; Defined in layer 12 (sdedr:define-constant-profile-region "Place_xmole_pInGaAsStart_const" "xmole_pInGaAs_const" "L7-pInGaAsStart") ; Layer 6 - pInGaAs doping, mole fractions, and refinement (sdedr:define-constant-profile "pInGaAs_const" "ZincActiveConcentration" pInGaAsDoping) (sdedr:define-constant-profile-region "Place_pInGaAs_const" "pInGaAs_const" "L6-pInGaAs") ; (sdedr:define-constant-profile "xmole_pInGaAs_const" "xMoleFraction" xMoleInGaAs) ; Defined in layer 12 (sdedr:define-constant-profile-region "Place_xmole_pInGaAs_const" "xmole_pInGaAs_const" "L6-pInGaAs") ; Layer 5 - iInGaAsStart doping, mole fractions, and refinement (sdedr:define-constant-profile "iInGaAs_const" "ZincActiveConcentration" iInGaAsDoping) (sdedr:define-constant-profile-region "Place_iInGaAs_const" "iInGaAs_const" "L5-iInGaAs") (sdedr:define-constant-profile "xmole_iInGaAs_const" "xMoleFraction" xMoleInGaAs) ; Defined in layer 12 (sdedr:define-constant-profile-region "Place_xmole_iInGaAs_const" "xmole_pInGaAs_const" "L5-iInGaAs") ; Layer 4 - nAlGaInAsEnd doping, mole fractions, and refinement (sdedr:define-constant-profile "nAlGaInAsEnd_const" "TelluriumActiveConcentration" nAlGaInAsDoping) (sdedr:define-constant-profile-region "Place_nAlGaInAsEnd_const" "nAlGaInAsEnd_const" "L4-nAlInGaAsEnd") (sdedr:define-constant-profile "xmole_nAlGaInAsEnd_const" "xMoleFraction" xMoleAlInGaAsEnd) (sdedr:define-constant-profile-region "Place_xmole_nAlGaInAsEnd_const" "xmole_nAlGaInAsEnd_const" "L4-nAlInGaAsEnd") (sdedr:define-constant-profile "ymole_nAlGaInAsEnd_const" "yMoleFraction" yMoleAlInGaAsEnd) (sdedr:define-constant-profile-region "Place_ymole_nAlGaInAsEnd_const" "ymole_nAlGaInAsEnd_const" "L4-nAlInGaAsEnd") ;;;;;;;;;;;; ; Layer 3 - nAlGaInAsGrade doping, mole fractions, and refinement (sdedr:define-constant-profile "nAlGaInAsGrade_const" "TelluriumActiveConcentration" nAlGaInAsDoping) (sdedr:define-constant-profile-region "Place_nAlGaInAsGrade_const" "nAlGaInAsGrade_const" "L3-nAlInGaAsGrade") ; Calculate mole fraction slopes here... (define delxMole (- xMoleAlInGaAsEnd xMoleAlInGaAsStart)) (define xMoleSlope (/ delxMole tnAlGaInAsGrade)) (define delyMole (- yMoleAlInGaAsEnd yMoleAlInGaAsStart)) (define yMoleSlope (/ delyMole tnAlGaInAsGrade)) (define StringSlopexMole (string-append "b=" (number->string xMoleSlope))) (define StringSlopeyMole (string-append "c=" (number->string yMoleSlope))) (define StringFunctionxMole (string-append (number->string xMoleAlInGaAsEnd) "-b*x")) (define StringFunctionyMole (string-append (number->string yMoleAlInGaAsEnd) "-c*x")) (sdedr:define-refinement-window "RefWin_nAlInGaAsGrade" "Line" (position Xmin Y0_nAlGaInAsGrade 0.0) (position Xmax Y0_nAlGaInAsGrade 0.0)) (sdedr:define-analytical-profile "nAlInGaAsMoleGradingMolex" "xMoleFraction" StringSlopexMole StringFunctionxMole 0.00 "Eval" "Gauss" "Factor" 0) (sdedr:define-analytical-profile "nAlInGaAsMoleGradingMoley" "yMoleFraction" StringSlopeyMole StringFunctionyMole 0.00 "Eval" "Gauss" "Factor" 0) (sdedr:define-analytical-profile-placement "Place_xmole_nAlInGaAsGrade_AP" "nAlInGaAsMoleGradingMolex" "RefWin_nAlInGaAsGrade" "Positive" "NoReplace" "Eval" "L3-nAlInGaAsGrade" 0 "region") (sdedr:define-analytical-profile-placement "Place_ymole_nAlInGaAsGrade_AP" "nAlInGaAsMoleGradingMoley" "RefWin_nAlInGaAsGrade" "Positive" "NoReplace" "Eval" "L3-nAlInGaAsGrade" 0 "region") ;;;;;;;;;;;;;;;; ; Layer 2 - nAlGaInAsStart doping, mole fractions, and refinement (sdedr:define-constant-profile "nAlGaInAsStart_const" "TelluriumActiveConcentration" nAlGaInAsDoping) (sdedr:define-constant-profile-region "Place_nAlGaInAsStart_const" "nAlGaInAsStart_const" "L2-nAlInGaAsStart") (sdedr:define-constant-profile "xmole_nAlGaInAsStart_const" "xMoleFraction" xMoleAlInGaAsStart) (sdedr:define-constant-profile-region "Place_xmole_nAlGaInAsStart_const" "xmole_nAlGaInAsStart_const" "L2-nAlInGaAsStart") (sdedr:define-constant-profile "ymole_nAlGaInAsStart_const" "yMoleFraction" yMoleAlInGaAsStart) (sdedr:define-constant-profile-region "Place_ymole_nAlGaInAsStart_const" "ymole_nAlGaInAsStart_const" "L2-nAlInGaAsStart") ; Layer 1 - nInP contact doping and refinement (sdedr:define-constant-profile "nInP_const" "TelluriumActiveConcentration" nInPDoping) (sdedr:define-constant-profile-region "Place_nInP_const" "nInP_const" "L1-nInP") ;---------------------------------------------------------------------------; Define contacts;--------------------------------------------------------------------------- ; Bottom contact definition (sdegeo:define-contact-set "nBottomContact" 4 (color:rgb 1 0 0 ) "##" ) (sdegeo:set-current-contact-set "nBottomContact") (sdegeo:set-contact-edges (list (car (find-edge-id (position 0 Ybottom 0)))) "nBottomContact"); Top contact definition (sdegeo:define-contact-set "pTopContact" 4 (color:rgb 1 0 0 ) "##" ) (sdegeo:set-current-contact-set "pTopContact") (sdegeo:set-contact-edges (list (car (find-edge-id (position 0 Ytop 0)))) "pTopContact"); Probe contact ;(sdegeo:insert-vertex (position 0.039141207933426 1.2288063764572 0)) ;(sdegeo:define-contact-set "Probe" 4 (color:rgb 1 0 0 ) "##") ;(sdegeo:set-current-contact-set "Probe") ;(sdegeo:set-contact-edges (list (car (find-edge-id (position 0.0695706 1.22 0)))) "Probe") ;---------------------------------------------------------------------------; Mesh and save;--------------------------------------------------------------------------- (sde:zoom-all) (sde:set-meshing-command "snmesh -a -c boxmethod") (sde:save-model "n@node@_sdemodel") (sde:build-mesh "snmesh" "-a -c boxmethod" "n@node@_sdemodel") Appendix B – Sentaurus Device Input File*------------ File control -----------------------File { * Input Files Grid = "n@node|-1@_sdemodel_msh.tdr" Parameter = "ModelParameters/InGaAs.par" * Output Files Current = "n@node@_InPDiodeOptical" Plot = "n@node@_InPDiodeOptical" Output = "n@node@_InPDiodeOptical"}*----------- Electrode statments and controls -------Electrode { { Name="pTopContact" Voltage=0.0 Resistor=50} { Name="nBottomContact" Voltage=0.0 } *{ Name="Probe" Voltage=0.0 Resistor=1000E9}}*---------- Specifiying physics -------------Physics { *HeteroInterface *Fermi Hydrodynamic( eTemperature ) Mobility( eHighFieldSaturation ) EffectiveIntrinsicDensity( NoBandGapNarrowing ) *Recombination( * Radiative SRH Auger *) Area = 100000000000.0 * to get current in mA/cm^2 Optics( ComplexRefractiveIndex (WavelengthDep(Real Imag)) OpticalGeneration( QuantumYield ( StepFunction(EffectiveBandgap) ) ComputeFromMonochromaticSource ( ) TimeDependence (** Simulating a square wave*WaveTime = (10e-12, 10.0001e-12)*WaveTSlope = 1e100000 * To have a small/large signal periodic component, you can make the input wave periodic * WaveTPeriod = Tperiod * WavePeriods = Nperiod * WaveTPeriodOffset = toffset * Additionally, if you want to have a arbitrary shapes input function, you can specify an intensity waveform in an external file.** Simulating a chain of Gaussian pulses at 50 GHz, note that the period is doubled to give a 10101010 bit streamWaveTime = (150e-12, 150e-12)WaveTSigma= @StdDev@*WaveTPeriodOffset = 50e-12*WaveTPeriod = 370e-12*WavePeriods = 2) * quasistationary and transient scaling factors are completely independent * so to ramp up the voltage in the dark set scaling = 0 scaling=0 ) * end OpticalGeneration Excitation ( Wavelength = 1.3 *[um] Intensity = @Intensity@ *[W/cm2] * Largest intensity for which the simulation will converge Theta = 0 Window("L1")(Origin= (0, 0.15)* Shift origin below the bottom photodiode surfaceLine(x1= -0.5 x2= 0.5)* Illumination window covers width of photodiode. ) ) * end Excitation OpticalSolver (OptBeam (LayerStackExtraction (WindowName = "L1") )) ) * end OpticalSolver}*---- Specifying physics for each material type as not all materials have the same models availablePhysics( Material="InGaAs"){ MoleFraction( xFraction= 0.47 Grading= 0) Mobility( Dopingdependence ) Recombination( Radiative SRH Auger ) }Physics( Material="AlInGaAs"){ Mobility( Dopingdependence ) Recombination( Radiative ) }Physics( Material="InP"){ Mobility( Dopingdependence ) Recombination( Radiative SRH Auger ) }*------- Specifying the paremets to plotPlot { eDensity hDensity eCurrent hCurrent Potential SpaceCharge ElectricField eMobility hMobility eVelocity hVelocity Doping DonorConcentration AcceptorConcentration IntrinsicDensity OpticalIntensity OpticalGeneration OpticalAbsorption AbsorbedPhotonDensity ConductionBandEnergy ValenceBandEnergy }CurrentPlot{ OpticalGeneration(Integrate(Semiconductor)) absorbedPhotonDensity(Integrate(Semiconductor))}*-------- Specifying the parameters for the mathematical engine. Saving time by multi-theading----------Math {*-- Parallelization on multi-CPU machine --* Number_Of_Threads=8 * change the number of threads to > 1 to make * parallelization possible. First ensure your machine * has shared-memory multi-CPU configuration.*-- Numeric/Solver Controls --* Extrapolate * switches on solution extrapolation along a bias ramp Derivatives * considers mobility derivatives in Jacobian Iterations=100 * maximum-allowed number of Newton iterations (3D) RelErrControl * switches on the relative error control for solution * variables (on by default) Digits=5 * relative error control value. Iterations stop if * dx/x < 10^(-Digits) Method=ILS * use the iterative linear solver with default parameter NotDamped=100 * number of Newton iterations over which the RHS-norm * is allowed to increase Transient=BE * switches on BE transient method}*------ Building up the solution from initial DC to transient-----------Solve {*- Buildup of initial solution: NewCurrentPrefix="n@node@_init" Coupled(Iterations=100){ Poisson } Coupled{ Poisson Electron } Coupled{ Poisson Electron Hole }*- Bias electrode to target bias Quasistationary( InitialStep=0.01 MinStep=1e-7 MaxStep=0.01 Goal{ Name="pTopContact" Voltage=@VBias@ } ){ Coupled{ Poisson Electron Hole } } NewCurrentPrefix="" *Optics Transient( InitialTime=0 FinalTime=500E-12 MinStep=1e-16 MaxStep=1e-14 ){ Coupled{ Poisson Electron Hole } }}Appendix C – Sentaurus Visual Input Fileload_file /home/rgriffin/DB/SmyInPDiode/n@node|-1@_InPDiodeOptical_des.pltcreate_plot -1dselect_plots Plot_1create_curve -plot Plot_1 -dataset n@node|-1@_InPDiodeOptical_des -axisX time -axisY {nBottomContact TotalCurrent}create_curve -plot Plot_1 -dataset n@node|-1@_InPDiodeOptical_des -axisX time -axisY2 {IntegrSemiconductor OpticalGeneration}export_curves {Curve_1 Curve_2} -plot Plot_1 -filename /home/rgriffin/DB/SmyInPDiode/ExportedData/n@node@_nContactCurrent@VBias@V-std@StdDev@s-@Intensity@W.csv -format csv ................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download