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.

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

Trace templates for the ring segments

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


class Layout

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

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.


list of coupler transformations


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


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

wg1 = WireWaveguideTemplate(name="wg_template_1")
wg2 = WireWaveguideTemplate(name="wg_template_2")

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])