SiEPICfab

Luceda PDK for SiEPIC

The Luceda PDK for SiEPIC allows to design and tape out to SiEPICfab, the Canadian SiEPIC silicon photonics foundry.

Several training courses are organized on the basis of this PDK. In the edX Silicon Photonics Design, Fabrication and Data Analysis course, which runs for 6 weeks, you can design photonic circuits using this PDK, submit your design for fabrication and have it tested.

Contents

PDK Documentation

This document explains how to use the Luceda Process Design Kit (PDK) for SiEPICfab (version 0.3.36.luceda3).

The PDK can be used from Luceda IPKISS, providing the following functionality:

  • definition and layout of circuits using SiEPIC’s predefined library of cells (building blocks), which is entirely available within IPKISS,

  • waveguide routing using the waveguide types defined, or custom defined waveguides following design rules,

  • definition of custom devices using defined layers and design rules,

  • simulation of custom devices using IPKISS’ built-in solvers and IPKISS Links to 3rd party tools such as Dassault Systemes Simulia CST Studio Suite ® and Ansys Lumerical FDTD,

  • circuit editing from Siemens L-Edit using Luceda Link for Siemens EDA.

This documentation explains how to get started with the PDK, lists the cells that are available and documents the technology for custom design.

Document information

This PDK is an implementation of SiEPICfab’s PDK.

License

  • The GDSII library source files from SiEPIC GitHub PDK, replicated here under the siepic/ipkiss/siepic/gds directory, are distributed under the terms of an MIT license.

  • Other than these original GDSII files, all files in this PDK implementation are copyrighted by Luceda Photonics © 2020, under the following terms and conditions:

    This version of Luceda Academy and related packages
    (hereafter referred to as Luceda Academy) is distributed under a proprietary License by Luceda.
    It does allow you to develop and distribute add-ons or plug-ins, but does
    not allow redistribution of Luceda Academy  itself (in original or modified form).
    
    This program is distributed in the hope that it will be useful, but WITHOUT
    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
    FOR A PARTICULAR PURPOSE.
    
    For the details of the licensing contract and the conditions under which
    you may use this software, we refer to the
    EULA which was distributed along with this program.
    It is located in the root of the distribution folder.
    

Usage and responsibility

The use of this PDK is intended for the design of photonic integrated circuits in the SiEPIC platform, fabricated by SiEPICfab (Foundry).

  • All relevant documentation about the SiEPIC platform, including process description and design rules, can be found in the design rule manual as provided by the Foundry. The user is advised to carefully read the SiEPIC design rule manual.

  • It is the user’s responsibility to verify that the design, made on the basis of this Process Design Kit, meets the Foundry’s design rules.

  • In case of doubt, the user should consider the Foundry’s design rule manual as the correct reference (as validated by the Foundry).

  • Under no circumstances does LUCEDA represent or warrant that operation of the photonic integrated circuits by the Foundry, designed on the basis of this Process Design Kit, will be error-free or will accord to the user specifications, and hereby disclaims all liability on account thereof.

Technology settings

The PDK contains layer definitions and virtual fabrication settings for the SiEPIC process. Refer to the SiEPIC design rule manual for details.

Layers

The following table gives an overview of the available layers and how they are named in IPKISS.

Table 1 Layer Table

Layer name

Description

IPKISS Layer (TECH.PPLAYER.)

GDS Number

Si

Silicon 220nm remaining. Where drawn it’s 220nm, elsewhere it’s 0m. Shot pitch 6nm. Recommended for most silicon devices.

WG

1/0

PinRec

Pin recognition layer

PINREC

1/10

TEXT

Text labels for automated measurements

TEXT

10/0

SEM_ROI

SEM imaging request

SEM_ROI

26/0

Si_p6nm

Fabricated at same layer as Si, but with shot pitch fracturing of 1nm. Aligned to Si layer.

WG_P6NM

31/0

Si_p2nm

