WaveguideConnector

class picazzo3.wg.connector.cell.WaveguideConnector

Connector between two port interfaces. This component will generate a waveguide between two ports, and if necessary add the required transitions. By default, the shape of the waveguide is a rounded shape based on the default RouteManhattan, but it is possible to supply a user-defined shape (not a route with waypoints, but an actual shape including the bends.)

Parameters:
trace_template: PCell and _WaveguideTemplate

Waveguide template for the connector

end_port: _PortInterface

Port where the connector ends

start_port: _PortInterface

Port where the connector starts

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:
end_transition: PCell, locked

transition at the end port

start_transition: PCell, locked

transition at the start port

trace: PCell, locked

trace between the transitions

Views

class Layout
Parameters:
end_transition_length: ( float and Real, number and number >= 0 ), *None allowed*

Length of the end transition. Set to None to use the default.

start_transition_length: ( float and Real, number and number >= 0 ), *None allowed*

Length of the start transition. Set to None to use the default.

flatten: ( bool, bool_ or int )

If true the contents is flattened, removing one level of hierarchy

shape: Shape

Shape of the trace. Automatically uses a manhattan shape

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

Other Parameters:
end_transition_parameters: dict, locked

Layout parameters for the end transition

start_transition_parameters: dict, locked

Layout parameters for the start transition

trace_shape: Shape, locked

shape of the actual waveguide, minus the transitions

Examples

import si_fab.all as pdk  # noqa: F401
from picazzo3.wg.connector import WaveguideConnector

# Make two short waveguides (of different type) as a start and end point
from picazzo3.traces.wire_wg.trace import WireWaveguideTemplate

wg_t = WireWaveguideTemplate()
wg_t.Layout(core_width=0.550)
wg1 = wg_t()
wg1.Layout(shape=[(-10.0, 0.0), (0.0, 0.0)])

from picazzo3.traces.rib_wg.trace import RibWaveguideTemplate

ribwg_t = RibWaveguideTemplate()
ribwg_t.Layout(core_width=0.700)
wg2 = ribwg_t()
wg2.Layout(shape=[(40.0, 30.0), (45.0, 40.0)])

C = WaveguideConnector(trace_template=wg_t, start_port=(wg1, "out"), end_port=(wg2, "in"))
layout = C.Layout()

layout.visualize(annotate=True)
../../../../../_images/picazzo3-wg-connector-cell-WaveguideConnector-1.png