ContainerWithWaveguides

class picazzo3.container.container_waveguides.ContainerWithWaveguides(*args, **kwargs)

Abstract base class for containers which add waveguides to the contents, such as fanout or for routing ports in certain directions

Waveguides are provided as a list of child cells. They will be bundled if bundled=True.

Parameters:

trace_template: optional

Template for all ports. If None, the waveguide templates of the ports will be used

waveguides: List with type restriction, allowed types: <class ‘ipkiss3.pcell.cell.pcell.PCell’>, optional

waveguides added to the contents

auto_transition: optional

If True, automatically transition all ports of contents to the given trace template. If False, no transitions are applied, which might lead to a discontinuity in the waveguide. Also, if trace_template is None, no transitions are applied.

port_labels: optional

Labels of the ports to be processed. Set to None to process all ports.

contents: PCell, optional

the contents of the container: the child cell

external_port_names: optional

Dictionary for remapping of the port names of the contents to the external ports

cell_instances: _PCellInstanceDict, optional

name: optional

The unique name of the pcell

trace_templates: List with type restriction, allowed types: <class ‘ipkiss3.pcell.cell.pcell.PCell’>, locked

list of templates to apply to all ports

Examples

import technologies.silicon_photonics
from picazzo3.filters.ring import RingRect180DropFilter
from picazzo3.container.container_waveguides import ContainerWithWaveguides
from ipkiss3 import all as i3

my_ring = RingRect180DropFilter(name="my_ring1")
my_ring_layout = my_ring.Layout()

port_labels = ['E1', 'W0']

wgs = []
for pl in port_labels:
    p = my_ring_layout.ports[pl]
    shape = i3.Shape(points=[p.position])
    shape.add_polar(10.0, p.angle_deg)
    wg = i3.Waveguide()
    wg.Layout(shape=shape)
    wgs.append(wg)

my_container = ContainerWithWaveguides(name="my_waveguide_container1",
                                       contents=my_ring,
                                       waveguides=wgs,
                                       port_labels=port_labels
                                      )
layout = my_container.Layout()
layout.visualize()
../../../../_images/picazzo3-container-container_waveguides-ContainerWithWaveguides-1.png

Views

Layout
Parameters:

view_name: str, optional

The name of the view

routes: optional

routes along which the waveguides will be generated

contents_transformation: GenericNoDistortTransform, optional

flatten_contents: optional

if True, it will insert the contents as elements in the layout, rather than as an Instance

grids_per_unit: locked

Number of grid cells per design unit

units_per_grid: locked

Ratio of grid cell and design unit

grid: float and number > 0, locked

design grid. Extracted by default from TECH.METRICS.GRID

unit: float and number > 0, locked

design unit. Extracted by default from TECH.METRICS.UNIT