Fabricated at same time as Si, but not aligned to Si. Shot pitch 2nm.

WG_P2NN

33/0

DevRec

Device recognition layer

DEVREC

68/0

FbrTgt

Fiber target

FIBERCORE

81/0

Floorplan

Assigned area for layout

FLOORPLAN

99/0

WGTRACE

WG layer waveguide routing - Luceda non-tapeout layer

WGTRACE

Component Library

Fiber couplers

EbeamGCTE1550

Grating coupler for TE mode, operation around 1550nm wavelength.

from siepic import technology
from siepic.all import EbeamGCTE1550
import ipkiss_fixes
lo = EbeamGCTE1550().Layout()
lo.visualize(annotate=True, box=None, canvas_size=(1000.0, None))
_images/cells-1.png

Ports

Name

Type

Position

Angle

Waveguide Template

Inclination

opt1

Optical

(0.0,0.0)

0.0

StripWaveguideTemplate

0.0

fib1

Optical

(-20.4,0.0)

0.0

-31.0

EbeamGCTM1550

Grating coupler for TM mode, operation around 1550nm wavelength.

from siepic import technology
from siepic.all import EbeamGCTM1550
import ipkiss_fixes
lo = EbeamGCTM1550().Layout()
lo.visualize(annotate=True, box=None, canvas_size=(1000.0, None))
_images/cells-2.png

Ports

Name

Type

Position

Angle

Waveguide Template

Inclination

opt1

Optical

(0.0,0.0)

0.0

StripWaveguideTemplate

0.0

fib1

Optical

(-20.4,0.0)

0.0

-31.0

EbeamTerminatorTE1550

Termination or edge coupler for TE mode, 1550nm wavelength.

from siepic import technology
from siepic.all import EbeamTerminatorTE1550
import ipkiss_fixes
lo = EbeamTerminatorTE1550().Layout()
lo.visualize(annotate=True, box=None, canvas_size=(1000.0, None))
_images/cells-3.png

Ports

Name

Type

Position

Angle

Waveguide Template

Inclination

opt1

Optical

(0.0,0.0)

0.0

StripWaveguideTemplate

0.0

fib1

Optical

(-10.9,0.0)

0.0

0.0

EbeamTerminatorTM1550

Termination or edge coupler for TM mode, 1550nm wavelength.

from siepic import technology
from siepic.all import EbeamTerminatorTM1550
import ipkiss_fixes
lo = EbeamTerminatorTM1550().Layout()
lo.visualize(annotate=True, box=None, canvas_size=(1000.0, None))
_images/cells-4.png

Ports

Name

Type

Position

Angle

Waveguide Template

Inclination

opt1

Optical

(0.0,0.0)

0.0

StripWaveguideTemplate

0.0

fib1

Optical

(-10.9,0.0)

0.0

0.0

Couplers

EbeamAdiabaticTE1550

SiEPIC Regular Adiabatic Splitter building block operating at TE polarisation, splitting ratio 50/50.

from siepic import technology
from siepic.all import EbeamAdiabaticTE1550
import ipkiss_fixes
lo = EbeamAdiabaticTE1550().Layout()
lo.visualize(annotate=True, box=None, canvas_size=(1000.0, None))
_images/cells-5.png

Ports

Name

Type

Position

Angle

Waveguide Template

Inclination

opt4

Optical

(195.9,-1.5)

0.0

StripWaveguideTemplate

0.0

opt3

Optical

(195.9,1.5)

0.0

StripWaveguideTemplate

0.0

opt1

Optical

(0.1,1.5)

180.0

StripWaveguideTemplate

0.0

opt2

Optical

(0.1,-1.5)

180.0

StripWaveguideTemplate

0.0

EbeamAdiabaticTM1550

SiEPIC Regular Adiabatic Splitter building block operating at TM polarisation, splitting ratio 50/50.

