Skip to main content

OpEnUV — Open Source Extreme Ultraviolet Lithography Simulator

PyPI Python 3.10+ License CI Tests Twitter

From plasma source to CD metrology — full-stack EUV lithography simulation on your laptop.

⚛️ First-principles physics CXRO atomic scattering → TMM reflectivity → RCWA mask diffraction → Hopkins imaging → Dill ABC resist
🚀 GPU-native PyTorch autograd throughout — differentiable from mask geometry to CD
🧪 Validated 455 unit tests, cross-checked against CXRO database, independent literature, and Grok verification
📦 Zero commercial dependencies Apache 2.0 — fork, modify, deploy freely

What makes OpEnUV different?

OpEnUV is the only open-source tool that models the complete EUV lithography pipeline from photon to CD:

Module Method OpEnUV IMD GD-Calc OpenLithoHub
Material constants CXRO/Henke f₁,f₂ ✅ ✅ ❌ ❌
Multilayer mirror Transfer-Matrix (S-matrix) ✅ ✅ ❌ ❌
Mask diffraction RCWA 1D/2D + S-matrix cascade ✅ ❌ ✅ ❌
Aerial image Hopkins/Abbe + pupil + source ✅ ❌ ❌ ❌
High-NA optics Anamorphic 4×/8×, Zernike ✅ ❌ ❌ ❌
Resist chemistry Dill ABC + PEB + development ✅ ❌ ❌ ❌
Plasma source LPP Sn-droplet spectral model ✅ ❌ ❌ ❌
Stochastics Shot noise, LER/LWR ✅ ❌ ❌ ✅
CD metrology Process window, Bossung ✅ ❌ ❌ ❌
Optimization Differentiable OPC/ILT bridge ✅ ❌ ❌ ✅
Web API REST + dashboard ✅ ❌ ❌ ❌

IMD is the gold standard for multilayer reflectivity. GD-Calc solves rigorous coupled-wave analysis. OpenLithoHub benchmarks OPC quality. OpEnUV is the only tool that connects all the physics — from plasma spectrum through mask diffraction to developed resist profile.


Validated test calculations

All results independently verified against the CXRO/Henke database and literature values. Full details in testberechnungen.md.

Test Result Method
Mo optical constants (91.84 eV) n = 0.92335, k = 0.00647 CXRO database interpolation
Si optical constants (91.84 eV) n = 0.99900, k = 0.00183 CXRO database interpolation
Mo/Si multilayer 50 BL @ 6° R = 64.7% (ideal) / 60.6% (σ=0.5 nm) S-matrix TMM + Névot-Croce
Wavelength: 13.5 nm — E = hc/λ = 91.84 eV
Illumination: NA 0.33 Conventional, σ = 0.8 Dipole / annular / quasar
Aerial image NILS 4.36 @ 64 nm pitch, 32 nm CD Hopkins formulation
Process window CD vs. dose × focus Bossung plot

"The calculations are solid and physically sound." — Grok (independent review, 2026-07-09)


Quick start

pip install openuv                    # install from PyPI
pip install -e ".[dev]"               # or from source (development)

# End-to-end simulation
euv simulate --period=64 --cd=32 --dose=20

# Process window (dose-focus Bossung plot)
euv process-window --period=64 --cd=32

# Web dashboard
euv serve
# → http://localhost:8000

# Query material database
euv materials Mo --energy=91.84

# Performance benchmark
euv bench

Or from Python:

from euv.pipeline import SimulationConfig, run_simulation

cfg = SimulationConfig(
    period_nm=64, line_width_nm=32,
    dose_mj_cm2=20, na=0.33, sigma=0.8,
    resist_model="full_chem",
)
result = run_simulation(cfg)
print(f"CD = {result.cd_nm:.1f} nm")
print(f"NILS = {result.nils_value:.3f}")

Architecture

