RingRect

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

A Ring resonator consisting of a rounded rectangular trace.

You should specify the trace template for the ring and a shape

By default, this ring has no couplers. you can supply the couplers manually as a list of child cells through the property ‘couplers’, or you can subclass this PCell to define the couplers internally.

Parameters:

ring_trace_template: PCell and _WaveguideTemplate

Trace template for the ring waveguide

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

list of coupler PCells

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

list of Ring PCells

name:

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.

See also

RingTraces, RingShape, RingRoundedShape

Views

Layout
Parameters:

angle_step: float and number > 0

Angle step for rounding.

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.

straights: Coord2

view_name: str and ( Alphanumeric string or Contains _$ )

The name of the view

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

Other Parameters:
 

shape: locked

shapes: locked

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

Examples

""" This example demonstrates a simple rounded rectangular ring consisting
drawns with a user-defined waveguide template. The straights parameter
defines the straigths section along the X and Y axis.
"""
from technologies import silicon_photonics
from ipkiss3 import all as i3
from picazzo3.filters.ring import RingRect
from picazzo3.traces.wire_wg.trace import WireWaveguideTemplate

wg_t = WireWaveguideTemplate(name="wg_template_3")
wg_t.Layout(core_width=0.7, core_process=i3.TECH.PROCESS.FC)

ring = RingRect(name="my_rectring",
                ring_trace_template=wg_t)
layout = ring.Layout(straights=(i3.TECH.WG.SHORT_STRAIGHT,i3.TECH.WG.SHORT_STRAIGHT+3.0))

layout.visualize(annotate=True)
../../../../_images/picazzo3-filters-ring-cell-RingRect-1.png
"""
We create a custom ring with a custom trace template and a custom coupler. You can use any trace template for the ring
and any PCell for the coupler.
"""
from technologies import silicon_photonics
from ipkiss3 import all as i3
from picazzo3.traces.slot_wg.trace import SlotWaveguideTemplate
from picazzo3.filters.ring import RingRect
from picazzo3.traces.wire_wg import WireWaveguideTemplate

length_ring = 50.0
bend_radius = 10.0
height_ring  = 10.0

# We make the coupler
wire_wg_t = WireWaveguideTemplate()
coupler = i3.Waveguide(trace_template=wire_wg_t)
coupler_layout = coupler.Layout(shape=[(-(length_ring+3*bend_radius)/2, 0), ((3*bend_radius+length_ring)/2,0)])

# Create the waveguide template for the ring
wg_t = SlotWaveguideTemplate()
wg_t.Layout(core_width=0.5,
            slot_width=0.12,
            cladding_width=2 * 3.0 + 0.5)
# We make the ring

ring = RingRect(ring_trace_template=wg_t,
                couplers = [coupler])
layout = ring.Layout(straights=(length_ring,height_ring),
                     bend_radius=bend_radius,
                     coupler_transformations=[i3.Translation((0,-height_ring-bend_radius+4.3))]) #Control spacing here.

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