WgBend

class picazzo3.wg.bend.cell.WgBend(*args, **kwargs)

Fixed Waveguide bend of an arbitrary angle. This is a rounded waveguide, so it takes a rounding algorithm and a bend radius as a parameter, as well as a trace_template.

Parameters:

trace_template: PCell and _WaveguideTemplate

external_port_names:

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

name:

The unique name of the pcell

Other Parameters:
 

contents: PCell and _Trace, locked

Views

Layout
Parameters:

angle: float

angular coverage of the bend

angle_step: float and number > 0

Angle step for rounding.

control_shape_layer: __Layer__

layer on which the control shape is drawn

cover_layers: List with type restriction, allowed types: <class ‘ipkiss.primitives.layer.Layer’>

layers that can be used to generate additional coverage of the trace (e.g. manhattan corners)

draw_control_shape: ( bool, bool_, bool or int )

draws the control shape on top of the waveguide

manhattan: ( bool, bool_, bool or int )

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

start_angle: float

start_angle of the bend. Negative is clockwise, positive is counterclockwise

view_name: str and ( Alphanumeric string or Contains _$ )

The name of the view

contents_transformation: GenericNoDistortTransform

rounding_algorithm:

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

core_layer: __Layer__

layer used to define the core of the waveguide

bend_radii: list<number > 0>

Bend radius for every individual bend.

remove_straight_angles: ( bool, bool_, bool or int )

Removes the waypoints with straight angles. Set to False if the algorithm uses waypoint-specific information.

reverse_bends: ( bool, bool_, bool or int )

When set to True, it will generate the bends backwards. This has only effect when the bend algorithm is not symmetric.

reverse_individual_bends: list<( bool, bool_, bool or int )>

When set to True, it will generate the individual bends backwards. This has only effect when the bend algorithm is not symmetric. Should have length equal to the shape for closed shapes, but equal to shape-2 for open shapes.

rounding_algorithms:

Rounding algorithm for every individual bend. Can be circular, spline, … Should have length equal to the shape for closed shapes, but equal to shape-2 for open shapes.

input_port: TracePort

output_port: TracePort

trace_template_for_ports: _TraceTemplate.Layout

Trace template to be used for the ports.

shape: Shape

Shape from which the Trace is calculated

flatten_contents: ( bool, bool_, bool or int )

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

bend_radius: float and number > 0

Bend radius for the auto-generated bends.

Other Parameters:
 

center_line_shape: locked

Automatically calculated shape of the center line of the trace

Examples

from technologies import silicon_photonics
from picazzo3.wg.bend import WgBend
from picazzo3.traces.wire_wg.trace import WireWaveguideTemplate
import ipkiss3.all as i3
wg_t = WireWaveguideTemplate()
wg_t.Layout(core_width=0.550,
            cladding_width=i3.TECH.WG.CLADDING_WIDTH,
            core_process=i3.TECH.PROCESS.WG)
C = WgBend(trace_template=wg_t)
layout = C.Layout(bend_radius=20.0,
                  start_angle=45.0,
                  angle=-120)
layout.visualize(annotate=True)
../../../../_images/picazzo3-wg-bend-cell-WgBend-1.png