from siepic import technology
from siepic.all import EbeamAdiabaticTM1550
import ipkiss_fixes
lo = EbeamAdiabaticTM1550().Layout()
lo.visualize(annotate=True, box=None, canvas_size=(1000.0, None))
_images/cells-6.png

Ports

Name

Type

Position

Angle

Waveguide Template

Inclination

opt4

Optical

(217.9,-1.5)

0.0

StripWaveguideTemplate

0.0

opt3

Optical

(217.9,1.5)

0.0

StripWaveguideTemplate

0.0

opt2

Optical

(0.1,-1.5)

180.0

StripWaveguideTemplate

0.0

opt1

Optical

(0.1,1.5)

180.0

StripWaveguideTemplate

0.0

EbeamBDCTE1550

SiEPIC Broadband Directional Coupler based splitter operating at TE polarisation. Splitting ratio 50/50 over a wide wavelength range.

from siepic import technology
from siepic.all import EbeamBDCTE1550
import ipkiss_fixes
lo = EbeamBDCTE1550().Layout()
lo.visualize(annotate=True, box=None, canvas_size=(1000.0, None))
_images/cells-7.png

Ports

Name

Type

Position

Angle

Waveguide Template

Inclination

opt4

Optical

(35.3,-2.35)

0.0

StripWaveguideTemplate

0.0

opt3

Optical

(35.3,2.35)

0.0

StripWaveguideTemplate

0.0

opt1

Optical

(-35.45,2.35)

180.0

StripWaveguideTemplate

0.0

opt2

Optical

(-35.45,-2.35)

180.0

StripWaveguideTemplate

0.0

EbeamBDCTM1550

SiEPIC Broadband Directional Coupler based splitter operating at TM polarisation. Splitting ratio 50/50 over a wide wavelength range.

from siepic import technology
from siepic.all import EbeamBDCTM1550
import ipkiss_fixes
lo = EbeamBDCTM1550().Layout()
lo.visualize(annotate=True, box=None, canvas_size=(1000.0, None))
_images/cells-8.png

Ports

Name

Type

Position

Angle

Waveguide Template

Inclination

opt1

Optical

(-10.0,2.4)

180.0

StripWaveguideTemplate

0.0

opt2

Optical

(-10.0,-2.4)

180.0

StripWaveguideTemplate

0.0

opt3

Optical

(25.6,2.4)

0.0

StripWaveguideTemplate

0.0

opt4

Optical

(25.6,-2.4)

0.0

StripWaveguideTemplate

0.0

EbeamDCTE1550

General direction coupler operating at both TE and TM.

Parameters:
coupl_gap: float and number > 0

Gap between the waveguides [um]

coupl_length: float

Length of the straight coupling section [um]

ebeam_res: String that contains only alphanumeric characters from the ASCII set or contains _$. ASCII set is extended on PY3. and List with value restriction, allowed values: [‘6NM’, ‘2NM’, ‘1NM’]

Resolution of the EBeam, 6NM = normal 6 nm shot pitch, 2NM = 2 nm shot pitch, 1NM = 1 nm shot pitch

io_vert_space: float and number > 0

Vertical spacing [um]

radius: float and number > 0

Radius of the bend [um]

wg_width: float and number > 0 and [0.4,3.5]

Width of the waveguides [um]

from siepic import technology
from siepic.all import EbeamDCTE1550
import ipkiss_fixes
lo = EbeamDCTE1550().Layout()
lo.visualize(annotate=True, box=None, canvas_size=(1000.0, None))
_images/cells-9.png

Ports

Name

Type

Position

Angle

Waveguide Template

Inclination

opt2

Optical

(0.0,0.0)

180.0

StripWaveguideTemplate

0.0

opt4

Optical

(45.278,0.0)

0.0

StripWaveguideTemplate

0.0

opt1

Optical

(0.0,10.0)

180.0

StripWaveguideTemplate

0.0

opt3

Optical

(45.278,10.0)

