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.
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
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.
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
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
adds rectangular blocks in the bends to avoid as much as possible non-manhattan angles
rounding algorithm used to generate the bends. Can be circular, spline, …
shape_position: Coord2, optional
Translation of the shape.
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
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
When True, the Ring area will be covered by i3.Rectangles on all cover layers of the ring waveguide template.
list of coupler transformations
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
Number of grid cells per design unit
Shapes of the ring segments. Locked, as there is only 1 ring segment. Use ‘shape’ instead
Ratio of grid cell and design unit
unit: float and number > 0, locked
design unit. Extracted by default from TECH.METRICS.UNIT
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()