Skip to content

solgaardlab/dphox

Repository files navigation

DPhox

dphox

Build Status Docs PiPy CodeCov

DPhox 0.0.8

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:

  1. Photonic design
  2. Fundamentals: the core classes dp.Pattern and dp.Curve and various transformations / examples.
  3. Design workflow: concepts for designing a chip in an automated fabless workflow.

Why dphox?

Gallery

Advantages of dphox

  • Efficient raw numpy implementations for polygon and curve transformations
  • Dependence on shapely in favor of pyclipper (less actively maintained).
    • dphox.Curve ~ shapely.geometry.MultiLineString
    • dphox.Pattern ~ shapely.geometry.MultiPolygon
  • The klamath module provides a clean implementation of GDS I/O
  • Uses trimesh for 3D viewing/export, blender figures at your fingertips!
  • Plotting using holoviews and bokeh, allowing zoom in/out in a notebook.
  • More intuitive representation of GDS cell hierarchy (via Device).
  • Interface to photonic simulation (such as simphox and MEEP).
  • Inverse-designed devices may be incorporated via the Pattern.replace function.
  • Read and interface with foundry PDKs automatically, even if provided via GDS.

Inspirations for dphox

  • phidl: path calculations, Inkscape-like maneuverability, functional interface.
  • nazca: ports, cell references, and routing.
  • gdspy: parametric implementations, the OG of python GDS automation

Installation

Getting started

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]

Development

When developing, install in your python environment using:

git clone git@github.com: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.

Requirements

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.

Optional requirements

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.