0.0

StripWaveguideTemplate

0.0

EbeamY1550

SiEPIC Y-splitter building block operating for TE polarisation.

from siepic import technology
from siepic.all import EbeamY1550
import ipkiss_fixes
lo = EbeamY1550().Layout()
lo.visualize(annotate=True, box=None, canvas_size=(1000.0, None))
_images/cells-10.png

Ports

Name

Type

Position

Angle

Waveguide Template

Inclination

opt2

Optical

(7.4,2.75)

0.0

StripWaveguideTemplate

0.0

opt3

Optical

(7.4,-2.75)

0.0

StripWaveguideTemplate

0.0

opt1

Optical

(-7.4,0.0)

180.0

StripWaveguideTemplate

0.0

EbeamYAdiabatic

SiEPIC adiabatic Y-splitter building block operating for TE polarisation.

from siepic import technology
from siepic.all import EbeamYAdiabatic
import ipkiss_fixes
lo = EbeamYAdiabatic().Layout()
lo.visualize(annotate=True, box=None, canvas_size=(1000.0, None))
_images/cells-11.png

Ports

Name

Type

Position

Angle

Waveguide Template

Inclination

opt3

Optical

(50.05,-1.25)

0.0

StripWaveguideTemplate

0.0

opt2

Optical

(50.05,1.25)

0.0

StripWaveguideTemplate

0.0

opt1

Optical

(0.05,0.0)

180.0

StripWaveguideTemplate

0.0

Waveguide PCells

WaveguideStraight

Straight waveguide.

Parameters:
wg_length: float and number > 0

Length of the waveguide [um]

devrec: ( bool, bool_, bool or int )

Add DEVREC layer (68/0) if True (default=True)

ebeam_res: String that contains only alphanumeric characters from the ASCII set or contains _$. ASCII set is extended on PY3. and List with value restriction, allowed values: [‘6NM’, ‘2NM’, ‘1NM’]

Resolution of the EBeam, 6NM = normal 6 nm shot pitch, 1NM = 6 NM, but with SPF, 2NM = 2 nm shot pitch

width: float and number > 0 and [0.4,3.5]

Width of the core [um]

trace_template: PCell and _WaveguideTemplate
from siepic import technology
from siepic.all import WaveguideStraight
import ipkiss_fixes
lo = WaveguideStraight().Layout()
lo.visualize(annotate=True, box=None, canvas_size=(1000.0, None))
_images/cells-12.png

Ports

Name

Type

Position

Angle

Waveguide Template

Inclination

pin1

Optical

(0.0,0.0)

180.0

StripWaveguideTemplate

0.0

pin2

Optical

(10.0,0.0)

0.0

StripWaveguideTemplate

0.0

WaveguideBend

Bend waveguide.

Parameters:
angle: float

Angle of the bend [degrees]

radius: float and number > 0 and [5.0,None]

Radius of the bend [um]

devrec: ( bool, bool_, bool or int )

Add DEVREC layer (68/0) if True (default=True)

ebeam_res: String that contains only alphanumeric characters from the ASCII set or contains _$. ASCII set is extended on PY3. and List with value restriction, allowed values: [‘6NM’, ‘2NM’, ‘1NM’]

Resolution of the EBeam, 6NM = normal 6 nm shot pitch, 1NM = 6 NM, but with SPF, 2NM = 2 nm shot pitch

width: float and number > 0 and [0.4,3.5]

Width of the core [um]

trace_template: PCell and _WaveguideTemplate
from siepic import technology
from siepic.all import WaveguideBend
import ipkiss_fixes
lo = WaveguideBend().Layout()
lo.visualize(annotate=True, box=None, canvas_size=(1000.0, None))
_images/cells-13.png

Ports

Name

Type

Position

Angle

Waveguide Template

Inclination

pin1

Optical

(0.0,0.0)

-179.49999999999994

StripWaveguideTemplate

