Skip to main content

Open Source EUV Lithography Simulator — from plasma source to CD metrology

Project description

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. ❤️

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

openuv-1.0.1.tar.gz (694.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

openuv-1.0.1-py3-none-any.whl (721.6 kB view details)

Uploaded Python 3

File details

Details for the file openuv-1.0.1.tar.gz.

File metadata

  • Download URL: openuv-1.0.1.tar.gz
  • Upload date:
  • Size: 694.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.13

File hashes

Hashes for openuv-1.0.1.tar.gz
Algorithm Hash digest
SHA256 48dee946c8870c986fbf8d2d2ab8efd6d126599d301bf4d4ff1925fb0af0f53b
MD5 480ed9a47afd01d32cc7aa8a85063eb0
BLAKE2b-256 eb1bf5bf90d05a79fd6fbd5dfd8a3e30cc9dde03063a4c02abc1ffc8b70820d8

See more details on using hashes here.

File details

Details for the file openuv-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: openuv-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 721.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.13

File hashes

Hashes for openuv-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 df088ab00b16d7e090c1f9ac6e6ef79c81081ad2b328c3e91dafa9e85ee9644b
MD5 72b4209c839b5465b687a77e8040413f
BLAKE2b-256 71ba23bf2d532867967d177117e090bb3fff135349316f6a9cf05ac10cc38d2f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page