RoundedWaveguideConnector

class picazzo3.wg.connector.cell.RoundedWaveguideConnector

Connector between two port interfaces. This component will generate a rounded waveguide between two ports, and if necessary add the required transitions. By default, the control shape of the rounded waveguide is based on the default RouteManhattan. It is also possible to provide a custom control shape (waypoints).

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:
manhattan: ( bool, bool_ or int )

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

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

start_straight: float and Real, number and number >= 0

The length of the straight start section of the route

end_straight: float and Real, number and number >= 0

The length of the straight end section of the route

min_straight: float and Real, number and number >= 0

The minimum length of any straight sections in the route

angle_step: float and number > 0

Angle step for rounding.

rounding_algorithm: *None allowed*

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:
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 RoundedWaveguideConnector

# 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 = RoundedWaveguideConnector(trace_template=wg_t, start_port=(wg1, "out"), end_port=(wg2, "in"))

# it is possible to overrule the parameters of the transitions
layout = C.Layout(bend_radius=10.0, start_transition_length=4.0)

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