0.0

pin2

Optical

(10.0,10.0)

89.49999999999996

StripWaveguideTemplate

0.0

WaveguideSBend

S-bend waveguide.

Parameters:
radius: float and number > 0 and [5.0,None]

Radius of the bend [um]

x_offset: float and number > 0

Horizontal offset of the s-bend [um]

y_offset: float

Vertical offset of the s-bend [um]

devrec: ( bool, bool_, bool or int )

Add DEVREC layer (68/0) if True (default=True)

ebeam_res: String that contains only alphanumeric characters from the ASCII set or contains _$. ASCII set is extended on PY3. and List with value restriction, allowed values: [‘6NM’, ‘2NM’, ‘1NM’]

Resolution of the EBeam, 6NM = normal 6 nm shot pitch, 1NM = 6 NM, but with SPF, 2NM = 2 nm shot pitch

width: float and number > 0 and [0.4,3.5]

Width of the core [um]

trace_template: PCell and _WaveguideTemplate
from siepic import technology
from siepic.all import WaveguideSBend
import ipkiss_fixes
lo = WaveguideSBend().Layout()
lo.visualize(annotate=True, box=None, canvas_size=(1000.0, None))
_images/cells-14.png

Ports

Name

Type

Position

Angle

Waveguide Template

Inclination

pin1

Optical

(0.0,0.0)

180.0

StripWaveguideTemplate

0.0

pin2

Optical

(10.0,5.0)

0.0

StripWaveguideTemplate

0.0

WaveguideBump

Bump waveguide.

Do not provide x_offset, angle and total_length at the same time. If total_length provided, angle or x_offset will be calculated from the others through a minimize function.

Parameters:
angle: float and [-120.0,120.0]

Angle of the bend

total_length: float and number > 0

Total length of the bump [um]

x_offset: float and number > 0

Horizontal offset of the bump [um]

devrec: ( bool, bool_, bool or int )

Add DEVREC layer (68/0) if True (default=True)

ebeam_res: String that contains only alphanumeric characters from the ASCII set or contains _$. ASCII set is extended on PY3. and List with value restriction, allowed values: [‘6NM’, ‘2NM’, ‘1NM’]

Resolution of the EBeam, 6NM = normal 6 nm shot pitch, 1NM = 6 NM, but with SPF, 2NM = 2 nm shot pitch

width: float and number > 0 and [0.4,3.5]

Width of the core [um]

trace_template: PCell and _WaveguideTemplate
from siepic import technology
from siepic.all import WaveguideBump
import ipkiss_fixes
lo = WaveguideBump().Layout()
lo.visualize(annotate=True, box=None, canvas_size=(1000.0, None))
_images/cells-15.png

Ports

Name

Type

Position

Angle

Waveguide Template

Inclination

pin1

Optical

(0.0,0.0)

180.0

StripWaveguideTemplate

0.0

pin2

Optical

(100.0,0.0)

0.0

StripWaveguideTemplate

0.0

EbeamTaperTE1550

Parameters:
ebeam_res: String that contains only alphanumeric characters from the ASCII set or contains _$. ASCII set is extended on PY3.

Resolution of the EBeam, 6NM = normal 6 nm shot pitch, 1NM = 1 nm shot pitch, 2NM = 2 nm shot pitch

end_res: String that contains only alphanumeric characters from the ASCII set or contains _$. ASCII set is extended on PY3.

Resolution of the output port

end_width: float and number > 0

Width of the core

start_res: String that contains only alphanumeric characters from the ASCII set or contains _$. ASCII set is extended on PY3.

Resolution of the input port

start_width: float and number > 0

Width of the core

taper_length: float and number > 0 and [1.0,20.0]

Length of the taper

from siepic import technology
from siepic.all import EbeamTaperTE1550
import ipkiss_fixes
lo = EbeamTaperTE1550().Layout()
lo.visualize(annotate=True, box=None, canvas_size=(1000.0, None))
_images/cells-16.png

