A utility package and PDK for a custom GaAs process, for use with the nazca-degin GDS layout library. My nazca fork with fixes will be most compatible. KLayout scripts for postprocessing the nazca output are also included.
Clone this repository and add it to your Python PATH.
- The nazca-degin GDS layout library is the primary dependency. My nazca fork with fixes will be most compatible.
- numpy
- gdstk is used in
pdk_Fab6\pdk_05_functions.py
for additional speed, but can be replaced with nazca'sclipper
functions in the appropriate sections. - KLayout is needed for some postprocessing. A KLayout technology file is also provided in the
pdk_Fab6/
folder for viewing.
Sample mask definition files are provided in samples/
. Make sure to set the KLayout path on the last line.
Use the utility package or PDK by importing them after nazca:
import nazca
import pdk_Fab6 as PDK
Then use any component as desired. Lengths are in microns, as in nazca.
with nazca.Cell(name='DFB') as cellDFB:
PDK.inputLabel(text='PDK DFB, 2 mm', xs=None).put(50,0) # xs=None to avoid putting an input waveguide
PDK.deviceDFB(length=2e3).put()
PDK.soaToOut(x=5e3, soalen=500, angle=7).put() # Straight waveguide to output at 5 mm border, with 500 µm SOA before 7° angled output
Generate the GDS with nazca, then postprocess with the provided KLayout scripts - make sure to insert the appropriate KLayout path in the last line if it is not available via the system PATH:
dieFile = 'demo_mask.gds'
nazca.export_gds(topcells=cellDFB, filename=dieFile, clear=False)
# Postprocess with KLayout
print('Postprocessing with KLayout...')
from subprocess import call
from os.path import abspath
postDRC = [abspath('..\\pdk_Fab6\\Fab6_postprocess.lydrc'),
abspath('..\\pdk_Fab6\\Fab6_postprocess_merge.lydrc')]
for drc in postDRC:
call(['klayout_app', '-b', '-r', drc, '-rd', 'input='+abspath(dieFile)])
This produces an OASIS file with a 2 mm long gain-coupled DFB followed by a waveguide and a 500 µm long SOA:
This includes gain-coupled stripes on the DFB, shallow-deep transitions out of the DFB and on both sides of the SOA, and an angled output with spot-size converter after the SOA:
The marks_NanoFab
package includes several utility marks for lithography tools in the UCSB NanoFab, as well as several utility functions.
Documentation is available in the docs/
folder and in the individual functions.
The pdk_Fab6
package contains a number of PDK elements for an active-passive GaAs process, as well as several functions that are helpful for making more complex masks.
Documentation is available in the docs/
folder and in the individual functions.
Samples using the PDK are available in the samples folder.