nazca.demofab package

Submodules

nazca.demofab.pdk module

DEMO PDK initialization.

An example on how to initialize foundry specific technology settings. DEMO PDK is for Nazca tutorials and PIC design training.

Note

Any resemblence of technology details in the DEMO PDK with an actual foundry is purely coincidental.

nazca.demofab.pdk_10_materials module

DEMO PDK material settings.

This module is intended to define the material models and materials used in the DEMOfab.

Note that for layout purposes this module is not required.

nazca.demofab.pdk_10_materials.N(wl, pol, **kwargs)

nazca.demofab.pdk_15_xsections module

DEMO PDK, EPI and xsectional waveguide structures.

This module is intended to define the xsectional structure of the waveguides in a technology. The structure can be defined using horizontal and vertical layers stacks of the materials defined in pdk_10_materials.py.

Note that for layout purposes this module is not required.

nazca.demofab.pdk_20_technology module

DEMO PDK technology settings.

This module is intended to define the mask layers and xsections of a technology, which can be accomplished by loading the coresponding csv tables with those settings and/or use the nazca function that add layers and sections.

The Xsection objects are defined in this module. A xsection corresponds typically to a waveguide or metal line. The following properies of the xsection can be set

  • os: straight-to-bend waveguide offset

  • width: default waveguide width

  • radius: default bend radius

  • taper: taper length

nazca.demofab.pdk_20_technology.os_deep(width, radius)

Offset straight to bend for deep waveguides.

Parameters
  • width (float) – waveguide width

  • radius (float) – waveguide radius

Returns

offset value

Return type

float

nazca.demofab.pdk_20_technology.os_shallow(width, radius)

Offset straight to bend for shallow waveguides.

Parameters
  • width (float) – waveguide width

  • radius (float) – waveguide radius

Returns

offset value

Return type

float

nazca.demofab.pdk_30_BB_library module

DEMO PDK building block definition.

This module is intended to define the building blocks of a technology. Building block definitions makes use of building block template functions.

This module also defines the default Interconnect objects, which greatly facilitate making waveguide or metal interconnects between building blocks.

To see the available building block and their details.

nazca.demofab.pdk_30_BB_library.BBcells()
nazca.demofab.pdk_30_BB_library.Tp_isolation(name='isolation', length=100, xs=None, width=None, layer=None)

Template funtion.

nazca.demofab.pdk_30_BB_library.abb_eopm_dc(length=750, contacts=2)

Create an electro-optic phase modulator cell.

Parameters

length (float) – length of the modulator section in um

Returns

eopm element

Return type

Cell

nazca.demofab.pdk_30_BB_library.bb_amplifiers = <nazca.bb_util.Functional_group object>

SOAs

nazca.demofab.pdk_30_BB_library.bb_awgs = <nazca.bb_util.Functional_group object>

AWG multiplexers

nazca.demofab.pdk_30_BB_library.bb_combiners = <nazca.bb_util.Functional_group object>

power splitter and combiners

nazca.demofab.pdk_30_BB_library.bb_connectors = <nazca.bb_util.Functional_group object>

inter-connectors

nazca.demofab.pdk_30_BB_library.bb_io_electrical = <nazca.bb_util.Functional_group object>

electrical IO (pads)

nazca.demofab.pdk_30_BB_library.bb_io_optical = <nazca.bb_util.Functional_group object>

optical IO (edge or surface)

nazca.demofab.pdk_30_BB_library.bb_mode_adapters = <nazca.bb_util.Functional_group object>

spot size convertors

nazca.demofab.pdk_30_BB_library.bb_mode_filters = <nazca.bb_util.Functional_group object>

mode filters

nazca.demofab.pdk_30_BB_library.bb_modulators = <nazca.bb_util.Functional_group object>

modulators

nazca.demofab.pdk_30_BB_library.bb_photodiodes = <nazca.bb_util.Functional_group object>

photo diodes

nazca.demofab.pdk_30_BB_library.bb_splitters = <nazca.bb_util.Functional_group object>

power splitter and combiners

nazca.demofab.pdk_30_BB_library.bb_tapers = <nazca.bb_util.Functional_group object>

tapers between different widths

nazca.demofab.pdk_30_BB_library.bb_transitions = <nazca.bb_util.Functional_group object>

xsection transistions

nazca.demofab.pdk_30_BB_library.dbr(length=100, pitch=0.25, duty_cycle=0.5)

Create a DBR cell.

Parameters
  • length (float) – length of DBR section in um

  • pitch (float) – pitch (full period) of dbr in um

  • duty_cycle (float) – duty cycle of grating (default = 0.5)

Returns

dbr element

Return type

Cell

nazca.demofab.pdk_30_BB_library.dbr_laser(Ldbr1=50, Ldbr2=500, Lsoa=750, Lpm=70)

Create a parametrized dbr laser building block.

nazca.demofab.pdk_30_BB_library.deep = <nazca.interconnects.Interconnect object>

‘Deep’ interconnect

nazca.demofab.pdk_30_BB_library.eopm_dc(length=1000, pads=False, sep=10)

EOPM with pad option.