Ports

Name

Type

Position

Angle

Waveguide Template

Inclination

pin1

Optical

(0.0,0.0)

0.0

StripWaveguideTemplate

0.0

pin2

Optical

(10.0,0.0)

180.0

StripWaveguideTemplate

0.0

Crossing

EbeamCrossing

SiEPIC Crossing building block that allows for a vertical crossing between two waveguides with minimal cross talk and reflection.

from siepic import technology
from siepic.all import EbeamCrossing
import ipkiss_fixes
lo = EbeamCrossing().Layout()
lo.visualize(annotate=True, box=None, canvas_size=(1000.0, None))
_images/cells-17.png

Ports

Name

Type

Position

Angle

Waveguide Template

Inclination

opt1

Optical

(-4.8,0.0)

180.0

StripWaveguideTemplate

0.0

opt4

Optical

(4.8,0.0)

0.0

StripWaveguideTemplate

0.0

opt2

Optical

(0.0,4.8)

90.0

StripWaveguideTemplate

0.0

opt3

Optical

(0.0,-4.8)

-90.0

StripWaveguideTemplate

0.0

Bragg

EbeamBraggTE1550

Waveguide Bragg Grating (WBG).

Parameters:
conn_wav_L: float and number > 0

Length of the connecting waveguides [um]

corrugation_width: float and [0,0.75]

Corrugation width [um]

ebeam_res: String that contains only alphanumeric characters from the ASCII set or contains _$. ASCII set is extended on PY3. and List with value restriction, allowed values: (‘6NM’, ‘1NM’, ‘2NM’)

Resolution of the EBeam, 6NM = normal 6 nm shot pitch, 2NM = 2 nm shot pitch

grating_misalignment: float

Grating misalignment [um]

grating_period: float

Grating period [um]

grating_type: ( bool, bool_, bool or int )

Shape of the grating: True=sinusoidal, False=rectangular

n_periods: int

Number of periods

width: float and number > 0 and [0.4,3.5]

Width of the core [um]

from siepic import technology
from siepic.all import EbeamBraggTE1550
import ipkiss_fixes
lo = EbeamBraggTE1550().Layout()
lo.visualize(annotate=True, box=None, canvas_size=(1000.0, None))
_images/cells-18.png

Ports

Name

Type

Position

Angle

Waveguide Template

Inclination

pin1

Optical

(0.0,0.0)

180.0

StripWaveguideTemplate

0.0

pin2

Optical

(97.1,0.0)

0.0

StripWaveguideTemplate

0.0

Rings

EbeamDCHalfringStraight

Half ring component containing half a ring (or racetrack) and the adjacent waveguide.

Parameters:
coupler_length: float and Real, number and number >= 0

Length of the coupling section [um]

ebeam_res: String that contains only alphanumeric characters from the ASCII set or contains _$. ASCII set is extended on PY3. and List with value restriction, allowed values: [‘6NM’, ‘1NM’, ‘2NM’]

Resolution of the EBeam, 6NM = normal 6 nm shot pitch, 2NM = 2 nm shot pitch

gap: float and number > 0

Gap between the ring waveguide and the straight waveguide [um]

offset_length: float

Length of the waveguide section at the ports [um]

orthogonal_identifier: int

Indicating whether we excite the component (1: TE, 2: TM)

radius: float and number > 0

Radius of the ring [um]

wg_width: float and number > 0 and [0.4,3.5]

Width of the core [um]

from siepic import technology
from siepic.all import EbeamDCHalfringStraight
import ipkiss_fixes
lo = EbeamDCHalfringStraight().Layout()
lo.visualize(annotate=True, box=None, canvas_size=(1000.0, None))
_images/cells-19.png

Ports

Name

Type

Position

Angle

Waveguide Template

Inclination

pin1

Optical

(0.0,0.0)

180.0

StripWaveguideTemplate

