BendDirectionalCoupler

class picazzo3.wg.dircoup.cell.BendDirectionalCoupler(*args, **kwargs)

A directional coupler consisting of 2 parallel (horizontal) waveguides with bends at the start and end.

Parameters:

trace_template1: PCell and _WaveguideTemplate, optional

waveguide template used by the south arm of the directional coupler

trace_template2: PCell and _WaveguideTemplate, optional

waveguide template used by the north arm of the directional coupler. If not set, it defaults to the template of the south arm

wg1a: PCell, optional

South-west waveguide

wg1b: PCell, optional

South-east waveguide

wg2a: PCell, optional

North-west waveguide

wg2b: PCell, optional

North-east waveguide

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

length of the directional coupler

cell_instances: _PCellInstanceDict, optional

name: optional

The unique name of the pcell

n_inputs: int and number > 0, locked

Number of input channels.

n_outputs: int and number > 0, locked

Number of output channels.

Views

Layout
Parameters:

angle_step: float and number > 0, optional

angle step for rounding

bend_angle: float, optional

angle at which the directional coupler is bent

bend_angles1: tuple2, optional

Input and output angle of the bends of arm 1. Defaults to bend_angle. If set, bend_angle will be ignored.

bend_angles2: tuple2, optional

Input and output angle of the bends of arm 2. Defaults to bend_angle. If set, bend_angle will be ignored.

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

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

length of the straight waveguide after the bend

view_name: str, optional

The name of the view

reverse_bends: optional

If True, all bends will be reversed. This has only an effect on assymetric bends, such as splines

reverse_individual_bends1a: List with type restriction, allowed types: <type ‘bool’>, optional

List of booleans to indicate whether the individual bends in arm1 should be reversed

reverse_individual_bends1b: List with type restriction, allowed types: <type ‘bool’>, optional

List of booleans to indicate whether the individual bends in arm1 should be reversed

reverse_individual_bends2a: List with type restriction, allowed types: <type ‘bool’>, optional

List of booleans to indicate whether the individual bends in arm2 should be reversed

reverse_individual_bends2b: List with type restriction, allowed types: <type ‘bool’>, optional

List of booleans to indicate whether the individual bends in arm2 should be reversed

coupler_spacing: float, optional

Spacing between the two waveguide centerlines.

wg1a_shape: Shape, optional

Shape for the south-west part of the waveguide

wg1b_shape: Shape, optional

Shape for the south-east part of the waveguide

wg2a_shape: Shape, optional

Shape for the north-west part of the waveguide

wg2b_shape: Shape, optional

Shape for the north-east part of the waveguide

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

units_per_grid: locked

Ratio of grid cell and design unit

unit: float and number > 0, locked

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

Examples

from technologies import silicon_photonics

from picazzo3.wg.dircoup import BendDirectionalCoupler
from picazzo3.traces.wire_wg.trace import WireWaveguideTemplate
import ipkiss3.all as i3
wg_t = WireWaveguideTemplate(name="my_wg_template2")
wg_t.Layout(core_width=0.500,
            cladding_width=i3.TECH.WG.CLADDING_WIDTH,
            core_process=i3.TECH.PROCESS.WG)
C = BendDirectionalCoupler(name="my_dircoup_2",
                        trace_template1=wg_t,
                        coupler_length=6.0)
layout = C.Layout(coupler_spacing=0.7,
                bend_radius=10.0,
                manhattan=True,
                straight_after_bend=6.0,
                bend_angle=60.0)
layout.visualize()
../../../../_images/picazzo3-wg-dircoup-cell-BendDirectionalCoupler-1.png