Level C - Numerical Model
Level C provides self-consistent numerical solution of semiconductor device equations using 2D mesh-based simulation. This is the most accurate model but computationally intensive, suitable for research and validation purposes.
Fundamental Equations
The simulator solves the semiconductor device equations self-consistently:
1. Poisson Equation
Relates electrostatic potential to charge density:
Where:
- : Electrostatic potential (V)
- , : Electron and hole concentrations (cm⁻³)
- , : Ionized donor and acceptor concentrations
- : Silicon permittivity
2. Continuity Equations
Conservation of carriers with generation/recombination:
Electrons:
Holes:
For steady-state (DC) analysis:
3. Current Density (Drift-Diffusion)
Using Einstein relation:
Physical Interpretation
- Drift: Carriers move under electric field ( )
- Diffusion: Carriers move from high to low concentration ( )
Mesh Generation
Non-Uniform 2D Mesh
The simulator uses a non-uniform rectangular mesh with refinement in critical regions:
Mesh Refinement Strategy
| Region | Typical Spacing | Reason |
|---|---|---|
| Si/SiO₂ interface | 0.2-0.5 nm | Rapid potential variation |
| Junction edges | 1-2 nm | High field, carrier gradients |
| Channel center | 2-5 nm | Moderate variation |
| Bulk substrate | 5-20 nm | Slow variation |
Mesh Quality Requirements
For accurate results:
- Debye length criterion:
- Gradient criterion: Adjacent cells should have < 2× potential difference
- Aspect ratio: Keep cell aspect ratio < 10:1
Numerical Methods
Scharfetter-Gummel Discretization
Standard finite-difference fails for drift-diffusion due to exponential carrier profiles. The Scharfetter-Gummel scheme uses exponential fitting:
Where is the Bernoulli function.
Why Scharfetter-Gummel?
Consider an exponential carrier profile .
Standard FD: → large error
SG scheme: Uses exact solution of drift-diffusion between mesh points → accurate for any
Bernoulli Function Properties
The function is computed carefully to avoid numerical overflow.
Gummel Iteration
Self-consistent solution uses decoupled iteration:
1. Initial guess: ψ from Poisson with n,p from Boltzmann
2. LOOP until converged:
a. Solve Poisson equation → update ψ
b. Solve electron continuity → update n
c. Solve hole continuity → update p
d. Check: |Δψ|_max < tolerance?
3. Calculate currents from converged solutionConvergence Issues
Gummel iteration may fail to converge for:
- High forward bias (strong injection)
- Very fine mesh (stiff system)
- Poor initial guess
Solutions: Use Newton-Raphson for difficult cases, continuation methods.
Linear Solver: BiCGSTAB
Each Poisson/continuity solve requires solving a sparse linear system .
The BiCGSTAB (Biconjugate Gradient Stabilized) algorithm is used:
- Handles non-symmetric matrices
- Good convergence for device equations
- Memory efficient (no matrix factorization)
Typical settings:
- Tolerance:
- Max iterations: 1000
- Preconditioner: Jacobi (diagonal)
Boundary Conditions
Contact Boundary Conditions
| Boundary | Type | Condition |
|---|---|---|
| Gate | Dirichlet | |
| Source/Drain (Ohmic) | Dirichlet | , , |
| Substrate | Dirichlet | , |
Interface Conditions
Oxide-Silicon interface:
Open boundaries (Neumann):
Convergence Behavior
Typical Convergence
| Iteration | | Status | |-----------|---------------------|--------| | 1 | 0.5 V | Initial | | 5 | 0.05 V | Converging | | 10 | 0.001 V | Near solution | | 15 | 1e-6 V | Converged |
Convergence Tips
- Good initial guess: Start from equilibrium, increment bias slowly
- Under-relaxation: with
- Voltage stepping: For large bias, use intermediate steps
- Mesh refinement: Coarse mesh first, then refine
Computational Cost
Single Bias Point
| Mesh Size | Unknowns | Iterations | Time |
|---|---|---|---|
| 50×50 | 7,500 | ~15 | ~0.5 s |
| 100×100 | 30,000 | ~20 | ~2 s |
| 200×200 | 120,000 | ~25 | ~8 s |
I-V Sweep (25 points)
| Mesh Size | Total Time | Per Point |
|---|---|---|
| 50×50 | ~10 s | 0.4 s |
| 100×100 | ~45 s | 1.8 s |
| 200×200 | ~4 min | 10 s |
GPU Acceleration
WebGPU acceleration can provide 10-50× speedup for larger meshes. Currently experimental - see GPU Acceleration Review.
Output Quantities
Level C provides detailed 2D field distributions:
| Quantity | Symbol | Unit |
|---|---|---|
| Electrostatic potential | V | |
| Electric field | , | V/cm |
| Electron concentration | cm⁻³ | |
| Hole concentration | cm⁻³ | |
| Current density | , | A/cm² |
| Recombination rate | cm⁻³/s |
Derived Metrics
- Terminal currents: Integrated from current density at contacts
- Inversion charge:
- Depletion width: From potential profile analysis
- Threshold voltage: Extrapolated from Id-Vgs
Physical Models Included
Carrier Statistics
Boltzmann (default):
Fermi-Dirac (optional):
Recombination Models
Shockley-Read-Hall:
Auger (high injection):
Mobility Models
Doping-dependent:
Field-dependent:
When to Use Level C
✅ Good for:
- Accurate device characterization
- Novel device structure analysis
- 2D field visualization
- Validating compact models
- Research applications
- Understanding internal physics
❌ Not suitable for:
- Quick parameter exploration (too slow)
- Circuit-level simulation
- Large design space sweeps
- Real-time interaction
Comparison: All Levels
| Feature | Level A | Level B | Level C |
|---|---|---|---|
| Physics | Analytical | Semi-empirical | Numerical |
| Accuracy | Low | Medium | High |
| Speed | ~1 ms | ~2 ms | ~1-10 s |
| 2D fields | ❌ | ❌ | ✅ |
| SCE | ❌ | ✅ | ✅ (intrinsic) |
| Custom structures | ❌ | ❌ | ✅ |
Implementation Details
Code Structure
src/physics/levelC/
├── mesh.ts # Mesh generation
├── poisson.ts # Poisson solver
├── continuity.ts # Continuity equations
├── gummel.ts # Gummel iteration
├── bicgstab.ts # Linear solver
├── materials.ts # Material properties
└── worker.ts # Web Worker interfaceWeb Worker
Level C runs in a Web Worker to avoid blocking the UI:
- Main thread sends device parameters
- Worker performs simulation
- Results returned via postMessage
- Progress updates for long simulations