RoutePortsEastWest

class picazzo3.container.route_ports.RoutePortsEastWest(*args, **kwargs)

Routes ports to the east or west side of a component

Parameters:

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.

east_port_labels: optional

Labels of the ports to directed to the East. Set to None to process all East ports.

trace_template: optional

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

west_port_labels: optional

Labels of the ports to directed to the West. Set to None to process all West 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

port_labels: locked

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

list of templates to apply to all ports

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

bundle: locked

bundle of waveguides added to the contents, generated based on the supplied waveguides list

Views

Layout
Parameters:

angle_step: float and number > 0, optional

angle step for rounding

manhattan: optional

adds rectangular blocks in the bends to avoid as much as possible non-manhattan angles

reference_east: str, optional

Port Label of port that serves as y reference

reference_west: str, optional

Port Label of port that serves as y reference

rounding_algorithm: optional

rounding algorithm used to generate the bends. Can be circular, spline, …

spacing: float and number > 0, optional

Distance between the endpoints of the routes

target_coordinate_east: optional

The coordinate where the east routes are aligned

target_coordinate_west: optional

The coordinate where the west routes are algined

view_name: str, optional

The name of the view

area_layer_on: optional

When True, the waveguide area will be covered by i3.Rectangles on all cover layers.

contents_transformation: GenericNoDistortTransform, optional

flatten_contents: optional

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

bend_radius: float and number > 0, optional

bend radius for the auto-generated bends

grid: float and number > 0, locked

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

grids_per_unit: locked

Number of grid cells per design unit

routes: locked

units_per_grid: locked

Ratio of grid cell and design unit

unit: float and number > 0, locked

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

Examples

from technologies import silicon_photonics
import ipkiss3.all as i3
from picazzo3.filters.ring import RingRect180DropFilter
from picazzo3.container.route_ports import RoutePortsEastWest

my_ring = RingRect180DropFilter()

my_ring_ew = RoutePortsEastWest(contents=my_ring,
                                east_port_labels=["E0", "E1", "W1"],   # ports to be routed eastwards
                                west_port_labels=["W0"])             # ports to be routed westward
layout = my_ring_ew.Layout()
layout.visualize()
../../../../_images/picazzo3-container-route_ports-RoutePortsEastWest-1.png
""" The area_layer_on can be used to disable the
drawing of the area between the layers.
"""
from technologies import silicon_photonics
import ipkiss3.all as i3
from picazzo3.filters.ring import RingRect180DropFilter
from picazzo3.container.route_ports import RoutePortsEastWest

my_ring = RingRect180DropFilter()

my_ring_ew = RoutePortsEastWest(contents=my_ring,
                                east_port_labels=["E0", "E1", "W1"],   # ports to be routed eastwards
                                west_port_labels=["W0"])             # ports to be routed westward
layout = my_ring_ew.Layout(area_layer_on=False)
layout.visualize()
../../../../_images/picazzo3-container-route_ports-RoutePortsEastWest-2.png
""" The target_coordinate_east, target_coordinate_west parameters
can be used to specify where the routes should align"""

from technologies import silicon_photonics
import ipkiss3.all as i3
from picazzo3.filters.ring import RingRect180DropFilter
from picazzo3.container.route_ports import RoutePortsEastWest

my_ring = RingRect180DropFilter()

my_ring_ew = RoutePortsEastWest(contents=my_ring,
                                east_port_labels=["E0", "E1", "W1"],   # ports to be routed eastwards
                                west_port_labels=["W0"])             # ports to be routed westward
layout = my_ring_ew.Layout(target_coordinate_east=-30.0,
                           target_coordinate_west=30.0)
layout.visualize()
../../../../_images/picazzo3-container-route_ports-RoutePortsEastWest-3.png