RingRect

class picazzo3.filters.ring.cell.RingRect

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

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

"""This example demonstrates a simple rounded rectangular ring consisting
of a user-defined waveguide template. The straights parameter
defines the straight section along the X and Y axis.
"""
import si_fab.all as pdk  # noqa: F401
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.
"""
import si_fab.all as pdk  # noqa: F401
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(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