WireWaveguideTemplate

class picazzo3.traces.wire_wg.WireWaveguideTemplate(*args, **kwargs)

Wire-like waveguide definition, with a core and a cladding. The waveguide is defined as a ‘cladding area’ (i.e. an cladding zone where the trench will be etched or other material will be), and a ‘core area’, which draws the shape of the waveguide core inside the ‘cladding area’.

The waveguide can be drawn on different processes, by default it is the WG process.

          core_width
          <-------->
        cladding_width
<------------------------------>
           ________
          |        |
__________|        |____________
Parameters:

cell_instances: _PCellInstanceDict, optional

name: optional

The unique name of the pcell

Views

Layout
Parameters:

cover_layers: List with type restriction, allowed types: <class ‘ipkiss.primitives.layer.Layer’>, optional

layers that can be used to generate additional coverage of the trace (e.g. manhattan corners)

view_name: str, optional

The name of the view

windows: List with type restriction, allowed types: <class ‘ipkiss3.pcell.trace.window.window._TraceWindow’>, optional

List of Trace Windows that know how to draw themselves relative to the shape of the Trace

cladding_process: ProcessLayer, optional

process for the waveguide cladding, defaults to the core process

cladding_purpose: PatternPurpose, optional

drawing purpose layer for the cladding

cladding_width: float and number > 0, optional

total width of the waveguide with cladding

core_process: ProcessLayer, optional

process for the waveguide core

core_purpose: PatternPurpose, optional

drawing purpose for the waveguide core

core_layer: __Layer__, optional

layer used to define the core of the waveguide

core_width: float and number > 0, optional

width of the waveguide core

pin_shape: Shape, optional

shape to be used for the pins

trace_template_for_ports: _TraceTemplate.Layout, optional

Trace template to be used for the ports. Default = this template

control_shape_layer: __Layer__, optional

layer on which the control shape is drawn

draw_control_shape: optional

draws the control shape on top of the waveguide

width: float and Real, number and number >= 0, optional

grids_per_unit: locked

Number of grid cells per design unit

units_per_grid: locked

Ratio of grid cell and design unit

grid: float and number > 0, locked

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

unit: float and number > 0, locked

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

Examples

""" This example shows how you use the template to directly create a waveguide PCell
and its layout. """
from technologies import silicon_photonics
from ipkiss3 import all as i3
from picazzo3.traces.wire_wg.trace import WireWaveguideTemplate
wg_t = WireWaveguideTemplate(name="my_wire_wg_template1")
wg_t.Layout(core_width=0.47,
            cladding_width=2 * 3.0 + 0.47,
            core_process=i3.TECH.PROCESS.WG)

wg = wg_t(name="my_wire_waveguide1")
layout = wg.Layout(shape=[(0.0, 0.0), (10.0, 0.0), (15.0, 15.0)])

layout.visualize()
../../../../_images/picazzo3-traces-wire_wg-WireWaveguideTemplate-1.png
""" This example shows how you use the template as a parameter for a generic
Waveguide PCell. """
from technologies import silicon_photonics
from ipkiss3 import all as i3
from picazzo3.traces.wire_wg.trace import WireWaveguideTemplate

wg_t = WireWaveguideTemplate(name="my_wire_wg_template2")
wg_t.Layout(core_width=0.47,
            cladding_width=2 * 3.0 + 0.47,
            core_process=i3.TECH.PROCESS.WG)

wg = i3.Waveguide(name="my_wire_waveguide2",
                  trace_template=wg_t)
layout = wg.Layout(shape=[(0.0, 0.0), (10.0, 0.0), (15.0, 15.0)])

layout.visualize()
../../../../_images/picazzo3-traces-wire_wg-WireWaveguideTemplate-2.png
""" This example shows how you use the template as a parameter for a rounded
Waveguide PCell. """
from technologies import silicon_photonics
from ipkiss3 import all as i3
from picazzo3.traces.wire_wg.trace import WireWaveguideTemplate

wg_t = WireWaveguideTemplate(name="my_wg_template3")
wg_t.Layout(core_width=0.47,
            cladding_width=2 * 3.0 + 0.47,
            core_process=i3.TECH.PROCESS.WG)

wg = i3.RoundedWaveguide(name="my_rounded_wire_waveguide1",
                         trace_template=wg_t)
layout = wg.Layout(shape=[(0.0, 0.0), (10.0, 0.0), (15.0, 15.0)],
                   bend_radius=7.0,
                   manhattan=True)

layout.visualize()
../../../../_images/picazzo3-traces-wire_wg-WireWaveguideTemplate-3.png