# RingRect90DropFilter¶

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

Rectangular ring filter with two straight 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 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: Other Parameters: coupler_trace_templates: List with type restriction, allowed types: 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 couplers: List with type restriction, allowed types: list of coupler PCells ring_segments: List with type restriction, allowed types: list of Ring PCells name: The unique name of the pcell ring_trace_templates: List with type restriction, allowed types: , 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: Other Parameters: angle_step: float and number > 0 Angle step for rounding. coupler_lengths: list= 0> straight lengths of the coupling section. By default, same lengths as the ring will be used 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 manhattan: ( bool, bool_, bool or int ) Adds rectangular blocks in the bends to avoid as much as possible non-manhattan angles. view_name: str and ( Alphanumeric string or Contains _\$ ) The name of the view coupler_extensions: list additional length of the couplers. By default, the couplers will be extended to the size of the ring. coupler_offsets: list list of offsets of the ring couplers along the centerline coupler_spacings: list 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 shape_position: Coord2 Translation of the shape. area_layer_on: ( bool, 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_transformations: list of coupler transformations bend_radius: float and number > 0 Bend radius for the auto-generated bends. rounding_algorithm: Rounding algorithm used to generate the bends. Can be circular, spline, …. 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 RingRect90DropFilter
from picazzo3.traces.wire_wg.trace import WireWaveguideTemplate
wg1_t = WireWaveguideTemplate(name="wg_template_9")
wg1_t.Layout(core_width=0.5)

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

wg3_t = WireWaveguideTemplate(name="wg_template_11")
wg3_t.Layout(core_width=0.6)

ring = RingRect90DropFilter(name="my_rect90dropring",
ring_trace_template=wg1_t,
coupler_trace_templates=[wg2_t, wg3_t]) # In a list!!!
layout = ring.Layout(coupler_spacings=[0.65, 0.70], # This results in a 200nm and 250nm gap
straights=(i3.TECH.WG.SHORT_STRAIGHT,i3.TECH.WG.SHORT_STRAIGHT+3.0))

layout.visualize(annotate=True)