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
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
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
bend_radius: float and number > 0, optional
bend radius for the auto-generated bends
grid: float and number > 0, locked
design grid. Extracted by default from TECH.METRICS.GRID
grids_per_unit: locked
Number of grid cells per design unit
shape: locked
units_per_grid: locked
Ratio of grid cell and design unit
shapes: locked
Shapes of the ring segments. Locked, as there is only 1 ring segment. Use ‘shape’ instead
unit: float and number > 0, locked
design unit. Extracted by default from TECH.METRICS.UNIT
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()
""" 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()
-