# photonoxide roadmap
## Vision
The validated, fabrication-ready photonics toolkit for Rust: simulation, inverse design and layout in one library, with a studio to watch every run live.
### Success criteria for 1.0
- **Validated:** every solver passes analytic tests, reproduces published results within a stated tolerance, and agrees with an established code on shared cases. A public validation report is regenerated by CI for every release.
- **Converged:** every number comes with its convergence: grid resolution, absorbing boundary and run time. Unconverged results are flagged, never quietly reported.
- **Fabricable:** every device photonoxide designs exports to GDSII and OASIS, passes the design rules of an open PDK (SiEPIC EBeam, Cornerstone), and reports its performance across process variation, not just at nominal.
- **Fabricated:** at least one photonoxide-designed device made on an open multi-project wafer run (SiEPIC openEBL), with its measured spectrum compared against the prediction and both published.
- **Visible:** every solver and every optimization can be watched live in the studio, and every run replays from its record. Headless runs give identical results.
- **Fast:** at least as fast per core as the reference open-source codes (Meep, MPB, S4) on our benchmark suite, measured as time to a converged answer at equal accuracy, with every result published, losses included.
- **Reproducible:** the same input gives bit-for-bit the same result on any number of threads.
- **Documented:** every method has a theory page with its derivation and references, and 100% of the public API is documented.
## Design principles
1. **Validation before features.** A solver is merged with three things:
- an analytic test;
- a reproduction of a published result;
- a convergence test showing the expected order.
A feature without validation isn't done, however useful it looks.
2. **Every number knows its error.**
- Results carry the discretization they came from, and convergence studies are built in.
- A 2D result is labelled 2D, and "verified in 3D" is a separate status.
3. **Implemented from the papers.**
- Every method cites its source in the docs.
- GPL codes (Meep, MPB, KLayout, SPINS-B) are run as external programs for comparison and never read for porting. photonoxide is MIT OR Apache-2.0.
4. **Fabrication is a constraint, not a post-process.**
- The PDK's design rules enter the optimization (length scales, eroded and dilated designs).
- Designs are layout from the start: polygons on layers, with ports.
5. **One run, two views.**
- The CLI and the studio run the same job description.
- The run directory records its events, so any run can be watched live or replayed later.
- The window starts the job by itself, exits when it's done, and honours a hard timeout.
6. **Pure Rust.**
- No C, Fortran or Python dependencies, and no Python bindings.
- Linear algebra is faer, parallelism is rayon, and the GPU is wgpu.
7. **Units are types.** Lengths, wavelengths and frequencies can't be mixed up silently. The time convention is e^(−iωt) everywhere and is documented once.
8. **Material data has provenance.**
- Every material model carries its source, validity range and temperature.
- Extrapolating outside the range is an error by default.
- Only openly licensed data is shipped; the refractiveindex.info database is CC0.
9. **Determinism is a guarantee.** Reductions are ordered, seeds are explicit, and nothing depends on thread scheduling.
10. **Optimization lives in genoxide, at every level.**
- photonoxide supplies the physics: the objective, its adjoint gradient, and the parametrization (filters, projections, fabrication constraints), for device shapes, component parameters and whole circuits.
- [genoxide](https://github.com/tachsin/genoxide), our optimization library, supplies every method that searches: gradient methods, constrained methods, evolutionary and global search.
- When photonoxide needs a method genoxide lacks, it is added to genoxide as a general method with its own tests and benchmarks, never as photonics-specific code.
11. **Components at every fidelity.**
- A device is a component with ports and parameters, and the same physics at several fidelities: analytic or compact, 2D, 3D and measured, each with its error against its source.
- A chip is a netlist of components that simulate together, passive and active.
12. **The studio is a workspace,** not only a viewer: jobs, components and chips are built in it, and every run is watched and compared in it.
### Pitfalls ruled out by design
These mistakes were each seen and measured while designing a 1310/1550 nm silicon demultiplexer by adjoint topology optimization, in 2D FDFD and 3D FDTD. photonoxide is written from scratch to this roadmap, and rules each one out by design, with a test for each:
| Pitfall (measured) | photonoxide rule |
|---|---|
| The harmonic mean of ε at half points for the TE-like (Hz) operator: TM modes were 4·10⁻⁴ off, with first-order convergence | Interface averaging derived per operator in the docs; a convergence-order test for every discretization |
| A port mode solved on a window cut between two waveguides saw asymmetric Yee-grid boundaries: a 1.2% uneven split from a symmetric device | Ports solve the isolated waveguide's mode; symmetric devices must split symmetrically to 10⁻⁶ |
| The 3D adjoint treated the output mode as real (it is 4% imaginary): a 10% gradient error | Every adjoint gradient is checked against finite differences to 1% in CI, in 2D and 3D |
| 2D effective-index designs at 97% measured 46–70% in 3D | 2D results are labelled as such, and the inverse-design pipeline ends in 3D |
| A sign error in the DFT phase gave a negative effective index | One documented time convention, and tests of phase direction |
| Resetting Adam's state between projection stages destroyed designs at high β | Optimizer state persists across continuation stages, and that is tested |
| 125 nm pixels capped the design at 0.85 however it was binarized | The design's resolution is set separately from the simulation grid; designs are re-checked on a finer grid |
| A result quoted on one grid changed by 0.07 on the next | Grid convergence gates every reported number |
| The system allocator limited 18 threads to 13 solves/s (30/s with mimalloc) | No allocation in time-stepping and solve loops; throughput is benchmarked by thread count |
| JSON floats didn't round-trip, so a replayed run differed in the 17th digit | Exact float round-trip in every record format |
| A narrow source pulse multiplied FDTD run times | The source bandwidth is set from the requested spectrum, with a floor, and is documented |
## Architecture
- **`units`:** typed lengths, wavelengths and frequencies, and the time convention.
- **`material`:** dispersion models (Sellmeier, Cauchy, Drude, Lorentz, tabulated data with Kramers–Kronig checks), each with its provenance.
- **`geometry`:** shapes, polygons, extrusion, layer stacks (for example 220 nm SOI), and rasterization to grids with subpixel smoothing.
- **`mode`:** slab and 2D cross-section mode solvers, the effective index method, bend modes, dispersion and overlaps.
- **`fdfd`:** frequency-domain finite differences in 2D and 3D, ports, S-parameters, and adjoints.
- **`fdtd`:** the Yee scheme in 2D and 3D, CPML, sources, monitors, dispersive and nonlinear media, and a GPU backend.
- **`semi`:** the transfer matrix method, RCWA, eigenmode expansion (EME) and the beam propagation method.
- **`circuit`:** components with ports and fidelities, netlists, the frequency-domain S-matrix and its adjoint, compact models and Touchstone files, time-domain models and signals, and programmable meshes.
- **`thermal` and `electro`:** the static solver (heat conduction and electrostatics), thermo-optic and Pockels models, and RF transmission lines.
- **`carrier`:** drift-diffusion and plasma dispersion.
- **`inverse`:** adjoint gradients, density and level-set parametrizations, length-scale and foundry-rule constraints, and robust formulations, posed as problems for genoxide's optimizers.
- **`layout`:** polygons and booleans, GDSII and OASIS I/O, parametric cells with ports, and waveguide routing.
- **`pdk`:** layer stacks, layer maps, design rules, cross-sections, process corners, and DRC.
- **`tapeout`:** submission packages for a foundry run: floorplan, test structures, checks and the design record.
- **`fab`:** process-variation models, lithography and etch proxies, and Monte Carlo and corner analysis.
- **`validation`:** analytic solutions and published reference data, with their sources.
- **`run`:** job descriptions (TOML), run directories, event streams and replay.
- **The studio, `studio/`:** the `photonoxide` program, a Tauri app with a three.js window: `run` (live or headless), `view`, `validate`, then `drc`, `tapeout` and `bench`.
- **Errors:** one typed error enum, and no panics in library code.
## Milestones
### 0.0: Project setup ✅
- [x] README, roadmap, licenses and crate skeleton
### 0.1: Foundations ✅
- [x] **Units and conventions:** typed quantities; the e^(−iωt) convention documented and tested.
- [x] **Materials:**
- Sellmeier, Cauchy, Drude and Lorentz models;
- Si (Li 1980), SiO₂ (Malitson 1965) and Si₃N₄ (Luke 2015);
- import from the refractiveindex.info database (CC0) with provenance;
- validity ranges enforced.
- [x] **Geometry and layer stacks:** polygons, extrusion, standard SOI and SiN stacks.
- [x] **Runs:** job TOML, run directories, `events.jsonl`, replay, hard timeouts.
- [x] **Studio skeleton:** open a run, show its geometry and ε cross-sections, replay events; it starts and exits by itself.
- [x] **Project:**
- CI on Linux, macOS and Windows: clippy, fmt and rustdoc with `-D warnings`, plus a single-thread job.
- The validation harness and its report generator from day one.
- AGENTS.md.
### 0.2: Mode solvers ✅
- [x] **Slab:** an exact transfer-matrix dispersion relation, and finite differences. *(Three-layer slab, exact; any multilayer stack by transfer matrices (Chilwell & Hodgkinson 1984), bound modes and leaky waves; any planar profile by 1D finite differences, second order, with a PML.)*
- [x] **2D cross-section:** a full-vector finite-difference solver (Fallahkhair 2008), with PML for leaky modes. *(The solver, shift-and-invert Arnoldi (Saad 2011), mirror walls, and the PML by complex coordinate stretching (Chew 1994, 1997): leaky losses within 0.1 % of the exact transfer-matrix ones, at second order, and Chilwell & Hodgkinson's leaky waves reproduced. Second order at interfaces, about first order at convex corners and 1.4–1.8 at concave ones, measured on Hadley's four corner problems.)*
- [x] **Dielectric corners:** high-accuracy finite-difference equations at interfaces and corners (Hadley 2002, parts I and II). *(Moved to 0.3 and done there.)*
- [x] **Effective index method,** with its error against 3D stated. *(Hocker & Burns 1977, as Chrostowski & Hochberg describe it: the book's 2.489 reproduced; against the full-vector solver, 220 nm strips 400–600 nm wide: n_eff +3.9 to +1.0 %, n_g −6.7 to −2.2 %.)*
- [x] **Bends:** conformal transformation; bend loss. *(Heiblum & Harris's map in the full-vector solver, with a PML; an exact bent slab (radial shooting to the outgoing Hankel function) as the reference: exact and second order for E normal to the bend plane, 1.3e-3 at R = 1 µm for E in it; Marcuse's formula reached as 1/R.)*
- [x] **Derived quantities:** n_eff, n_g, dispersion, loss and overlaps; modes tracked across wavelength. *(n_g and D (Chrostowski & Hochberg Eqs. 3.5–3.6), loss, mode tracking by field overlap; all six field components, power, and the power coupled between two waveguides' modes, checked against exact slab fields.)*
- [x] **Studio:** the mode viewer (fields, and sweeps over width and wavelength). *(A `"modes"` job: each mode's |E|² with its effective index and TE fraction, and sweeps over the wavelength or a width plotted live, with group indices for a wavelength sweep.)*
- [x] **Validation:**
- slab modes against the analytic solution;
- Marcatili's approximation (1969) in its regime of validity;
- the published 500 × 220 nm strip;
- the convergence order.
*(All four, plus Hadley's corner problems, Chilwell & Hodgkinson's multilayer and Bienstman et al.'s leaky-wire benchmark: see docs/validation.md.)*
### 0.3: Frequency-domain finite differences (FDFD) ✅
- [x] **2D,** with stretched-coordinate PML. *(Both polarizations on Yee's grid (Yee 1966), PMLs graded as Shin & Fan 2012 describe, Bloch-periodic sides, and the scheme's exact power flux: a plane wave on a silicon slab reflects as the exact transfer matrices say, at second order, to 3e-5 at 2.5 nm; the flux is conserved to 1e-10.)*
- [x] **3D,** with stretched-coordinate PML (Christ & Hartnagel 1987). *(E on the edges of Yee's cells, H eliminated: one system for E with 13 nonzeros per row, the 2D PMLs and Bloch-periodic sides on each axis, per-component averaging and the scheme's exact flux: a plane wave on a silicon film at oblique incidence, s and p, reflects as the exact transfer matrices say at second order, to 4.6e-5 at 2.5 nm; the flux is conserved to 2e-14; uniform along z it is the 2D solver to 2e-13. Sparse direct only: 192 k unknowns (40³ cells) take 66 s and 28 GB.)*
- [x] **Ports:** mode sources and forward/backward separation by mode projection; S-parameters and flux. *(In 2D: the grid's own port modes (second order against the exact slab), one-way total-field/scattered-field sources (Rumpf 2012), mode amplitudes by projection with the operator's orthogonality, and a power-normalized S-matrix: a straight guide transmits e^(iβL) to 1e-13, and S21 = S12 to 1e-14 through a step.)*
- [x] **Solvers:** sparse direct (faer) with cached symbolic factorization; iterative for 3D (Shin & Fan 2013). *(Sparse direct with the symbolic analysis reused across a sweep: at 150 k unknowns the analysis is 55 of 800 ms, the numerical factorization the rest, and a further source 80 ms; a nested-dissection ordering would cut the factorization. Iterative for 3D: QMR (Freund & Nachtigal 1991, without look-ahead) on the curl-curl operator or on Shin & Fan's (their Eq. 7, s = −1), the direct solver's field to 1e-10, and their Fig. 3 reproduced: the 0.707 stagnation, 114 and 79 iterations against their 114 and 77. In 3D see the next item.)*
- [x] **Shin & Fan's 3D speed-up:** find why their operator slows silicon against vacuum and PMLs (1.6–5× more QMR iterations, contrary to their Fig. 9). *(Our ε⁻¹ sat at the edge, outside the gradient; their Eq. 7 puts it at the node, inside. There, their operator needs 1.2–2.2× fewer iterations to its own residual in all seven of our 40³ cases, silicon and PMLs included, as their Fig. 9 says; their Diel at 864 k unknowns still takes 4 703 against 2 745. But by the field's error against a converged reference, the curl-curl operator is as fast or faster in every case: the transformed residual mostly measures the source's ∇∇·J. So CurlCurl stays the default. The preconditioner moved to 0.4, with 3D ports.)*
- [x] **Adjoint gradients,** checked against finite differences (Veronis 2004; Lalau-Keraly 2013; Hughes 2018). *(In 2D: the gradient of a port mode's power with respect to every cell's permittivity, for both polarizations, from one transposed back-substitution; against fourth-order finite differences to 1.4e-7 and 8e-8, the differences' own round-off.)*
- [x] **Dielectric corners** in the mode solver: high-accuracy finite-difference equations at interfaces and corners (Hadley 2002, parts I and II), moved from 0.2. *(`mode::hadley`: his Bessel-series equations at uniform, interface and corner nodes on the full-vector solver's grid, the nonlinear eigenproblem by nonlinear inverse iteration (Güttel & Tisseur 2017). Sixth order on his uniform and interface test problems; about second order on his four corner problems, where the standard scheme manages about first: 2e-7 to 5e-7 at a 7.8 nm grid against 9e-6 to 4e-5, following his Figs. 8–11. Uniform grids of lossless isotropic media only, as he derives them.)*
- [x] **Studio:** FDFD fields on a plane in the 3D view, and S-parameters as they arrive. *(An `"fdfd"` job: a device on one layer seen from above, its permittivity by the effective index method, ports with windows for guides side by side, a wavelength sweep; the field drawn on the layer in 3D, the S-matrix and |S_q1|² in 2D; `jobs/mmi-fdfd.toml`, a 1×2 splitter.)*
- [x] **Validation:** reciprocity, energy conservation, analytic cases, agreement with the mode solvers. *(In 2D: reciprocity, energy conservation, a slab's reflection against the exact transfer matrices, the PML's reflection, the port modes against the exact slab, and the adjoint gradients against finite differences. In 3D: energy conservation, a film's reflection at oblique incidence against the exact transfer matrices, the PML's reflection, the 2D solver on a structure uniform along z, QMR against the direct solver, and Shin & Fan's Fig. 3. Reciprocity in 3D comes with 3D ports in 0.4, and agreement with FDTD in 0.5, once FDTD exists.)*
### 0.3.1: The studio as a workspace
- [x] **Everything inside the program:** the job files of `jobs/` and the thirteen published results of `examples/` built in, each run from the window, with each line of an example checked against its paper as it prints; the validation report, and running it on this machine.
- [x] **Jobs built in the window,** with no TOML needed, moved from 0.4: a form for each kind, the device drawn from above as you type (shapes, ports, the PML, the cut), the TOML beside it and editable, and the library checking the job as it changes (`job::check`); saved to the workspace's `jobs/`.
- [x] **Spectra and run comparison,** moved from 0.4: plots with read-outs, and the sweeps and spectra of several runs on shared axes.
- [x] **A modern window:** Svelte, Tailwind CSS and daisyUI; dark and light themes; a home page, a tour, tips, tooltips and a Ctrl+K palette; settings, and a workspace folder.
- [x] **Updates from inside the program:** signed releases with an update manifest; an installed copy offers a new release and installs it with one click (tested from a 0.3.0 installer to 0.3.1).
- [x] **Code signing, ready:** Windows (Certum's open-source certificate through ssign) and macOS (Developer ID and notarization) in the release workflow, each from when its secrets are set.
### 0.3.2: The studio, polished
- [x] **Rings:** `Shape::Ring` (a centre line's radius and a waveguide's width) and `[[task.ring]]` in every job kind, through the pictures, the mode solver's cut and FDFD; `strip-and-ring` is a ring resonator now, and `ring-fdfd` a new example, an all-pass ring's spectrum by 2D FDFD (two resonances 47 nm apart, as λ²/(n_g L) says).
- [x] **3D previews:** `job::preview`, the scene a job's run records, without running it; the example cards and the builder show it turning in 3D.
- [x] **A steady 3D view:** a core's faces no longer fight its layer's oxide for the same pixels as the camera turns (polygon offsets, and the clear media in a fixed order).
- [x] **Smaller things:** deleting the open run closes it (and stops it if it runs); plots saved as CSV; Ctrl+S and Ctrl+Enter in the builder; the window keeps its size and place; the open run marked in the list; the validation count on the home page.
### 0.4: Components and circuits
The backbone of a chip: components with ports and several fidelities, connected into circuits that simulate together and are optimized at every level. It needs no new physics, because 0.2 and 0.3 already give modes and S-matrices.
- [ ] **Component model:** ports (each with its mode), parameters, and several fidelities of the same physics: analytic or compact, 2D (effective index), 3D, and measured. Each carries its error against its source.
- [ ] **Circuits:** a chip is a netlist of components. Its S-matrix comes from one global sparse solve, with Filipsson's sub-network growth (Filipsson 1981) as the reference; reciprocity and passivity are checked.
- [ ] **Circuit adjoint:** a circuit response's gradient with respect to every component parameter, from one transposed solve, as in FDFD.
- [ ] **Optimization at circuit level** through genoxide: couplings, phases, ring tuning, and component parameters.
- [ ] **Compact models** fitted from solver results (rational in wavelength, polynomial in parameters), with their fit error; Touchstone (.sNp) import and export, the "measured" fidelity.
- [ ] **3D FDFD for components:** ports, mode sources and S-matrices in 3D, with the full-vector mode solver's modes, and reciprocity checked; a preconditioner for high-contrast 3D problems (QMR takes thousands of iterations on a silicon guide), so a component's 3D fidelity takes minutes.
- [ ] **First components:** waveguide, bend, directional coupler, MMI, Y-branch, ring (all-pass and add-drop) and MZI, from analytic models and from the 0.2 and 0.3 solvers.
- [ ] **Studio, components and chips** (jobs built in the window, spectra and run comparison came in 0.3.1):
- a component library;
- the chip view, where components are placed and connected.
- [ ] **Validation:**
- analytic MZI and ring responses (Bogaerts 2012), and the free spectral range from n_g;
- reciprocity, and unitarity of lossless netlists;
- the global solve against sub-network growth, to round-off;
- Simphony's SiEPIC MZI against its published INTERCONNECT comparison (Ploeg 2021).
### 0.5: Finite-difference time-domain (FDTD)
- [ ] **Core:**
- the Yee scheme in 2D and 3D (Yee 1966);
- CPML (Roden 2000; the PML of Berenger 1994);
- subpixel smoothing (Farjadpour 2006; Kottke 2008; anisotropic: Oskooi 2009).
- [ ] **Sources:** total-field/scattered-field, mode sources, Gaussian beams and dipoles.
- [ ] **Monitors:** DFT on planes and volumes, flux, mode overlaps; resonances by harmonic inversion (Mandelshtam 1997).
- [ ] **Media:** Bloch-periodic boundaries, and dispersive media by auxiliary differential equations (Drude, Lorentz).
- [ ] **Performance:** a GPU backend (wgpu compute, single precision), with the CPU results as its reference.
- [ ] **Adjoint gradients** in 3D, the imaginary part of the mode included.
- [ ] **Studio:** live field propagation in planes and slices, with monitors.
- [ ] **Validation:**
- Mie scattering (Mie 1908);
- PML reflection;
- the Yee scheme's numerical dispersion against theory;
- Meep on its published cases (Oskooi 2010);
- agreement with FDFD (0.3) on the same structures;
- Liu & Poon 2025's six open PDK devices (MMI, directional coupler, crossing, mode converter, polarization splitter-rotator, ring), with two commercial codes' published results to compare.
### 0.6: Thermal and electro-optic devices
The first active devices. One solver for static problems on the waveguide's cross-section serves heat, electrode fields and RF lines.
- [ ] **Static solver:** Poisson and heat conduction on the cross-section, steady and transient; anisotropic tensors, conductors and contacts, and current continuity for Joule heating, on graded grids. A finite-element solver only if graded finite differences don't converge at electrode edges.
- [ ] **Thermo-optic phase shifters:**
- temperature to index by dn/dT, with provenance (Komma 2012; Frey 2006), and thin-film silicon's conductivity (Ju & Goodson 1999);
- Pπ, the time constant, and the crosstalk between neighbours;
- dynamic thermal compact models for circuits (Coenen 2022), and crosstalk correction posed for genoxide (Gurses 2022).
- [ ] **Pockels modulation:**
- the electro-optic tensor rotated into the waveguide's frame (x-cut and z-cut), and the index change by perturbation theory (Johnson 2002), checked against a full re-solve of the mode;
- one Vπ·L definition, derived and documented, since papers normalize the overlap differently;
- lithium niobate first (tensors: Jazbinšek & Zgonik 2002; dispersion: Zelmon 1997), then barium titanate (a domain-averaged coefficient with provenance and its spread, 200 to over 900 pm/V; Abel 2019) and lithium tantalate (Wang 2024).
- [ ] **Travelling-wave electrodes:**
- quasi-TEM RF index, impedance and loss: conductors by Wheeler 1942 and Holloway & Kuester 1995, dielectrics by their loss tangent;
- a full-wave 2D RF mode with lossy metal, above about 100 GHz;
- the electro-optic frequency response (Ghione 2009; Zhang 2022);
- segmented and capacitively loaded electrodes by ABCD cascade (Kharel 2021; Shin 2005).
- [ ] **Phase-change materials** (Sb₂Se₃, Sb₂S₃, GST): two-state material models with provenance, and the heat solver for switching (Delaney 2020).
- [ ] **Components:** the thermo-optic phase shifter and the thin-film lithium niobate Mach–Zehnder modulator, each at analytic, 2D and measured fidelity.
- [ ] **Studio:** temperature and electrode-field views on the cross-section; Vπ·L and bandwidth sweeps.
- [ ] **Validation:**
- analytic: the parallel plate; coplanar lines by conformal mapping (Ghione & Naldi 1984); a line heat source above a substrate, by images; heat conduction in a slab; the uniform-field electro-optic slab;
- heaters: Jacques 2019 (Pπ 23.9 and 25.5 mW, time constants 10.2 and 5.8 µs, measured crosstalk) and Harris 2014 (24.77 mW, 2.69 µs);
- thin-film lithium niobate: Wang 2018 (1.8 V·cm), He 2019 (2.2 and 2.5 V·cm), Zhang 2022 (2.3 V·cm; RF index, impedance and loss measured to 325 GHz; 170 GHz), Kharel 2021's electrode table, Valdez 2023 (0.8 V·cm at 784 nm);
- barium titanate: Eltes 2019 (0.2 V·cm) and Deng 2026 (0.7 V·cm);
- the open codes Elmer and openEMS, run as external programs, once their licences are checked.
### 0.7: Inverse design
- [ ] **Adjoint gradients** for every solver (Lalau-Keraly 2013; nonlinear: Hughes 2018); forward-mode where it pays (Hughes 2019).
- [ ] **Density topology optimization:**
- filtering and projection with continuation (Wang 2011; Jensen 2011; Christiansen 2021);
- robust eroded, nominal and dilated designs.
- [ ] **Fabrication constraints:**
- minimum length scales (Zhou 2015; Hammond 2021);
- strict foundry rules (Schubert 2022);
- level sets (Vercruysse 2019).
- [ ] **Subpixel-smoothed projection** (Hammond 2025), which keeps the design differentiable at high β, and **hyperparameter-free length-scale constraints** (Arrieta 2026).
- [ ] **Shape and parametric optimization,** with lithography models inside it (Khan 2024).
- [ ] **The a-posteriori length-scale metric** reported for every design (Chen 2024).
- [ ] **Device and circuit co-design** through the circuit adjoint of 0.4 (Mason 2025).
- [ ] **Optimizers from genoxide:**
- with supplied gradients: Adam and L-BFGS-B;
- constraints: the augmented Lagrangian;
- global, discrete and hyperparameter searches: CMA-ES and genetic algorithms;
- added to genoxide as general methods where it lacks them: the method of moving asymptotes, the standard for topology optimization (MMA: Svanberg 1987; globally convergent: Svanberg 2002), and continuation schedules that keep the optimizer's state across stages;
- large designs (10⁴ to 10⁶ variables) need genoxide's gradient methods to cost O(n) per step.
- [ ] **Pipeline:** explore in 2D, then optimize and verify in 3D.
- [ ] **Studio:** the live optimization dashboard (design, fields, figure of merit, constraints).
- [ ] **Validation,** each in 3D and within stated tolerances:
- Chen et al. 2024's benchmark suite, cross-checked across independent codes;
- Khan 2024's fabrication-aware Y-branch and SWG converter (measured on SiEPIC's process);
- the wavelength demultiplexer (Piggott 2015);
- the polarization beamsplitter (Shen 2015);
- the mode multiplexer (Frellsen 2016);
- the grating coupler (Su 2018);
- foundry-ready designs (Piggott 2020).
### 0.8: Carrier modulators, signals and programmable circuits
- [ ] **Drift-diffusion** on the cross-section: Poisson with electron and hole continuity, Scharfetter–Gummel fluxes (Scharfetter & Gummel 1969), Gummel then Newton iterations (Selberherr 1984), and doping-dependent mobility (Masetti 1983; Caughey & Thomas 1967). Steady state and small signal first; large-signal transients later.
- [ ] **Plasma dispersion:** carriers to Δn and Δα (Soref & Bennett 1987; Nedeljkovic 2011) as a material model with provenance; the junction's C(V) and series resistance; travelling-wave lines loaded by the junction (Patel 2015).
- [ ] **Time-domain circuits:** S-parameters turned into causal, passive pole–residue models by vector fitting (Gustavsen 1999; complex baseband: Ye 2018, 2022), and node-based time stepping (Fiers 2012). Differentiable, so genoxide can optimize end to end.
- [ ] **Signals:**
- PRBS and PAM-n sources;
- modulator large-signal models: the travelling-wave MZM, and rings by coupled-mode theory (Sacher & Poon 2008);
- minimal driver and receiver models (photonoxide isn't a SPICE);
- eye diagrams, extinction ratio and optical modulation amplitude.
- [ ] **Programmable meshes:** Reck, Clements and hexagonal meshes; decomposition; self-configuration (Miller 2013; Hamerly 2022) and error correction (Bandyopadhyay 2021); calibration posed for genoxide.
- [ ] **Components:** the silicon depletion modulator (MZM and ring), and mesh cells.
- [ ] **Studio:** eye diagrams and time traces; mesh programming.
- [ ] **Validation:**
- the abrupt p–n junction's depletion width and C(V), in closed form;
- Yu 2012 (lateral junction, 0.44 pF/mm; Vπ·L);
- Patel 2015 (3.2 V·cm, 41 GHz);
- a ring's step response against coupled-mode theory;
- Ye 2022's time-domain examples;
- Reck and Clements decompositions to round-off; Bandyopadhyay 2021's and Hamerly 2022's error scaling;
- DEVSIM for drift-diffusion, run as an external program, once its licence is checked.
### Decisions for the circuit and active milestones
Taken with the survey of October 2026:
1. **One Vπ·L definition,** from perturbation theory, checked against a full re-solve of the mode with the perturbed tensor.
2. **Finite differences first** for the static problems, on graded grids, checked against closed forms at electrode edges; our own finite elements only if they don't converge there.
3. **RF lines quasi-TEM first,** with a full-wave lossy-metal mode above about 100 GHz.
4. **Drift-diffusion steady state and small signal first;** large-signal transients later.
5. **Time-domain circuits differentiable** from the start.
6. **Open codes as cross-code references** (Elmer, DEVSIM, openEMS, Simphony), run as external programs after their licences are checked. Commercial tools can't be run under our rules.
7. **Variable material data ships with its spread:** barium titanate's coefficient, and the drift and relaxation of lithium niobate's response (results labelled valid above about 1 MHz until it is modelled; Holzgrafe 2024).
### 0.9: Layout and PDK
- [ ] **Layout:** polygons and booleans, cell hierarchy and references.
- [ ] **GDSII and OASIS,** read and write (our own implementation). OASIS keeps curved, inverse-designed layouts small.
- [ ] **Clean geometry:** curves turned into polygons within a stated tolerance, snapped to the database grid, split under the format's vertex limit, and merged.
- [ ] **Parametric cells** with ports; waveguide routing with bends and tapers.
- [ ] **PDK format:** layer stack, layer map, design rules, cross-sections and process corners.
- [ ] **DRC:** width, space, enclosure, minimum area, acute angles and curvature.
- [ ] **Open PDKs:** SiEPIC EBeam (MIT; 220 nm SOI, electron-beam lithography; Hammood 2025) and Cornerstone (220/340/500 nm SOI and SiN).
- [ ] **Studio:** the layout viewer, with DRC markers.
- [ ] **Validation:**
- byte-for-byte GDSII and OASIS round trips;
- our DRC results match KLayout's on the PDKs' own rule decks (KLayout run as an external program).
### 0.10: Tape-out
How a design reaches a foundry. Fabrication is almost always a multi-project wafer (MPW) run: many designs share one wafer, on a fixed schedule with a submission deadline.
- [ ] **Submission package:**
- the layout in GDSII or OASIS, on the run's layer map;
- the PDK's black-box cells placed but never edited, so the foundry can replace them with its own layout after submission;
- everything inside the run's design area.
- [ ] **Floorplan and test structures:**
- inputs and outputs a fibre array can reach;
- loopback structures that take the coupling loss out of measurements;
- labels for automated measurement where the run uses them.
- [ ] **Checks before submission:**
- our DRC;
- sign-off with the foundry's own rule deck (KLayout, run as an external program);
- connectivity: every port connected and no open waveguide ends.
- [ ] **Design record** next to the layout, for us rather than the foundry: simulated spectra, process corners, the grid each number came from, and what to measure.
- [x] **Runs:**
- **SiEPIC openEBL** (fabricated by Applied Nanotools; 220 nm SOI, one full etch, electron-beam lithography, oxide cladding): GDSII or OASIS submitted as a GitHub pull request, with automated DRC and functional checks, and remote testing (Hammood 2025). The first target.
- **Cornerstone** (220/340/500 nm SOI, SiN): GDSII.
- **Runs under NDA** (for example AMF, imec, GlobalFoundries, IHP, CEA-Leti and LioniX, through Europractice): the user loads the foundry's PDK locally in our PDK format. Their rules and cells are never in this repository.
- [ ] **Measurements back:** import measured spectra and compare them with the prediction. The comparison becomes part of the validation report.
- [ ] **Studio:** the tape-out view (floorplan, DRC markers, submission checklist).
- [ ] **Validation:**
- a submission accepted by openEBL's automated checks;
- a fabricated device measured and compared with its prediction.
### 0.11: Fabrication realism
- [ ] **Process variation:** width bias, film thickness and sidewall angle; corners and Monte Carlo; yield.
- [ ] **Lithography and etch proxies** (blur and threshold), calibrated against published measurements where they exist. Machine-learned fabrication predictors (Gostimirovic 2022) are for comparison only.
- [ ] **Robust design** across corners.
- [ ] **Fabrication report** per design: nominal, corners and spread, and the design rules it was checked against.
- [ ] **Circuit variability:** location-correlated Monte Carlo from wafer maps (Lu 2017), and polynomial chaos (Weng 2015; stochastic PDKs: Waqas 2018), which needs only deterministic solves.
### 0.12: Semi-analytic methods
- [x] **Transfer matrix method:** thin films and Bragg stacks. *(Done in 0.3: `Multilayer::reflection`, Chilwell & Hodgkinson's Eqs. 13–16, against Fresnel and the quarter-wave mirror's closed form to 1e-12.)*
- [ ] **RCWA:** the stable formulation (Moharam 1995) with Li's factorization rules (Li 1996); compared against S4 (Liu 2012).
- [ ] **Eigenmode expansion,** with PML (Bienstman 2001).
- [ ] **Beam propagation method:** wide-angle, Padé (Hadley 1992).
- [ ] **Validation:** Bragg mirrors analytically, gratings against published results, and EME against FDTD on tapers.
### 0.13: Device library
- [ ] **Validated devices,** each a component with its source paper, its fidelities and its validation:
- strip and rib waveguides;
- bends and tapers;
- Y-branch (Zhang 2013);
- MMI (Soldano 1995);
- directional couplers;
- rings (Bogaerts 2012);
- MZIs;
- grating couplers (Vermeulen 2010; Su 2018);
- AWGs;
- demultiplexers.
- [ ] **Studio:** the device catalogue in the component library.
### 0.14: Periodic structures and nanophotonics
- [ ] **Photonic band structures:** plane-wave expansion, block-iterative (Johnson 2001).
- [ ] **Photonic-crystal waveguides and cavities** (Q factors by harmonic inversion).
- [ ] **Metasurfaces:** RCWA, and the locally periodic approximation.
- [ ] **Plasmonics** with dispersive FDTD.
- [ ] **Mie and T-matrix** scattering.
### 0.15: Nonlinear and fiber optics
- [ ] **χ(2) and χ(3)** in FDTD: second-harmonic generation, Kerr, four-wave mixing.
- [ ] **Coupled-mode theory.**
- [ ] **Fiber modes,** exact for step index; the nonlinear Schrödinger equation by split-step; supercontinuum.
- [ ] **Kerr microcombs:** the Lugiato–Lefever equation by split-step, fed by the mode solver's dispersion (Lugiato & Lefever 1987; Kippenberg 2018); validated on the analytic soliton and Coen 2013's octave comb, against pyLLE (Moille 2019).
### 0.16: Beyond
- [ ] **Quantum photonics:** linear optical circuits and their statistics.
- [ ] **Ray optics.**
- [ ] **Further domains:** oxiphoton's 63 modules are the long-term map of the field. Each domain enters only with its validation.
### Throughout
- **Studio:** every new solver gets its live view the same release, and the workspace grows a step per milestone:
- 0.4: jobs built in the window, the component library and the chip view;
- 0.5: live field propagation;
- 0.6: temperature and electrode-field views;
- 0.7: the optimization dashboard;
- 0.8: eye diagrams and mesh programming;
- 0.9: the layout view.
- **Performance:** criterion benchmarks, with regression gating in CI.
- **Docs:** a theory page per method.
### 1.0: Stable
- **Stability:** API review, semver guarantees, MSRV policy.
- **Validation report:** published (see below).
- **Book:** a guide per device type, from a first simulation to a submitted and measured chip.
## Validation
Every solver is checked on three tiers. The results are collected in a report that CI regenerates:
1. **Analytic:**
- Fresnel coefficients;
- slab waveguide modes;
- Bragg stacks;
- Mie scattering;
- PML reflection theory;
- the Yee scheme's numerical dispersion;
- step-index fibre modes;
- MMI self-imaging lengths;
- ring free spectral range from n_g;
- Kramers–Kronig consistency of the material models;
- coplanar lines by conformal mapping;
- the abrupt p–n junction;
- heat conduction from a line source.
2. **Cross-code:** the same structure at the same resolution in Meep, MPB, S4, Ceviche and oxiphoton. GPL codes run only as external programs, in a separate harness.
3. **Published devices:**
- the inverse-designed devices above (Piggott 2015, Shen 2015, Frellsen 2016, Su 2018, Piggott 2020);
- classic devices (Y-branch, MMI, rings, grating couplers);
- active devices: Jacques 2019's and Harris 2014's heaters, thin-film lithium niobate modulators (Wang 2018, He 2019, Zhang 2022, Kharel 2021), and Yu 2012's and Patel 2015's silicon modulators;
- Chen et al. 2024's inverse-design benchmark suite;
- measured data: our own devices fabricated on openEBL, and published measurements where they exist (Hammood 2025).
Each entry states its tolerance, grid, run time, and the source it is compared with.
## Benchmarks
- **Codes:** Meep, MPB, S4, Ceviche, EMEpy and oxiphoton. Commercial and cloud solvers aren't benchmarked, because we can't run them under the same conditions.
- **Problems:** the validation cases above, from a strip-waveguide mode to a 3D device optimization.
- **Metrics:**
- time to a converged answer at equal accuracy;
- throughput (cell-updates per second for FDTD, solves per second for FDFD);
- scaling with threads;
- peak memory;
- for the GPU, speedup over the CPU at equal results.
## Not planned
- **Python bindings:** photonoxide is Rust only.
- **A hosted or cloud service.**
- **Code ported from GPL projects:** they serve only as external references.
- **Foundry PDKs under NDA in the repository:** users load their own through the PDK format.
- **Results without validation,** in the docs or anywhere else.
## References
Every reference below was checked against its DOI.
**FDTD and boundaries**
- K. Yee, IEEE Trans. Antennas Propag. 14, 302 (1966). [10.1109/TAP.1966.1138693](https://doi.org/10.1109/TAP.1966.1138693)
- J.-P. Berenger, J. Comput. Phys. 114, 185 (1994). [10.1006/jcph.1994.1159](https://doi.org/10.1006/jcph.1994.1159)
- J. A. Roden, S. D. Gedney, Microw. Opt. Technol. Lett. 27, 334 (2000). [10.1002/1098-2760(20001205)27:5<334::AID-MOP14>3.0.CO;2-A](https://doi.org/10.1002/1098-2760(20001205)27:5%3C334::AID-MOP14%3E3.0.CO;2-A)
- A. Farjadpour et al., Opt. Lett. 31, 2972 (2006). [10.1364/OL.31.002972](https://doi.org/10.1364/OL.31.002972)
- C. Kottke, A. Farjadpour, S. G. Johnson, Phys. Rev. E 77, 036611 (2008). [10.1103/PhysRevE.77.036611](https://doi.org/10.1103/PhysRevE.77.036611)
- A. Oskooi, C. Kottke, S. G. Johnson, Opt. Lett. 34, 2778 (2009). [10.1364/OL.34.002778](https://doi.org/10.1364/OL.34.002778)
- A. Oskooi et al., Comput. Phys. Commun. 181, 687 (2010), Meep. [10.1016/j.cpc.2009.11.008](https://doi.org/10.1016/j.cpc.2009.11.008)
- V. A. Mandelshtam, H. S. Taylor, J. Chem. Phys. 107, 6756 (1997). [10.1063/1.475324](https://doi.org/10.1063/1.475324)
**Modes, periodic structures and semi-analytic methods**
- E. A. J. Marcatili, Bell Syst. Tech. J. 48, 2071 (1969). [10.1002/j.1538-7305.1969.tb01166.x](https://doi.org/10.1002/j.1538-7305.1969.tb01166.x)
- A. B. Fallahkhair, K. S. Li, T. E. Murphy, J. Lightwave Technol. 26, 1423 (2008). [10.1109/JLT.2008.923643](https://doi.org/10.1109/JLT.2008.923643)
- G. R. Hadley, J. Lightwave Technol. 20, 1210 (2002), part I. [10.1109/JLT.2002.800361](https://doi.org/10.1109/JLT.2002.800361)
- G. R. Hadley, J. Lightwave Technol. 20, 1219 (2002), part II: dielectric corners. [10.1109/JLT.2002.800371](https://doi.org/10.1109/JLT.2002.800371)
- Y. Saad, *Numerical Methods for Large Eigenvalue Problems*, 2nd ed., SIAM (2011). [10.1137/1.9781611970739](https://doi.org/10.1137/1.9781611970739)
- S. G. Johnson, J. D. Joannopoulos, Opt. Express 8, 173 (2001), MPB. [10.1364/OE.8.000173](https://doi.org/10.1364/OE.8.000173)
- M. G. Moharam et al., J. Opt. Soc. Am. A 12, 1068 (1995). [10.1364/JOSAA.12.001068](https://doi.org/10.1364/JOSAA.12.001068)
- L. Li, J. Opt. Soc. Am. A 13, 1870 (1996). [10.1364/JOSAA.13.001870](https://doi.org/10.1364/JOSAA.13.001870)
- V. Liu, S. Fan, Comput. Phys. Commun. 183, 2233 (2012), S4. [10.1016/j.cpc.2012.04.026](https://doi.org/10.1016/j.cpc.2012.04.026)
- P. Bienstman, R. Baets, Opt. Quantum Electron. 33, 327 (2001). [10.1023/A:1010882531238](https://doi.org/10.1023/A:1010882531238)
- G. R. Hadley, Opt. Lett. 17, 1426 (1992). [10.1364/OL.17.001426](https://doi.org/10.1364/OL.17.001426)
- G. Mie, Ann. Phys. 330, 377 (1908). [10.1002/andp.19083300302](https://doi.org/10.1002/andp.19083300302)
**Materials and silicon photonics**
- H. H. Li, J. Phys. Chem. Ref. Data 9, 561 (1980). [10.1063/1.555624](https://doi.org/10.1063/1.555624)
- I. H. Malitson, J. Opt. Soc. Am. 55, 1205 (1965). [10.1364/JOSA.55.001205](https://doi.org/10.1364/JOSA.55.001205)
- K. Luke et al., Opt. Lett. 40, 4823 (2015). [10.1364/OL.40.004823](https://doi.org/10.1364/OL.40.004823)
- M. N. Polyanskiy, Sci. Data 11, 94 (2024), the refractiveindex.info database. [10.1038/s41597-023-02898-2](https://doi.org/10.1038/s41597-023-02898-2)
- R. Soref, B. Bennett, IEEE J. Quantum Electron. 23, 123 (1987). [10.1109/JQE.1987.1073206](https://doi.org/10.1109/JQE.1987.1073206)
- L. Chrostowski, M. Hochberg, *Silicon Photonics Design*, Cambridge University Press (2015). [10.1017/CBO9781316084168](https://doi.org/10.1017/CBO9781316084168)
- W. Bogaerts et al., Laser Photonics Rev. 6, 47 (2012). [10.1002/lpor.201100017](https://doi.org/10.1002/lpor.201100017)
- W. Bogaerts, L. Chrostowski, Laser Photonics Rev. 12, 1700237 (2018). [10.1002/lpor.201700237](https://doi.org/10.1002/lpor.201700237)
- L. B. Soldano, E. C. M. Pennings, J. Lightwave Technol. 13, 615 (1995). [10.1109/50.372474](https://doi.org/10.1109/50.372474)
- Y. Zhang et al., Opt. Express 21, 1310 (2013). [10.1364/OE.21.001310](https://doi.org/10.1364/OE.21.001310)
- D. Vermeulen et al., Opt. Express 18, 18278 (2010). [10.1364/OE.18.018278](https://doi.org/10.1364/OE.18.018278)
- S. Ploeg et al., Comput. Sci. Eng. 23, 65 (2021), Simphony. [10.1109/MCSE.2020.3012099](https://doi.org/10.1109/MCSE.2020.3012099)
- M. Hammood et al., Proc. SPIE (ETOP 2025), SiEPIC openEBL. [10.1117/12.3076810](https://doi.org/10.1117/12.3076810)
**Inverse design and fabrication constraints**
- J. Lu, J. Vučković, Opt. Express 21, 13351 (2013). [10.1364/OE.21.013351](https://doi.org/10.1364/OE.21.013351)
- C. M. Lalau-Keraly et al., Opt. Express 21, 21693 (2013). [10.1364/OE.21.021693](https://doi.org/10.1364/OE.21.021693)
- J. S. Jensen, O. Sigmund, Laser Photonics Rev. 5, 308 (2011). [10.1002/lpor.201000014](https://doi.org/10.1002/lpor.201000014)
- F. Wang, B. S. Lazarov, O. Sigmund, Struct. Multidiscip. Optim. 43, 767 (2011). [10.1007/s00158-010-0602-y](https://doi.org/10.1007/s00158-010-0602-y)
- M. Zhou et al., Comput. Methods Appl. Mech. Eng. 293, 266 (2015). [10.1016/j.cma.2015.05.003](https://doi.org/10.1016/j.cma.2015.05.003)
- A. Y. Piggott et al., Nat. Photonics 9, 374 (2015). [10.1038/nphoton.2015.69](https://doi.org/10.1038/nphoton.2015.69)
- B. Shen et al., Nat. Photonics 9, 378 (2015). [10.1038/nphoton.2015.80](https://doi.org/10.1038/nphoton.2015.80)
- L. F. Frellsen et al., Opt. Express 24, 16866 (2016). [10.1364/OE.24.016866](https://doi.org/10.1364/OE.24.016866)
- L. Su et al., Opt. Express 26, 4023 (2018). [10.1364/OE.26.004023](https://doi.org/10.1364/OE.26.004023)
- S. Molesky et al., Nat. Photonics 12, 659 (2018). [10.1038/s41566-018-0246-9](https://doi.org/10.1038/s41566-018-0246-9)
- T. W. Hughes et al., ACS Photonics 5, 4781 (2018). [10.1021/acsphotonics.8b01522](https://doi.org/10.1021/acsphotonics.8b01522)
- T. W. Hughes et al., ACS Photonics 6, 3010 (2019). [10.1021/acsphotonics.9b01238](https://doi.org/10.1021/acsphotonics.9b01238)
- N. V. Vercruysse et al., Sci. Rep. 9, 8999 (2019). [10.1038/s41598-019-45026-0](https://doi.org/10.1038/s41598-019-45026-0)
- L. Su et al., Appl. Phys. Rev. 7, 011407 (2020), SPINS. [10.1063/1.5131263](https://doi.org/10.1063/1.5131263)
- A. Y. Piggott et al., ACS Photonics 7, 569 (2020). [10.1021/acsphotonics.9b01540](https://doi.org/10.1021/acsphotonics.9b01540)
- K. Svanberg, Int. J. Numer. Methods Eng. 24, 359 (1987). [10.1002/nme.1620240207](https://doi.org/10.1002/nme.1620240207)
- K. Svanberg, SIAM J. Optim. 12, 555 (2002). [10.1137/S1052623499362822](https://doi.org/10.1137/S1052623499362822)
- R. E. Christiansen, O. Sigmund, J. Opt. Soc. Am. B 38, 496 (2021). [10.1364/JOSAB.406048](https://doi.org/10.1364/JOSAB.406048)
- A. M. Hammond et al., Opt. Express 29, 23916 (2021). [10.1364/OE.431188](https://doi.org/10.1364/OE.431188)
- M. F. Schubert et al., ACS Photonics 9, 2327 (2022). [10.1021/acsphotonics.2c00313](https://doi.org/10.1021/acsphotonics.2c00313)
- D. Gostimirovic et al., ACS Photonics 9, 2623 (2022). [10.1021/acsphotonics.1c01973](https://doi.org/10.1021/acsphotonics.1c01973)
**Active photonics, circuits and recent inverse design** (from the survey of October 2026)
- C. Wang et al., Opt. Express 26, 1547 (2018). [10.1364/OE.26.001547](https://doi.org/10.1364/OE.26.001547)
- M. He et al., Nat. Photon. 13, 359 (2019). [10.1038/s41566-019-0378-6](https://doi.org/10.1038/s41566-019-0378-6)
- P. Kharel et al., Optica 8, 357 (2021). [10.1364/OPTICA.416155](https://doi.org/10.1364/OPTICA.416155)
- Y. Zhang et al., Photon. Res. 10, 2380 (2022). [10.1364/PRJ.468518](https://doi.org/10.1364/PRJ.468518)
- F. Valdez, V. Mere, S. Mookherjea, Optica 10, 578 (2023). [10.1364/OPTICA.484549](https://doi.org/10.1364/OPTICA.484549)
- M. Jazbinšek, M. Zgonik, Appl. Phys. B 74, 407 (2002). [10.1007/s003400200818](https://doi.org/10.1007/s003400200818)
- D. E. Zelmon, D. L. Small, D. Jundt, J. Opt. Soc. Am. B 14, 3319 (1997). [10.1364/JOSAB.14.003319](https://doi.org/10.1364/JOSAB.14.003319)
- S. Abel et al., Nat. Mater. 18, 42 (2019). [10.1038/s41563-018-0208-0](https://doi.org/10.1038/s41563-018-0208-0)
- F. Eltes et al., J. Lightwave Technol. 37, 1456 (2019). [10.1109/JLT.2019.2893500](https://doi.org/10.1109/JLT.2019.2893500)
- C. Deng et al., Light Sci. Appl. 15, 21 (2026). [10.1038/s41377-025-02081-9](https://doi.org/10.1038/s41377-025-02081-9)
- C. Wang et al., Nature 629, 784 (2024), lithium tantalate. [10.1038/s41586-024-07369-1](https://doi.org/10.1038/s41586-024-07369-1)
- J. Holzgrafe et al., Opt. Express 32, 3619 (2024). [10.1364/OE.507536](https://doi.org/10.1364/OE.507536)
- G. Ghione, *Semiconductor Devices for High-Speed Optoelectronics*, Cambridge University Press (2009). [10.1017/CBO9780511635595](https://doi.org/10.1017/CBO9780511635595)
- G. Ghione, C. Naldi, Electron. Lett. 20, 179 (1984). [10.1049/el:19840120](https://doi.org/10.1049/el:19840120)
- C. L. Holloway, E. F. Kuester, IEEE Trans. Microw. Theory Tech. 43, 2695 (1995). [10.1109/22.477846](https://doi.org/10.1109/22.477846)
- H. A. Wheeler, Proc. IRE 30, 412 (1942). [10.1109/JRPROC.1942.232015](https://doi.org/10.1109/JRPROC.1942.232015)
- J. Shin et al., IEEE Trans. Microw. Theory Tech. 53, 636 (2005). [10.1109/TMTT.2004.840735](https://doi.org/10.1109/TMTT.2004.840735)
- S. G. Johnson et al., Phys. Rev. E 65, 066611 (2002). [10.1103/PhysRevE.65.066611](https://doi.org/10.1103/PhysRevE.65.066611)
- M. Jacques et al., Opt. Express 27, 10456 (2019). [10.1364/OE.27.010456](https://doi.org/10.1364/OE.27.010456)
- N. C. Harris et al., Opt. Express 22, 10487 (2014). [10.1364/OE.22.010487](https://doi.org/10.1364/OE.22.010487)
- J. Komma et al., Appl. Phys. Lett. 101, 041905 (2012). [10.1063/1.4738989](https://doi.org/10.1063/1.4738989)
- B. J. Frey, D. B. Leviton, T. J. Madison, Proc. SPIE 6273, 62732J (2006). [10.1117/12.672850](https://doi.org/10.1117/12.672850)
- Y. S. Ju, K. E. Goodson, Appl. Phys. Lett. 74, 3005 (1999). [10.1063/1.123994](https://doi.org/10.1063/1.123994)
- D. Coenen et al., IEEE Trans. Compon. Packag. Manuf. Technol. 12, 1350 (2022). [10.1109/TCPMT.2022.3195699](https://doi.org/10.1109/TCPMT.2022.3195699)
- V. Gurses et al., IEEE J. Sel. Top. Quantum Electron. 28, 1 (2022). [10.1109/JSTQE.2022.3189965](https://doi.org/10.1109/JSTQE.2022.3189965)
- M. Delaney et al., Adv. Funct. Mater. 30, 2002447 (2020). [10.1002/adfm.202002447](https://doi.org/10.1002/adfm.202002447)
- D. L. Scharfetter, H. K. Gummel, IEEE Trans. Electron Devices 16, 64 (1969). [10.1109/T-ED.1969.16566](https://doi.org/10.1109/T-ED.1969.16566)
- S. Selberherr, *Analysis and Simulation of Semiconductor Devices*, Springer (1984). [10.1007/978-3-7091-8752-4](https://doi.org/10.1007/978-3-7091-8752-4)
- G. Masetti, M. Severi, S. Solmi, IEEE Trans. Electron Devices 30, 764 (1983). [10.1109/T-ED.1983.21207](https://doi.org/10.1109/T-ED.1983.21207)
- D. M. Caughey, R. E. Thomas, Proc. IEEE 55, 2192 (1967). [10.1109/PROC.1967.6123](https://doi.org/10.1109/PROC.1967.6123)
- M. Nedeljkovic, R. Soref, G. Z. Mashanovich, IEEE Photon. J. 3, 1171 (2011). [10.1109/JPHOT.2011.2171930](https://doi.org/10.1109/JPHOT.2011.2171930)
- H. Yu et al., Opt. Express 20, 12926 (2012). [10.1364/OE.20.012926](https://doi.org/10.1364/OE.20.012926)
- D. Patel et al., Opt. Express 23, 14263 (2015). [10.1364/OE.23.014263](https://doi.org/10.1364/OE.23.014263)
- W. D. Sacher, J. K. S. Poon, Opt. Express 16, 15741 (2008). [10.1364/OE.16.015741](https://doi.org/10.1364/OE.16.015741)
- B. Gustavsen, A. Semlyen, IEEE Trans. Power Deliv. 14, 1052 (1999). [10.1109/61.772353](https://doi.org/10.1109/61.772353)
- Y. Ye et al., Photon. Res. 6, 560 (2018). [10.1364/PRJ.6.000560](https://doi.org/10.1364/PRJ.6.000560)
- Y. Ye et al., J. Lightwave Technol. 40, 7856 (2022). [10.1109/JLT.2022.3206818](https://doi.org/10.1109/JLT.2022.3206818)
- M. Fiers et al., J. Opt. Soc. Am. B 29, 896 (2012). [10.1364/JOSAB.29.000896](https://doi.org/10.1364/JOSAB.29.000896)
- G. Filipsson, 11th European Microwave Conference, 700 (1981). [10.1109/EUMA.1981.332972](https://doi.org/10.1109/EUMA.1981.332972)
- M. Reck et al., Phys. Rev. Lett. 73, 58 (1994). [10.1103/PhysRevLett.73.58](https://doi.org/10.1103/PhysRevLett.73.58)
- W. R. Clements et al., Optica 3, 1460 (2016). [10.1364/OPTICA.3.001460](https://doi.org/10.1364/OPTICA.3.001460)
- D. A. B. Miller, Photon. Res. 1, 1 (2013). [10.1364/PRJ.1.000001](https://doi.org/10.1364/PRJ.1.000001)
- S. Bandyopadhyay, R. Hamerly, D. Englund, Optica 8, 1247 (2021). [10.1364/OPTICA.424052](https://doi.org/10.1364/OPTICA.424052)
- R. Hamerly, S. Bandyopadhyay, D. Englund, Phys. Rev. Appl. 18, 024019 (2022). [10.1103/PhysRevApplied.18.024019](https://doi.org/10.1103/PhysRevApplied.18.024019)
- Z. Lu et al., Opt. Express 25, 9712 (2017). [10.1364/OE.25.009712](https://doi.org/10.1364/OE.25.009712)
- T.-W. Weng et al., Opt. Express 23, 4242 (2015). [10.1364/OE.23.004242](https://doi.org/10.1364/OE.23.004242)
- A. Waqas et al., Opt. Express 26, 5894 (2018). [10.1364/OE.26.005894](https://doi.org/10.1364/OE.26.005894)
- M. Chen et al., J. Opt. Soc. Am. B 41, A161 (2024). [10.1364/JOSAB.506412](https://doi.org/10.1364/JOSAB.506412)
- A. M. Hammond et al., subpixel-smoothed projection, arXiv:2503.20189 (2025).
- R. Arrieta, G. Romano, S. G. Johnson, Struct. Multidiscip. Optim. 69, 210 (2026). [10.1007/s00158-026-04388-6](https://doi.org/10.1007/s00158-026-04388-6)
- S. Khan et al., fabrication-aware inverse design for shape optimization, arXiv:2410.07353 (2024).
- S. Mason et al., co-optimized inverse-designed WDMs, arXiv:2509.07233 (2025).
- Z. Liu, J. K. S. Poon, Lumerical FDTD and Tidy3D compared, arXiv:2506.16665 (2025).
- L. A. Lugiato, R. Lefever, Phys. Rev. Lett. 58, 2209 (1987). [10.1103/PhysRevLett.58.2209](https://doi.org/10.1103/PhysRevLett.58.2209)
- T. J. Kippenberg et al., Science 361, eaan8083 (2018). [10.1126/science.aan8083](https://doi.org/10.1126/science.aan8083)
- S. Coen et al., Opt. Lett. 38, 37 (2013). [10.1364/OL.38.000037](https://doi.org/10.1364/OL.38.000037)
- G. Moille et al., J. Res. NIST 124, 124012 (2019), pyLLE. [10.6028/jres.124.012](https://doi.org/10.6028/jres.124.012)