RingTraces

class picazzo3.filters.ring.cell.RingTraces

Ring Resonator where the ring itself is made of an arbitrary a set of traces.

The user supplies a list of trace templates in the property ‘ring_trace_templates’.

In the Layout, a list of shapes should be supplied, with the same length as the list of trace templates.

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_templates: List with type restriction, allowed types: <class ‘ipkiss3.pcell.cell.pcell.PCell’>

Trace templates for the ring segments

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

See also

RingShape
RingRect

Views

class Layout
Parameters:
shapes:

Shapes of the ring segments. Should have the same length as the list supplied in ‘ring_trace_templates’

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

Examples

"""This example demonstrates a very generic ring consisting of two waveguides (traces)
with a different trace template.
"""
import si_fab.all as pdk  # noqa: F401
from picazzo3.filters.ring import RingTraces
from picazzo3.traces.wire_wg.trace import WireWaveguideTemplate

wg1 = WireWaveguideTemplate(name="wg_template_1")
wg1.Layout(core_width=0.5)
wg2 = WireWaveguideTemplate(name="wg_template_2")
wg2.Layout(core_width=0.7)

shape1 = [(0.0, -10.0), (-10.0, -10.0), (-10.0, 10.0), (0.0, 10.0)]
shape2 = [(0.0, 10.0), (10.0, 10.0), (10.0, -10.0), (0.0, -10.0)]

ring = RingTraces(name="my_ringtrace", ring_trace_templates=[wg1, wg2])
layout = ring.Layout(shapes=[shape1, shape2])

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