Parameters
  • length (float) – modulator length in um

  • pads (bool) – draw pads if True (default = False)

  • sep (float) – separation of pad bbox from eopm stub.

Returns

eopm element

Return type

Cell

nazca.demofab.pdk_30_BB_library.io(shape=None, width=3.0, bend=False, deep=False)

Create an IO cells that for edge coupling waveguide interfaces.

Parameters
  • shape (str) – shape of IO. values: None | ‘simple’ | ‘tapered’ | ‘angled’

  • bend (bool) – make the IO connection horizontal (True) for connecting to layout

  • deep (bool) – add a transition to a deeply-etched waveguides (default = False)

Returns

io element

Return type

Cell

nazca.demofab.pdk_30_BB_library.isolation_act(length=100)

Create a p-isolation cell.

Parameters

length (float) – length of the isolation section in um

Returns

isolation element

Return type

Cell

nazca.demofab.pdk_30_BB_library.isolation_sh(length=100)

Create a p-isolation cell.

Parameters

length (float) – length of the isolation section in um

Returns

isolation element

Return type

Cell

nazca.demofab.pdk_30_BB_library.metaldc = <nazca.interconnects.Interconnect object>

‘MetalDC’ interconnect

nazca.demofab.pdk_30_BB_library.metalrf = <nazca.interconnects.Interconnect object>

‘MetalRF’ interconnect

nazca.demofab.pdk_30_BB_library.mzi(length=1000, sep=50)
nazca.demofab.pdk_30_BB_library.pd_dc(length=100, pads=False, dy=0)

“PhotoDiode with pad option.

Parameters
  • length (float) – PD length in um

  • pads (bool) – draw pads if True (default = False)

  • (float (sep) – separation of pad bbox from pin stub.

Returns

PD element

Return type

Cell

nazca.demofab.pdk_30_BB_library.phase_shifter(length=100)

Create a current injection phase shifting cell.

Parameters

length (float) – length of phase section in um

Returns

phase-shifter element

Return type

Cell

nazca.demofab.pdk_30_BB_library.shallow = <nazca.interconnects.Interconnect object>

‘Shallow’ interconnect

nazca.demofab.pdk_30_BB_library.soa(length=100, pad=True)

Create a SOA cell.

Parameters

length (float) – length of gain section in um

Returns

SOA element

Return type

Cell

nazca.demofab.pdk_30_BB_library.soa_sh(length=100)

Create a SOA cell with Shallow io.

Parameters

length (float) – length of gain section in um

Returns

SOA element

Return type

Cell

nazca.demofab.pdk_30_BB_library.xsDeep = <nazca.xsection.Xsection object>

‘Deep’ xsection

nazca.demofab.pdk_30_BB_library.xsMetalDC = <nazca.xsection.Xsection object>

‘MetalDC’ xsection

nazca.demofab.pdk_30_BB_library.xsMetalRF = <nazca.xsection.Xsection object>

‘MetalRF’ xsection

nazca.demofab.pdk_30_BB_library.xsShallow = <nazca.xsection.Xsection object>

‘Shallow’ xsection

nazca.demofab.pdk_40_project_templates module

DEMO PDK project definition.

This module is intended to define the cell templates of a technology, e.g. the cells for an MPW. It may contains cells that define optical or electrical IO functionality of the die with the external world, e.g. fiber-coupling or wire-bonding.

class nazca.demofab.pdk_40_project_templates.DesignArea(name='DesignArea', length=4000, height=4000, cleave=100, coatingL='NO', coatingR='NO', pitch=50)

Bases: object

Class containing a Die - Design Area template for Demofab.

cell()

Create a Project Cell with IO postition pins.

Returns

cell containing design area and cleave boundaries

Return type

Cell

coating(coatingL='NO', coatingR='NO')

Set coating at the left and at the right side of the design area.

Parameters
  • coatingL (str) – coating type on left side of the die: AR | HR | NO | DC: (default = ‘NO’)

  • coatingR (str) – coating type on right side of the die: AR | HR | NO | DC: (default = ‘NO’)

Returns

None

get_NIO()
Returns

number of optical IOs

Return type

int

get_cleave()
Returns

cleave of the design area

Return type

float

get_height()
Returns

height of the design area

Return type

float

get_length()
Returns

length of the design area

Return type

float

size(length=4000, height=4000)

Set size of the design area.

Parameters
  • length (float) – physical length of the die after dicing in um

  • width (float) – physical width of the die after dicingin um

Returns

None

nazca.demofab.pdk_40_project_templates.presetio(pin, bend=False, deep=False)

Returns a preset IO cell based on the attributes of the provided pin.

The cp will be updated to cp = pin.

Parameters
  • bend (bool) – Add a bend to horizontal alignment in case of an angled input guide

  • transition (bool) – Add a transition element to the deep waveguide xsection

Returns

cell containing the io element

Return type

Cell

nazca.demofab.pdk_white module

Module contents

DEMO PDK initialization.

An example on how to initialize foundry specific technology settings. DEMO PDK is for Nazca tutorials and PIC design training.

Note

Any resemblence of technology details in the DEMO PDK with an actual foundry is purely coincidental.