An interactive, testable implementation of a first-order analytical
ion-implant depth profile. It explores user-supplied dose, projected range
(Rp), range straggle (ΔRp), multi-component superposition, and simplified
constant-diffusivity broadening—without pretending to be calibrated TCAD.
Evidence boundary: this repository contains no claimed fabrication experiments, proprietary process data, or invented ion range tables. Species and energy are metadata only. Users must supply
RpandΔRpfrom a trusted range table, calibrated Monte Carlo/TCAD workflow, or measurement.
- How do dose, projected range, and straggle set the peak and depth distribution?
- How does a zero-flux surface affect a near-surface Gaussian tail?
- Does numerical discretization conserve the requested sheet dose?
- How does the simplified variance relation
σ² = σ₀² + 2Dtbroaden a profile? - Can several fixed profile components approximate a user-defined target using non-negative dose fitting?
flowchart LR
A["User-supplied Q, Rp, ΔRp"] --> B["Reflected Gaussian component"]
C["Optional constant D and time"] --> B
B --> D["Multi-component superposition"]
D --> E["Dose integration and crossings"]
D --> F["NNLS dose fitting"]
E --> G["Streamlit profile explorer"]
F --> G
For dose Q, mean projected range Rp, and straggle σ, the familiar
full-space approximation is
C(x) = Q / (sqrt(2π) σ) · exp[-(x - Rp)² / (2σ²)].
The implementation uses a direct term plus an image term on x ≥ 0:
C+(x) = Q / (sqrt(2π) σ) · {
exp[-(x - Rp)² / (2σ²)] + exp[-(x + Rp)² / (2σ²)]
}.
This is a transparent zero-flux surface approximation and integrates to Q
over the semi-infinite domain. For a constant diffusion coefficient and time,
the standard deviation becomes
σannealed = sqrt(σimplant² + 2Dt).
All internal calculations convert nanometres to centimetres before producing
concentrations in cm⁻³ and sheet dose in cm⁻².
- dose-conserving semi-infinite Gaussian profile;
- any number of superposed implant components;
- optional constant-
DFickian broadening; - numerical sheet-dose verification;
- peak concentration and peak-depth calculation;
- log-interpolated crossings with a selected background concentration;
- non-negative least-squares fitting of component doses to a target profile;
- JSON recipe CLI, CSV export, notebook, Streamlit dashboard, and tests.
git clone https://github.com/luxinya2003/ion-implant-profile-explorer.git
cd ion-implant-profile-explorer
python -m venv .venvActivate on Windows:
.venv\Scripts\Activate.ps1Then install and run:
python -m pip install -e ".[dev]"
implant-profile verify
implant-profile simulate --recipe examples/dual_component_recipe.json
streamlit run dashboard/app.pyThe committed reports/verification.json checks
that six mathematical cases recover the requested sheet dose after numerical
integration. Unit tests also verify superposition, diffusion broadening,
junction crossings, Arrhenius monotonicity, input validation, and recovery of
known NNLS weights.
These checks validate code against analytical invariants. They do not validate the model against SIMS measurements, calibrated TCAD, or a real implant.
ruff check src tests dashboard
pytest --cov=ion_profile --cov-report=term-missingThis tool intentionally does not model:
- energy-to-range or species-to-range physics;
- crystal channeling or implant angle;
- skewness, kurtosis, Pearson-IV profiles, or lateral straggle;
- implant damage, amorphization, or dynamic annealing;
- transient enhanced or concentration-dependent diffusion;
- electrical activation, clustering, segregation, or solid solubility;
- multilayer stopping, masks, interfaces, or device performance.
Analytical moment models are valuable for learning, screening assumptions, and checking units. TU Wien's implantation-simulation research notes that modern TCAD increasingly requires particle-based Monte Carlo methods and that simple analytical profiles cannot reliably handle complex targets, channeling, or few-nanometre structures. Use an appropriately calibrated process simulator and engineering review for real recipe decisions.
- U.S. Bureau of Mines, Methodology for Evaluating Integral Gaussian Profiles, Information Circular 8811. The report presents Gaussian implant profiles, Fick's diffusion equation, and a semi-infinite no-loss surface treatment. CDC Stacks record
- Robert Wittmann, Simulation of Ion Implantation, TU Wien dissertation. Chapter 3
- Alan Doolittle, ECE 6450: Ion Implantation, Georgia Tech. Lecture notes
- J. Lindhard, M. Scharff, and H. E. Schiøtt, Range Concepts and Heavy Ion Ranges, Mat. Fys. Medd. Dan. Vid. Selsk. 33(14), 1963. Institutional catalogue record
- A. Soler et al., A fitting algorithm for optimizing ion implantation energies and fluences, 2021. arXiv:2103.02525
.
├── dashboard/app.py
├── examples/dual_component_recipe.json
├── notebooks/01_profile_walkthrough.ipynb
├── reports/verification.json
├── src/ion_profile/
│ ├── fitting.py # non-negative dose fitting
│ ├── models.py # validated physical inputs
│ ├── physics.py # profiles, integration, junctions
│ ├── recipe.py # JSON configuration
│ └── verification.py # analytical invariants
└── tests/
Xinya Lu — Chemical Engineering background; M.Sc. AI for Science candidate at the National University of Singapore.
Created as an honest computational demonstration of semiconductor process learning: visible assumptions, explicit units, reproducible calculations, and no fabricated laboratory work.