A curated list of awesome resource for photonic engineers, physicists and hobbyists
Most tools in this list are written or have a python interface, which require some basic knowledge of python. If you are new to python you can find many books, YouTube videos and courses available online. If you are new to Git and Python I recommend reading this article
- layout: define the geometrical shapes that guide the light.
- simulation: simulate how photons propagate, and optimize the geometrical shapes
- lab automation: Control instruments in the lab
- data analysis
- visualization
- electronics
- other links
-
gdsfactory code - includes plugins to other tools.
-
gdstk - faster than gdspy (from same author)
-
- phidl - made for superconducting detectors
- picwriter
- BerkeleyPhotonicsGenerator
- Ayar cell generator
-
klayout - layout viewer with python API
- kfactory
- zero-pdk - klayout pure python pdk.
- flayout
- xsection, klayout-ipc, klayout-gadgets, lytest, lymask
- KQcircuits - Quantum circuits pdk.
- siepic-tools - code driven PCells and GUI driven layouts.
- siepic-ebeam-pdk
- gds3xtrude
- spicex: netlist extraction
- simplify polygons
- klayout python
- klayout cross-section in python - Port from ruby to python to xsection macro
-
shapely based tools
- gdshelpers - includes superconducting detectors.
- dphox - includes 3D MEMs structures
-
qiskit-metal - IBM superconducting based qubits.
-
layout viewers
-
mode solver:
-
Finite Element
-
Finite Difference
-
-
component design:
- FDTD - Finite differences time domain.
- khronos
- fdtdx
- Luminescent
- fdtdz
- meep FDTD
- emopt FDTD
- Python 3D FDTD simulator - Written in PyTorch.
- tidy3d client docs and code - Server is propietary.
- GSvit - GPU support
- ARTEMIS - High-performance FDTD solver coupled with magnetization dynamics (LLG), GPU-accelerated for microelectronics and superconducting devices
- FDFD - Finite differences frequency domain.
- EME - Eigen mode expansion.
- FEM:
- gyptis - based on FEniCS, automatic differentiation with dolfin-adjoint
- RCWA:
- Bempp - Open-source computational boundary element platform to solve electrostatic, acoustic and electromagnetic problems
- OpenModes - Mode solver for open electromagnetic structures based on the method of moments (MOM)
- Sipkit - A JAX-compatible toolkit providing fundamental waveguide and material properties to aid in the design of silicon photonic components.
- pyGDM - Green dyadic method for nanophotonics, including evolutionary optimization
- SiPANN (neural networks for photonics component design)
- Lightening-Transformer: A Dynamically-operated Optically-interconnected Photonic Transformer Accelerator
- inverse design
- glonet: global optimization based on generative neural networks
- wavetorch
- lumopt
- angler - Frequency-domain photonic simulation and inverse design optimization for linear and nonlinear devices.
- SPLayout code docs
- ceviche-challenges code - Photonic inverse designs based on the FDFD simulator Ceviche
- NIDN - Inverse design of metamaterials, photonic crystals, ... using PyTorch
- A Neural Operator-based Surrogate Solver for Free-Form Electromagnetic Inverse Design [Paper] [Github]
- TCAD tcad repos TCAD Overview spreadsheet here
- devsim - Semiconductor Device Simulator
- BOSIM
- Suprem4 - Process simulator (no python)
- pisces - Poison and continuity equation solver (no python)
- TCAD docker containers
- Charon - Paralell TCAD simulator. GitHub mirror
- ray tracing:
- ray tracing
- rayopt
- rayoptics - Optical design and analysis in Python
- optiland - Comprehensive optical design with GPU-accelerated ray tracing via PyTorch
- pyrate - Optical raytracing based on Python
- scattering tools
- adaptive optics
- multisolvers
- transfer matrix
- FDTD - Finite differences time domain.
-
circuit simulation:
- Sparameter linear solvers
- SAX code and docs - Differentiable circuit solver.
- lekkersim
- simphony (linear circuit solver)
- photontorch docs - code - Includes time domain.
- opics
- SignalIntegrity (linear circuit simulation)
- scikit-rf RF simulator
- pyFDA filter design code and docs
- Optical communications
- optiCommPy
- QAMpy - DSP chain for simulation and equalisation of optical communications signals
- RF photonic link analysis
- Spice
- Sparameter linear solvers
-
nonlinear schrodinger equation (NLSE): calculate the propagation of pulses along a fiber/waveguide in the presence of dispersion and nonlinearity.
- Laserfun aims for simplicity
- PyNLO more capable, but unmaintained
- PyNLO fork includes Chi2 simulation capabilities
-
Lugiato Lefever Equation (LLE) to calculate propagation in ring resonators:
-
material database
-
lithography simulation
-
free space
- diffractsim
- waveprop
- lightpipes
- TorchOptics
- POPPY - Physical Optics Propagation in Python for diffraction modeling
- prysm - Physical optics with integrated modeling, phase retrieval, segmented systems
- HCIPy - High Contrast Imaging for Python
- Poke - Polarization ray tracing and Gaussian beamlet module
- parasitic extraction
-
backend:
-
lab automation repos:
- pymeasure
- autolab
- autosweep docs
- measurement sequencer
- drivers
- https://github.com/AlexShkarin/pyLabLib
- lightlab docs
- instrumental
- pyrolab
- LabEXT docs and code
- SiePIC lab
- hardware testing framework - Google
- pic-wafer
- laval python lab
- labrad
- autogator - camera-assisted motion control and experiment configuration of photonic integrated circuit interrogation platforms.
- pandas
- dask
- wafermap
- wafer data
- Webapp
-
schematic capture:
- skidl: netlist formatting, writing, and reading
- elkjs code demo - Javascript schematic editor.
-
layout
-
circuit simulation
-
open source pdks
-
transmission line wcalc