The dphox module is yet another Python 3-based design tool for automating photonic device development.
Note: This is a work in progress. Expect features in the code to be unstable until version 0.1.0. Note the low
test coverage, which will be improved in coming weeks.
The documentation contains the API reference for dphox
and the tutorials you need to get started.
We also provide a number of Colab tutorials to introduce the basics:
- Photonic design
- Fundamentals: the core classes
dp.Patternanddp.Curveand various transformations / examples. - Design workflow: concepts for designing a chip in an automated fabless workflow.
- Efficient raw
numpyimplementations for polygon and curve transformations - Dependence on
shapelyin favor ofpyclipper(less actively maintained).dphox.Curve~shapely.geometry.MultiLineStringdphox.Pattern~shapely.geometry.MultiPolygon
- The
klamathmodule provides a clean implementation of GDS I/O - Uses
trimeshfor 3D viewing/export,blenderfigures at your fingertips! - Plotting using
holoviewsandbokeh, allowing zoom in/out in a notebook. - More intuitive representation of GDS cell hierarchy (via
Device). - Interface to photonic simulation (such as
simphoxandMEEP). - Inverse-designed devices may be incorporated via the
Pattern.replacefunction. - Read and interface with foundry PDKs automatically, even if provided via GDS.
phidl: path calculations, Inkscape-like maneuverability, functional interface.nazca: ports, cell references, and routing.gdspy: parametric implementations, the OG of python GDS automation
You may use pip to install dphox the usual way:
pip install dphox
To install all of the dependencies for visualizations as in the above demo, instead run:
pip install dphox[all]
When developing, install in your python environment using:
git clone [email protected]:solgaardlab/dphox.git
pip install -e dphox
You can then change dphox if necessary. When importing dphox, you can now treat it as any other module. No filepath
setting necessary because dphox will be in your environment's site-packages directory.
You will need python>=3.9 as well as the following (note these requirements are automatically installed):
numpy==1.21.2
scipy==1.7.1
shapely==1.7.0
klamath>=1.2
These will be installed via pip automatically if not already installed.
The following modules are nice-to-have but optional, and are not included in default installation:
bokeh==2.2.3
holoviews==1.14.6
trimesh==3.9.30
triangle==20200424
matplotlib==3.4.3
networkx
You can also install libraries such as nazca and gdspy, which can be converted to
dphox objects.
