Lumfoundry PDK is a generic technology package for KLayout photonic designs, which contains mask layout layer definitions, and a KLayout PCell library with some frequently used components (waveguide, directional coupler, grating coupler, and terminator), and an Interconnect compact model library (CML) for the PCell components. Each of the components in the Lumfoundry PDK has a corresponding compact model. Lumfoundry PDK is used for demonstration purposes.
Lumfoundry PDK is attached in this article. Lumfoundry PDK's KLayout package can be installed manually. Copy folder Lumfoundry_KLayout_Lib and paste it to path C:\Users\<USER NAME>\KLayout\salt.
Lumfoundry PDK's Interconnect CML can be installed using the file Lumfoundry_KLayout_CML.cml provided in the PDK package. For details on installing a CML, please visit Install Compact Model Library.
KLayout photonic PDK package framework
To build a customized photonic PDK in KLayout, you will need to define the followings:
- A technology file (.lyt) to define basic properties of the technology including technology name, dbu, layer property file, etc.
- A layer property file (.lyp) to define all the layers in your technology. Below are some indispensable layers for the KLayout Interoperability.
DevRecfor identifying individual components
PinRecfor identifying component pins and CML information Layer
FbrTgtfor identifying fiber target at grating couplers
Textfor identifying optical IOs
Waveguideas the guiding shape layer for any optical waveguide definition. The layer/datatype definition must be
- A library file (.lym) to register the library for your technology and to define PCell components in your library
- A WAVEGUIDE.xml file to define waveguide configurations using SiEPIC Path to Waveguide feature.
Lumfoundry KLayout Package provides a template for the above files, which can be found under default path C:\Users\<USER NAME>\KLayout\salt\Lumfoundry_KLayout_Lib\tech.
Customizing the PCell library
To define a new PCell, user can use the PCell template provided in Lumfoundry PDK (i.e., Lumfoundry_KLayout_Lib\tech\Lumfoundry_Library.lym).
To define new parameters for a PCell, change the parameter names and default values in the parameters declaration region (i.e., below
# declare the parameters), see the figure below.
To draw a scripted PCell layout, users can leverage functions in KLayout module under function
produce_impl. Detailed information about the functions in KLayout module can be found in the user manual of KLayout.
Linking a layout component to a Interconnect compact model
When generating a circuit netlist in KLayout, the compact model information for each layout component needs to be specified in the form of text on layer
DevRec, and must be placed inside the component's bounding box.
Define compact model using the following syntax:
Component=<compact model name>
Define model parameters using the following syntax:
Spice_param:<param1 name>=<value> <param2 name>=<value> ... <paramN name>=<value>
Define component pin order using the following syntax:
pinOrder:<pin1 name> <pin2 name> <pin3 name> ... <pinN name>
Note that KLayout component's pin names and order must be identical to its Interconnect compact model's port names and order, respectively, in order for netlister to work properly. If you don't know a compact model's port names and order, you can find the information by selecting an instance of the model in INTERCONNECT and checking its Port View.
See the following example for how to define compact model information for a PCell, which can be found in file Lumfoundry_KLayout_Lib\tech\Lumfoundry_Library.lym, under line
# insert cell/component properties of each example component.