RoutePortsEastWest

class picazzo3.container.route_ports.RoutePortsEastWest

Routes ports to the east or west side of a component

Parameters:
west_port_labels: ( List with type restriction, allowed types: <class ‘str’> ), *None allowed*

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

east_port_labels: ( List with type restriction, allowed types: <class ‘str’> ), *None allowed*

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

trace_template: ( PCell and _WaveguideTemplate ), *None allowed*

Template for all ports, defaults to TECH.PCELLS.WG.DEFAULT.When set to None, the waveguide templates of the ports will be used.

auto_transition: ( bool, bool_ or int )

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.

external_port_names: str

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

contents: PCell

the contents of the container: the child cell

name: String that contains only ISO/IEC 8859-1 (extended ASCII py3) or pure ASCII (py2) characters

The unique name of the pcell

Other Parameters:
bundle: ( PCell ), locked, *None allowed*

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

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

list of templates to apply to all ports

port_labels: locked

Views

class Layout
Parameters:
target_coordinate_west: ( float ), *None allowed*

The coordinate where the west routes are aligned

target_coordinate_east: ( float ), *None allowed*

The coordinate where the east routes are aligned

reference_west: str and String that contains only ISO/IEC 8859-1 (extended ASCII py3) or pure ASCII (py2) characters

Port Label of port that serves as y reference

reference_east: str and String that contains only ISO/IEC 8859-1 (extended ASCII py3) or pure ASCII (py2) characters

Port Label of port that serves as y reference

spacing: float and number > 0

Distance between the endpoints of the routes

area_layer_on: ( bool, bool_ or int )

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

contents_transformation: GenericNoDistortTransform

transformation to apply to the contents

flatten_contents: ( bool, bool_ or int )

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

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

The name of the view

manhattan: ( bool, bool_ or int )

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

angle_step: float and number > 0

Angle step for rounding.

rounding_algorithm:

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

bend_radius: float and number > 0

Bend radius for the auto-generated bends.

Other Parameters:
routes: locked

Examples

import si_fab.all as pdk  # noqa: F401
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=["out1", "in2", "out2"],  # ports to be routed eastward
    west_port_labels=["in1"],  # ports to be routed westward
)
layout = my_ring_ew.Layout()
layout.visualize(annotate=True)
../../../../../_images/picazzo3-container-route_ports-RoutePortsEastWest-1.png
"""The area_layer_on can be used to enable the
drawing of the area between the layers.
"""
import si_fab.all as pdk  # noqa: F401
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=["out1", "in2", "out2"],  # ports to be routed eastward
    west_port_labels=["in1"],  # ports to be routed westward
)
layout = my_ring_ew.Layout(area_layer_on=True)
layout.visualize(annotate=True)
../../../../../_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"""

import si_fab.all as pdk  # noqa: F401
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=["out1", "in2", "out2"],  # ports to be routed eastward
    west_port_labels=["in1"],  # ports to be routed westward
)
layout = my_ring_ew.Layout(target_coordinate_east=30.0, target_coordinate_west=-30.0)
layout.visualize(annotate=True)
../../../../../_images/picazzo3-container-route_ports-RoutePortsEastWest-3.png