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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
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.