Skip to main content

SiPhoPDK for PhotonForge

SiPhoPDK is a synthetic 220 nm silicon-on-insulator process for the O-band, with a silicon nitride layer, germanium photodetectors, a TiN heater and two metal layers. It is a demonstration PDK for PhotonForge: it holds the technology, 27 parametric cells with offline models, a KLayout DRC deck and a KLayout LVS runset.

SiPhoPDK is not a foundry PDK. Every number in it is either published physics, taken from an open source, or invented for teaching. Do not use it for a tape-out.

Installation

Installation via pip:

pip install siphopdk-forge

The package needs PhotonForge 2.0 or newer. DRC and LVS also need the KLayout application, version 0.29.12 or newer.

Usage

Set the SiPhoPDK technology as the default:

import photonforge as pf
import siphopdk

tech = siphopdk.siphopdk()
pf.config.default_technology = tech

The siphopdk function creates a parametric technology. Its parameters set the layer thicknesses, the etch sidewall angle and the mask bias, for example siphopdk.siphopdk(si_thickness=0.218).

The cells are in the component submodule:

print(siphopdk.component_names)

ring = siphopdk.component.micro_ring_modulator(ring_radius=12.0)

Each function has its own documentation:

help(siphopdk.siphopdk)

help(siphopdk.component.micro_ring_modulator)

To show the extruded cross section of the stack:

siphopdk.plot_cross_section()

When the package is installed, the component library of the PhotonForge GUI lists SiPhoPDK with all its cells.

examples/getting_started.ipynb installs SiPhoPDK, shows the technology and the cells, makes and simulates an MZI, runs DRC and LVS on it and opens it in the GUI.

Port specifications

Name Waveguide
SI_STRIP_O Si strip, 400 nm, TE
SI_STRIP_O_TM Si strip, 400 nm, TM
SI_RIB_O Si rib, 500 nm on a 90 nm slab, TE
SI_WIDE_O Si strip, 1000 nm, fundamental TE mode
SI_MM_O Si multimode strip, 2000 nm
SIN_STRIP_O SiN strip, 1000 nm, TE

Cells

Every cell is a parametric component with a model that runs on your computer: an analytic model, a ring model, or a data model built from synthetic measurement data. No cell needs a simulation before you can use it in a circuit.

Cell Description Ports Terminals
straight Straight waveguide P0, P1
bend Euler-assisted circular bend P0, P1
taper Linear width taper between two port specifications P0, P1
strip_to_rib Strip-to-rib transition P0, P1
crossing Waveguide crossing P0 to P3
y_branch 1x2 splitter P0 to P2
mmi_2x2 2x2 multimode interference coupler, 50:50 P0 to P3
directional_coupler Symmetric directional coupler P0 to P3
tap Monitor tap, 1 % to the drop arm P0 to P3
termination Radiative termination P0
grating_coupler Focusing grating coupler P0, FIBER
sin_edge_coupler Inverse-taper edge coupler on SiN P0, FACET
si_to_sin Silicon to SiN interlayer transition P0, P1
spiral_delay Double-spiral delay line of exact length P0, P1
contra_dc Contra-directional coupler (Bragg add-drop) P0 to P3
grating_antenna Weak grating emitter for a phased array P0
thermal_phase_shifter Strip waveguide with a TiN heater P0, P1 HTRP, HTRN
pn_phase_shifter Rib waveguide with a depletion-mode p-n junction P0, P1 ANODE, CATHODE
pin_attenuator Carrier-injection variable optical attenuator P0, P1 ANODE, CATHODE
micro_ring_resonator Ring resonator with a heater P0, P1 HTRP, HTRN
micro_ring_modulator Depletion-mode ring modulator with a heater P0, P1 ANODE, CATHODE, HTRP, HTRN
add_drop_ring Add-drop ring with an optional heater P0 to P3 HTRP, HTRN
add_drop_ring_corner Add-drop ring between a row bus and a column bus P0 to P3 HTRP, HTRN
photodiode Germanium photodiode, lateral p-i-n P0 ANODE, CATHODE
tw_electrode Travelling-wave GSG electrode on M2 SIN, SOUT, 4 grounds
bond_pad Bond pad on M2, with an M1 landing M1, T
via_stack M1 to M2 via stack M1, M2

Design rule check

The DRC deck has 43 rules for width, space, enclosure, placement and area. Each rule in the deck says where its value comes from: the published literature, an open PDK, the physics of the SiPhoPDK stack, or a value chosen for teaching. Run it on a component or on a layout file:

