Why dphox?#

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