RingRectNotchFilter

class picazzo3.filters.ring.cell.RingRectNotchFilter

Rectangular Ring resonator with one straight bus waveguide, which is placed on the South side of the ring. This type of filter is often called a ‘notch filter’ or ‘all-pass’ filter.

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’>

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

ring_trace_template: PCell and _WaveguideTemplate

Trace template for the ring waveguide

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

list of Ring PCells

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

list of coupler PCells

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

class Layout
Parameters:
coupler_extensions: list<Coord2 and number >= 0>

additional length of the couplers. By default, the couplers will be extended to the size of the ring.

coupler_lengths: list<number >= 0>

straight lengths of the coupling section. By default, same lengths as the ring will be used

coupler_offsets: list<Real, number>

list of offsets of the ring couplers along the centerline

coupler_spacings: list<Real, number>

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 and number >= 0
shape_position: Coord2

Translation of the shape.

coupler_transformations:

list of coupler transformations

area_layer_on: ( bool, bool_ or int )

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

coupler_parameters:

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

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

manhattan: ( bool, bool_ or int )

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

angle_step: float and number > 0

Angle step for rounding.

rounding_algorithm:

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:
shape: locked
shapes: locked

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

Examples

import si_fab.all as pdk  # noqa: F401
from picazzo3.filters.ring import RingRectNotchFilter
from ipkiss3 import all as i3
from picazzo3.traces.wire_wg.trace import WireWaveguideTemplate

wg1_t = WireWaveguideTemplate(name="wg_template_4")
wg1_t.Layout(core_width=0.5)

wg2_t = WireWaveguideTemplate(name="wg_template_5")
wg2_t.Layout(core_width=0.4)

ring = RingRectNotchFilter(
    name="my_rectnotchring", ring_trace_template=wg1_t, coupler_trace_templates=[wg2_t]
)  # In a list!!!
layout = ring.Layout(
    coupler_spacings=[0.65],  # This results in a 200nm gap
    area_layer_on=True,
    straights=(i3.TECH.WG.SHORT_STRAIGHT, i3.TECH.WG.SHORT_STRAIGHT + 3.0),
)

layout.visualize(annotate=True)
../../../../../_images/picazzo3-filters-ring-cell-RingRectNotchFilter-1.png