results = siphopdk.drc_check(chip)
print(results.is_clean)
print(results)

siphopdk.DRC_RULES is the path of the deck, rules/siphopdk.drc. Use it with photonforge.drc_check, in the DRC panel of the PhotonForge GUI, or with KLayout directly:

klayout -b -r siphopdk.drc -rd gdsfile=chip.gds -rd resultsfile=chip.lyrdb

Geometry inside the EXCL_DRC layer (95/0) is waived.

Layout versus schematic

The LVS runset extracts the optical and the electrical nets from the layout and compares them with a schematic. PhotonForge writes the schematic from the connections of the component, so a circuit of SiPhoPDK cells and PhotonForge routes is checked with one call:

results = siphopdk.lvs_check(chip)
print(results.verdict)

To check a layout against a different design intent, give that intent as the schematic:

results = siphopdk.lvs_check(layout, schematic=intended_circuit)

siphopdk.LVS_RULES is the path of the runset, rules/siphopdk.lvs. It reads these layers, which every SiPhoPDK cell draws:

Layer Use
DEVREC (100/0) Outline of each cell, which ends at its port planes
PINREC (101/0) A 200 nm box on each optical port
PINREC_E (102/0) A 200 nm box on each electrical terminal
text on 0/0 The name of each port and terminal, on its box

A waveguide outside every outline joins the pins it touches. Only the contact implants, the vias and the two metals conduct: a heater and a p-n junction show as two pins, so a trace that bridges them is reported as a short.

Warnings

The 3D structures that PhotonForge makes from this technology approximate the structures a process would make. Doping profiles are solids with sharp boundaries and uniform concentration. The cell models use synthetic data where the source gives no measured value. SiPhoPDK is for teaching and for trying out a design flow, not for predicting the performance of a real chip.

References

  • Y. Yuan et al., "A 5 x 200 Gbps microring modulator silicon chip empowered by two-segment Z-shape junctions", Nat. Commun. 15, 918 (2024), doi:10.1038/s41467-024-45301-3. The ring modulator, its junction and its model are calibrated to this paper.
  • S. K. Yeh et al., "Silicon Photonics Platform for Next Generation Data Communication Technologies". The process stack follows the generic platform in this paper.
  • SiEPIC EBeam PDK: the open rules marked [OPEN] in the DRC deck.

Changelog

1.0.0 - 2026-10-15

  • First public release.
  • Technology, 6 port specifications and 27 parametric cells with offline models.
  • KLayout DRC deck (43 rules) and LVS runset, with drc_check and lvs_check.
  • Design rules on the layer specifications (min_width, min_spacing), conductive layers and layer connections, for the PhotonForge routers.

License

SiPhoPDK is free software under the GNU General Public License, version 3 or later. See LICENSE for the license text and NOTICE for the copyright notice.

Under section 7(b) of the license, a work that contains SiPhoPDK, or is based on it, must keep the attribution "SiPhoPDK by Flexcompute Inc." in its copyright notices and in the legal notices it displays.

Citation

If you use SiPhoPDK in published work, please cite it as given in CITATION.cff.

Metadata

Release files for siphopdk-forge 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for siphopdk-forge 1.0.0
File Size Uploaded Provenance
siphopdk_forge-1.0.0.tar.gz 80.1 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for siphopdk-forge 1.0.0
File Interpreter ABI Platform
siphopdk_forge-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 163.6 kB

Release files / siphopdk_forge-1.0.0.tar.gz

Download URL siphopdk_forge-1.0.0.tar.gz
Size 80.1 kB
Tags Source
SHA-256 checksum
How to use checksums
4d1634cfbea63fcf37d05a6b0865b971e5d1b5ed7737e961862aaf537e927f66
BLAKE2b-256 checksum
How to use checksums
988c8c62061aa22b88a362acbec5eb197465219ae8adfe3c580a7b9e374552da
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 20, 2026.

Transparency log

Release files / siphopdk_forge-1.0.0-py3-none-any.whl

Download URL siphopdk_forge-1.0.0-py3-none-any.whl
Size 83.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5325066d0f6d237aee568ff92f235508f8e95b5e2aa8bfeb1e17c62b3ed32871
BLAKE2b-256 checksum
How to use checksums
a2c0e1de8d6e72f34407bfad72294928aee4899cb1395b7aef261e41592b75b5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 20, 2026.

Transparency log

Security for siphopdk-forge 1.0.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for siphopdk_forge-1.0.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 20, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page