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

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

See also

RingTraces, RingShape, RingRoundedShape

Views

Layout
Parameters:

angle_step: float and number > 0, optional

angle step for rounding

coupler_parameters: optional

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

grid: float and number > 0, optional

design grid. Extracted by default from TECH.METRICS.GRID

grids_per_unit: optional

Number of grid cells per design unit

manhattan: optional

adds rectangular blocks in the bends to avoid as much as possible non-manhattan angles

rounding_algorithm: optional

rounding algorithm used to generate the bends. Can be circular, spline, …

straights: Coord2, optional

units_per_grid: optional

Ratio of grid cell and design unit

view_name: str, optional

The name of the view

shape_position: Coord2, optional

Translation of the shape.

area_layer_on: optional

When True, the Ring area will be covered by i3.Rectangles on all cover layers of the ring waveguide template.

coupler_transformations: optional

list of coupler transformations

unit: float and number > 0, optional

design unit. Extracted by default from TECH.METRICS.UNIT

bend_radius: float and number > 0, optional

bend radius for the auto-generated bends

shape: locked

shapes: locked

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

Examples

"""
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()
../../../../_images/picazzo3-filters-ring-cell-RingRect-1.png
""" 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()
../../../../_images/picazzo3-filters-ring-cell-RingRect-2.png