src/euv/
├── source/         LPP Sn-plasma emission model (spectrum + dose)
├── materials/      CXRO atomic scattering factors f₁,f₂ (Z = 1–92)
├── optics/         Multilayer TMM (S-matrix, Névot-Croce, grading)
├── mask3d/         RCWA 1D/2D Fourier Modal Method (stable S-matrix)
├── aerial/         Abbe/Hopkins imaging, pupil, source shapes
├── resist/         Dill ABC exposure, PEB, development, shot noise
├── io/             CLI, GDSII, rasterization
├── metro/          CD metrology, process window, SEM rendering
├── opc/            Differentiable OpenILT bridge
├── accel/          GPU acceleration + VRAM management
├── etch/           Etch bias model
├── calibrate/      Wafer calibration (scipy optimisation)
├── api/            FastAPI REST server + web dashboard
└── pipeline.py     End-to-end simulation orchestration
┌────────┐   ┌────────┐   ┌────────┐   ┌────────┐   ┌────────┐   ┌────────┐
│ SOURCE │ → │  MASK  │ → │OPTICS │ → │ AERIAL │ → │ RESIST │ → │ METRO  │
│ LPP Sn │   │ RCWA   │   │ TMM   │   │Hopkins│   │Dill ABC│   │ CD/PW  │
└────────┘   └────────┘   └────────┘   └────────┘   └────────┘   └────────┘

CLI reference

Command Description
euv simulate Full end-to-end simulation (CLI args or YAML/JSON config)
euv process-window Dose-focus Bossung grid → DoF + EL
euv make-mask Generate line/space test mask (GDSII)
euv materials List elements / query n + ik at any photon energy
euv serve Launch the REST API + web dashboard
euv bench Performance benchmark
euv info System + module overview

Tutorials

Notebook Description
basic_simulation.ipynb Run your first EUV simulation
materials.ipynb Query CXRO optical constants
process_window.ipynb Compute a Bossung plot

Project status

Milestone Status
Project scaffold & CXRO materials ✅
Multilayer optics (S-matrix TMM) ✅
Mask 3D (RCWA 1D + 2D) ✅
Aerial image (Abbe/Hopkins) ✅
High-NA imaging (anamorphic) ✅
End-to-end pipeline ✅
LPP source model ✅
Resist chemistry (Dill ABC + PEB) ✅
Stochastic effects (shot noise, LER/LWR) ✅
CD metrology & process window ✅
Inverse lithography (OpenILT bridge) ✅
GPU acceleration ✅
REST API + web UI ✅
Tutorials & documentation ✅
Docker deployment ✅
CI/CD pipeline ✅
Test count 455 / 455 passing
License Apache 2.0
PyPI 🔜
v1.0 release 🔜

Benchmark: small system performance

Config Grid Orders Time (CPU) Time (GPU)
Small 256×256 21 ~0.1 s —
Medium 512×512 31 ~0.3 s —
Standard 1024×1024 51 ~1.2 s ~0.1 s

Documentation

Full Sphinx documentation at docs/:


License

Apache 2.0 — see LICENSE.


How to contribute

We welcome contributions! See CONTRIBUTING.md for guidelines.

  • 🐛 Open an issue for bugs
  • 💡 Start a discussion for features
  • 🔀 Submit pull requests on the main branch
  • 📝 Improve documentation or add tutorials
  • 🎓 If you use OpEnUV in research, cite it! (citation coming with v1.0)

Support

PayPal: gofter@web.de — send via PayPal Friends & Family

Development supported by GitHub Sponsors and PayPal donations. OpEnUV is open source — contributions welcome. ❤️

Metadata

Release files for openuv 1.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for openuv 1.0.1
File Size Uploaded
openuv-1.0.1.tar.gz 694.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for openuv 1.0.1
File Interpreter ABI Platform
openuv-1.0.1-py3-none-any.whl Python 3 none any Details

Total release size: 1.4 MB

Release files / openuv-1.0.1.tar.gz

Download URL openuv-1.0.1.tar.gz
Size 694.6 kB
Tags Source
SHA-256 checksum
How to use checksums
48dee946c8870c986fbf8d2d2ab8efd6d126599d301bf4d4ff1925fb0af0f53b
BLAKE2b-256 checksum
How to use checksums
eb1bf5bf90d05a79fd6fbd5dfd8a3e30cc9dde03063a4c02abc1ffc8b70820d8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.13

Release files / openuv-1.0.1-py3-none-any.whl

Download URL openuv-1.0.1-py3-none-any.whl
Size 721.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
df088ab00b16d7e090c1f9ac6e6ef79c81081ad2b328c3e91dafa9e85ee9644b
BLAKE2b-256 checksum
How to use checksums
71ba23bf2d532867967d177117e090bb3fff135349316f6a9cf05ac10cc38d2f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.13

Release history Release notifications | RSS feed

This release

1.0.1 This release

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page