RoundedWaveguideConnector

class picazzo3.wg.connector.cell.RoundedWaveguideConnector(*args, **kwargs)

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, optional

Waveguide template for the connector

end_port: _PortInterface, optional

Port where the connector ends

start_port: _PortInterface, optional

Port where the connector starts

cell_instances: _PCellInstanceDict, optional

name: optional

The unique name of the pcell

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

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

rounding_algorithm: optional

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

view_name: str, optional

The name of the view

end_transition_length: optional

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

start_transition_length: optional

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

flatten: optional

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

shape: Shape, optional

Shape of the trace. Automatically uses a manhattan shape

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

The length of the straight end section of the route

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

The minimum length of any straight sections in the route

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

The length of the straight start section of the route

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

unit: float and number > 0, locked

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

units_per_grid: locked

Ratio of grid cell and design unit

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

from technologies import silicon_photonics
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()
../../../../_images/picazzo3-wg-connector-cell-RoundedWaveguideConnector-1.png