0.0

pin2

Optical

(5.0,10.7)

90.0

StripWaveguideTemplate

0.0

pin3

Optical

(25.0,10.7)

90.0

StripWaveguideTemplate

0.0

pin4

Optical

(30.0,0.0)

0.0

StripWaveguideTemplate

0.0

EbeamAddDropSymmStraight

Symmetric add-drop ring (racetrack) resonator, meaning the gap between the ring and bottom adjacent waveguide is the same as the gap between the ring and top adjacent waveguide.

Parameters:
coupler_length: float and Real, number and number >= 0

Length of the coupling section [um]

ebeam_res: String that contains only alphanumeric characters from the ASCII set or contains _$. ASCII set is extended on PY3. and List with value restriction, allowed values: [‘6NM’, ‘1NM’, ‘2NM’]

Resolution of the EBeam, 6NM = normal 6 nm shot pitch, 2NM = 2 nm shot pitch

gap: float and number > 0

Gap between the ring waveguide and the straight waveguide [um]

offset_length: float

Length of the waveguide section at the ports [um]

orthogonal_identifier: int

Indicating whether we excite the component (1: TE, 2: TM)

radius: float and number > 0

Radius of the ring [um]

wg_width: float and number > 0 and [0.4,3.5]

Width of the core [um]

from siepic import technology
from siepic.all import EbeamAddDropSymmStraight
import ipkiss_fixes
lo = EbeamAddDropSymmStraight().Layout()
lo.visualize(annotate=True, box=None, canvas_size=(1000.0, None))
_images/cells-20.png

Ports

Name

Type

Position

Angle

Waveguide Template

Inclination

pin1

Optical

(0.0,0.0)

180.0

StripWaveguideTemplate

0.0

pin2

Optical

(0.0,21.4)

180.0

StripWaveguideTemplate

0.0

pin3

Optical

(30.0,21.4)

0.0

StripWaveguideTemplate

0.0

pin4

Optical

(30.0,0.0)

0.0

StripWaveguideTemplate

0.0

EbeamAddDropAsymmStraight

Asymmetric add-drop ring (racetrack) resonator, meaning the gap between the ring and bottom adjacent waveguide is different as the gap between the ring and top adjacent waveguide.

Parameters:
gap1: float and number > 0

Gap between the ring waveguide and the straight waveguide at the input [um]

gap2: float and number > 0

Gap between the ring waveguide and the straight waveguide at the output [um]

coupler_length: float and Real, number and number >= 0

Length of the coupling section [um]

ebeam_res: String that contains only alphanumeric characters from the ASCII set or contains _$. ASCII set is extended on PY3. and List with value restriction, allowed values: [‘6NM’, ‘1NM’, ‘2NM’]

Resolution of the EBeam, 6NM = normal 6 nm shot pitch, 2NM = 2 nm shot pitch

offset_length: float

Length of the waveguide section at the ports [um]

orthogonal_identifier: int

Indicating whether we excite the component (1: TE, 2: TM)

radius: float and number > 0

Radius of the ring [um]

wg_width: float and number > 0 and [0.4,3.5]

Width of the core [um]

from siepic import technology
from siepic.all import EbeamAddDropAsymmStraight
import ipkiss_fixes
lo = EbeamAddDropAsymmStraight().Layout()
lo.visualize(annotate=True, box=None, canvas_size=(1000.0, None))
_images/cells-21.png

Ports

Name

Type

Position

Angle

Waveguide Template

Inclination

pin1

Optical

(0.0,0.0)

180.0

StripWaveguideTemplate

0.0

pin2

Optical

(0.0,21.4)

180.0

StripWaveguideTemplate

0.0

pin3

Optical

(30.0,21.4)

0.0

StripWaveguideTemplate

0.0

pin4

Optical

(30.0,0.0)

0.0

StripWaveguideTemplate

0.0

EbeamRingStraight

