Semiconductor Device Simulation Using DEVSIM Juan Sanchez July 2, 2018
Introduction • PDE semiconductor device simulator • Finite volume method • Solves 1D, 2D, and 3D structures • External meshing tools or internal mesher • Symbolic model evaluation • Visualization using standard output formats 2
Examples Magnetic Potential Capacitance 3
Device Equations • Drift-diffusion equations ∇ 2 ϕ = q ( p − n + N D − N A ) (Poisson) ∂ n q ∇ · � 1 ∂ t = J n + G n − R n (Electron Continuity) ∂ p q ∇ · � ∂ t = − 1 J p + G p − R p (Hole Continuity) 4
Example – 1D Diode 5
Example – 2D MOSFET 6
Example – 2D MOSFET 7
Introduction • Project started in 2008 • Open source since 2013 https://devsim.org • C++ using STL, C++-11, and templates • Platform Agnostic (Linux, OS X, Windows) • Uses Python scripting to set up equations and control simulation • Approximately 64,000 lines of code https://www.openhub.net/p/devsim 8
Architecture – Analysis • Nonlinear simulation – dc – transient • Linear analysis – small-signal ac – sensitivity (impedance field) – noise 9
Architecture – Scripting • Models implemented using scripting – Faster development cycle – Design for efficiency • Symbolic differentiation – Faster development time – Add derivatives w.r.t. new variables – Common subexpression elimination 10
Architecture – Python • well defined and consistent • avoids domain specific languages with limited debugging • provides users more control • has numerous libraries for analysis and visualization 11
Architecture – Numerics • BLAS and LAPACK – Used for dense matrix and vector operations, geometric processing – Optimized for most platforms – Called by sparse matrix factorization • SuperLU, MKL Pardiso used for sparse matrix factorization • Iterative Math Library used for GMRES 12
SYMDIFF • Symbolic differentiation library • Open source https://symdiff.org • String based approach with dynamic binding of names to referred quantities – Constants – Independent variables – Models 13
SYMDIFF – Parser • Uses rules of precedence and associativity • Has simplify algorithm to reduce cost <<<< diff(a + b + cˆ2, c) (2 * c) <<<< diff(xˆx, x) (((x * (xˆ(-1))) + log(x)) * (xˆx)) <<<< simplify(diff(xˆx,x)) ((1 + log(x)) * (xˆx)) 14
SYMDIFF – User functions • Defining functions requires specification of new function and derivatives w.r.t. each named variable argument > define(sqrt(x),0.5 * xˆ(-0.5)) sqrt(x) > diff(sqrt(x*y),y) ((0.5 * ((x * y)ˆ(-0.5))) * x) 15
SYMDIFF – Models • Models allow – creation of new PDEs – hierarchy for sub-expression elimination – ability to specify or generate derivatives • Models dynamically bound by name – diff(Model,x) is Model:x 16
Element Assembly • Expressions evaluated at run time • Symbolic derivatives of models for Jacobian assembly • Assembles bulk, interface, and contact equations • Circuit boundary conditions 17
Node Models NodeVolume EdgeCouple 18
Node Models – Shockley Read Hall np − n 2 i U SRH = τ p ( n + n 1 )+ τ n ( p + p 1 ) USRH="(Electrons*Holes - n_iˆ2)/ \ (taup*(Electrons + n1) + taun*(Holes + p1))" Gn = "-ElectronCharge * USRH" Gp = "+ElectronCharge * USRH" NodeModel("USRH", USRH) NodeModel("ElectronGeneration", Gn) NodeModel("HoleGeneration", Gp) for i in ("Electrons", "Holes"): NodeModelDerivative("USRH", USRH, i) NodeModelDerivative("Gn", Gn, i) NodeModelDerivative("Gp", Gp, i) 19
Node Models – Shockley Read Hall 20
Edge Models EdgeCouple EdgeLength n0 n1 21
Edge Models • Electric field ( E ) w.r.t potential ( ϕ ) edge_model(device=device, region=region, name=’ E ’, equation=’( ϕ @n0 - ϕ @n1)*EdgeInverseLength’) edge_model(device=device, region=region, name=’ E : ϕ @n0’, equation=’EdgeInverseLength’) edge_model (device=device, region=region, name=’ E : ϕ @n1’, equation=’-EdgeInverseLength’) 22
Element Edge Models en2 ElementEdgeCouple en0 en1 ElementNodeVolume EdgeLength 23
2D MOSFET Mobility • Element models are used to simulate mobility with respect to electric field normal and perpendicular to current flow 24
BJT Example Available https://github.com/devsim/devsim_bjt_example 25
BJT – DC Analysis 4 2 0.009 10 10 β 1 10 I c 0 10 0.008 I b -1 10 3 10 -2 10 0.007 -3 10 -4 10 0.006 I c (A/cm) -5 10 A/cm 2 10 -6 10 0.005 -7 10 -8 10 0.004 -9 10 1 10 -10 10 0.003 -11 10 -12 10 0 -13 0.002 10 10 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 0.0 0.2 0.4 0.6 0.8 1.0 1.2 1.4 1.6 V be (V) V ce (V) 26
BJT – AC Analysis 1e9 4 1.8 10 0.1 0.2 1.6 0.3 3 10 1.4 0.4 0.5 1.2 0.6 2 10 0.7 1.0 f T (Hz) 0.8 | β | 0.9 0.8 1.0 1 10 0.6 0.4 0 10 0.2 -1 0.0 10 -8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 9 10 11 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 I c (A/cm) f (Hz) 27
Density Gradient • Quantum correction method for carrier density near interfaces • Carrier quantization effects ∇ 2 √ n Λ e = − b n √ n ∇ 2 √ n � 2 ( ∇ log n ) 2 � ∇ 2 log n + 1 1 = √ n 2 Using n = exp ( u ) � � � Λ e ∂ v = − b n ∇ u · ∂ s + 1 + b n ox � � ( ∇ u ) 2 ∂ v σ int 2 2 x n 28
Density Gradient 29
Density Gradient CV Curves t ox =3 (nm) 12 10 8 C (fF/ m) 6 N A =10 17 (#/cm 3 ) 4 DG N A =10 18 (#/cm 3 ) DG 2 N A =10 19 (#/cm 3 ) DG 0 1 0 1 2 3 4 5 V g (V) 30
Recommend
More recommend