Awesome
SOEN PDK
NIST Superconducting Optoelectronic Networks (SOEN) Process Design Kits (PDK).
This kit defines the OLMEC process, which combines superconducting electronics, such as SNSPDs and three-terminal devices, active optoelectronics, such as LEDs and modulators, and passive optics, such as waveguides and resonators.
This project in in a preliminary stage. Major updates are planned before first release, and anything (including the project name) is subject to change.
Installation
git clone git@github.com:usnistgov/SOEN-PDK.git
pip install lygadgets
lygadgets_link SOEN-PDK/tech/OLMAC
If you are a Windows/Anaconda user, you must do these commands within an Anaconda 3 prompt with administrator privileges.
Salt package to come.
PyPI release is not planned.
Activation
On the klayout menu bar, there is a "T" in a circle which has a down triangle. In the dropdown list, select OLMAC. When you restart KLayout, this technology should stay selected.
Documentation
Main documentation on NIST pages.
Developers who are modifying the docs can rebuild them with make docs
. The output is in _site/index.html
.
Feature Summary
- Superconducting optoelectronic PCells
- Layer properties
- DRC specification
- Xsection specification
- "tech" package that can be understood by and loaded into KLayout application
- XML properties for WAVEGUIDES, VIAS, etc.
- Data preparation specifications to be used with lymask
Testing
Test that PCells produce the expected geometry and that dataprep is working, run make test
in the repo root.
Using PCells
PCells are implemented in phidl, so that must be installed.
pip install phidl
Despite this, the PCells can be used in pya, SiEPIC-type projects, and the klayout GUI by wrapping the implementation with the appropriate interface.
To have the pcells appear in the KLayout GUI and the klayout.db standalone
lygadgets_link lygadgets
Go to klayout's Cell placement icon. "OLMAC" should appear in the list of available libraries. By changing parameters and clicking "Apply," the outline will update live.
To use the PCells in a script, you must first specify the pcell location.
from lygadgets.technology import Technology
olmac_path = Technology.technology_by_name('OLMAC').base_path()
import sys
sys.path.append(olmac_path)
This will allow you to see olmac_pcells
. They are ready to use in phidl
right away
from olmac_pcells import wg_to_snspd
D = wg_to_snspd(wgnw_length=200) # this is a phidl.Device object
To use them in a pya-based script,
from lygadgets.autolibrary import WrappedPCell
WgToSNSPD = WrappedPCell(wg_to_snspd) # This is a subclass of PCellDeclarationHelper
How it is used varies depending on whether you use raw pya
or SiEPIC-style KlayoutPCells. An example of the latter, assuming that layout
is defined:
wg_cell, wg_ports = WgToSNSPD('My_SNSPD').pcell(layout, params={'wgnw_length': 200})
ToDo
- move the README pcell discussion to the pages documentation
- also update the installation page with this readme
- more pcell data and implementations
- run DRC from command line and make tests
- document DRC in slides and move to pages
- document process steps in slides and move to pages