Notch-filter ring (racetrack) resonator, meaning there is only adjacent waveguide (at the bottom).

Parameters:
coupler_length: float and Real, number and number >= 0

Length of the coupling section [um]

ebeam_res: String that contains only alphanumeric characters from the ASCII set or contains _$. ASCII set is extended on PY3. and List with value restriction, allowed values: [‘6NM’, ‘1NM’, ‘2NM’]

Resolution of the EBeam, 6NM = normal 6 nm shot pitch, 2NM = 2 nm shot pitch

gap: float and number > 0

Gap between the ring waveguide and the straight waveguide [um]

offset_length: float

Length of the waveguide section at the ports [um]

orthogonal_identifier: int

Indicating whether we excite the component (1: TE, 2: TM)

radius: float and number > 0

Radius of the ring [um]

wg_width: float and number > 0 and [0.4,3.5]

Width of the core [um]

from siepic import technology
from siepic.all import EbeamRingStraight
import ipkiss_fixes
lo = EbeamRingStraight().Layout()
lo.visualize(annotate=True, box=None, canvas_size=(1000.0, None))
_images/cells-22.png

Ports

Name

Type

Position

Angle

Waveguide Template

Inclination

pin1

Optical

(0.0,0.0)

180.0

StripWaveguideTemplate

0.0

pin2

Optical

(30.0,0.0)

0.0

StripWaveguideTemplate

0.0

Photonic Crystal

PhotonicCrystalWaveguideAndCavity

2D Photonic crystal waveguide with unit cells arranged in a hexagonal lattice, with the opportunity of putting a cavity in the waveguide

Parameters:
hole_radius: float and Real, number and number >= 0

Radius of the unit cell hole [um]

middle_radii: list

Radii of the cavity unit cell holes in the waveguide [um]

n_angles: int

Number angles in the unit cell hole

num_cols: int

Number of unit cells along the waveguide

num_rows_one_side: int

Number of unit cell layers on each side of the waveguide

phc_wg_width: float and Real, number and number >= 0

Width of the photonic crystal waveguide [um]

pitch: float and number > 0

Pitch of the photonic crystal unit cells [um]

taper_length: float and number > 0

Taper length [um]

from siepic import technology
from siepic.all import PhotonicCrystalWaveguideAndCavity
import ipkiss_fixes
lo = PhotonicCrystalWaveguideAndCavity().Layout()
lo.visualize(annotate=True, box=None, canvas_size=(1000.0, None))
_images/cells-23.png

Ports

Name

Type

Position

Angle

Waveguide Template

Inclination

pin1

Optical

(0.0,0.0)

180.0

StripWaveguideTemplate

0.0

pin2

Optical

(18.6,0.0)

0.0

StripWaveguideTemplate

0.0

Frame

FloorPlan

Chip frame.

Parameters:
size: Coord2 and number >= 0

Size of frame as a tuple (x, y) [um, um]

from siepic import technology
from siepic.all import FloorPlan
import ipkiss_fixes
lo = FloorPlan().Layout()
lo.visualize(annotate=True, box=None, canvas_size=(1000.0, None))
_images/cells-24.png

Changelog

0.3.36.luceda3

  • Added an .iclib file (library file recognized by IPKISS Canvas) with symbol drawings

0.3.36.luceda2

  • Updated for IPKISS 3.9. The PDK runs on Python3 as well as Python2 IPKISS 3.9 is required to run the PDK

0.3.36.luceda1

  • Updated for IPKISS 3.7

0.3.36

  • Added PhotonicCrystalWaveguideAndCavity

0.3.30.luceda1

  • Fixed technology default template (TECH.PCELLS.WG.DEFAULT and TECH.PCELLS.WG.WIRE)

  • Updated FloorPlan from a RectanglePath to a Rectangle

0.3.30

  • Initial implementation of the IPKISS PDK for SiEPIC: layers, cell library, tape-out settings, basic documentation