RingRectSymm90DropFilter

class picazzo3.filters.ring.cell.RingRectSymm90DropFilter(*args, **kwargs)

Rectangular ring filter with two access waveguide. This component is often called a channel drop filter. The access waveguides are placed south and east of the Ring, at 90 degree angles. The shape of the bus waveguides mirrors the shape of the ring, which makes the coupling section symmetric.

The ring shape is a rounded rectangle of which the bend radius can be specified, as well as the horizontal and vertical straight sections. it is also possible to specify the rounding algorithm of the bends.

The waveguide template of the ring and the couplers can be chosen independently.

Parameters:

coupler_trace_templates: List with type restriction, allowed types: <class ‘ipkiss3.pcell.cell.pcell.PCell’>, optional

list of trace_templates for the ring couplers. By default the same template as the ring is taken

ring_trace_template: PCell and _WaveguideTemplate, optional

Trace template for the ring waveguide

couplers: List with type restriction, allowed types: <class ‘ipkiss3.pcell.cell.pcell.PCell’>, optional

list of coupler PCells

ring_segments: List with type restriction, allowed types: <class ‘ipkiss3.pcell.cell.pcell.PCell’>, optional

list of Ring PCells

cell_instances: _PCellInstanceDict, optional

name: optional

The unique name of the pcell

ring_trace_templates: List with type restriction, allowed types: <class ‘ipkiss3.pcell.cell.pcell.PCell’>, locked

Trace templates for the ring segments. Locked, as there is only one segment in this Ring. Use ‘ring_trace_template’ instead.

Views

Layout
Parameters:

angle_step: float and number > 0, optional

angle step for rounding

coupler_angles: list<[0,90]>, optional

coupler_lengths: list<number >= 0>, optional

straight lengths of the couplers. if None, same lengths as the ring will be used

coupler_parameters: optional

Parameters for the couplers. This is a list of dicts, and the length of the list should be the same as the number of couplers

grid: float and number > 0, optional

design grid. Extracted by default from TECH.METRICS.GRID

grids_per_unit: optional

Number of grid cells per design unit

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

shape_position: Coord2, optional

Translation of the shape.

units_per_grid: optional

Ratio of grid cell and design unit

view_name: str, optional

The name of the view

coupler_straights: list<number >= 0>, optional

lengths of the straigth sections at the start and end of the couplers

coupler_radii: list<number >= 0>, optional

radii of the couplers. if None, same radius as the ring will be used

coupler_rounding_algorithms: list<ShapeRound>, optional

rounding algorithm of the couplers. if None, same radius as the ring will be used

coupler_offsets: list<Real, number>, optional

list of offsets of the ring couplers along the centerline

coupler_spacings: list<Real, number>, optional

list of centerline-to-centerline spacings of the ring couplers.When negative, the ring and coupler waveguide will cross, which ispossible when the ring traces template and the coupler trace templateare on different process layers (vertical couplers)

straights: Coord2, optional

area_layer_on: optional

When True, the Ring area will be covered by i3.Rectangles on all cover layers of the ring waveguide template.

coupler_transformations: optional

list of coupler transformations

unit: float and number > 0, optional

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

bend_radius: float and number > 0, optional

bend radius for the auto-generated bends

shape: locked

shapes: locked

Shapes of the ring segments. Locked, as there is only 1 ring segment. Use ‘shape’ instead

Examples

from technologies import silicon_photonics
from ipkiss3 import all as i3
from picazzo3.filters.ring import RingRectSymm90DropFilter

ring = RingRectSymm90DropFilter(name="my_rectsymm90dropring")
layout = ring.Layout(bend_radius=8.0,
            coupler_lengths = [1.0, 4.0],
            coupler_radii=[3.0, 5.0],
            coupler_angles=[90.0, 30.0],
            manhattan=True,
            straights=(i3.TECH.WG.SHORT_STRAIGHT,i3.TECH.WG.SHORT_STRAIGHT+3.0)
            )

layout.visualize()
../../../../_images/picazzo3-filters-ring-cell-RingRectSymm90DropFilter-1.png