WaveguideNonUniformGrating

class picazzo3.wg.grating.cell.WaveguideNonUniformGrating

Waveguide with inline, non-uniform grating. The grating periods are described as individual cells, and they are concatenated into a grating.

Parameters:
period_cells: List with type restriction, allowed types: <class ‘ipkiss3.pcell.cell.pcell.PCell’> and List with type restriction, allowed types: <class ‘picazzo3.wg.grating.cell._WaveguideGratingPeriod’>
name: String that contains only ISO/IEC 8859-1 (extended ASCII py3) or pure ASCII (py2) characters

The unique name of the pcell

Views

class Layout
Parameters:
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

"""How to create a fully customized non-uniform grating using
3 different unit cells constructed from two waveguide templates.
"""

import si_fab.all as pdk  # noqa: F401
from picazzo3.wg.grating import WaveguideNonUniformGrating, WaveguideSectionsGratingPeriod
from picazzo3.traces.wire_wg import WireWaveguideTemplate
from picazzo3.traces.slot_wg import SlotWaveguideTemplate

# 2 templates to make a single period unit cell
t1 = WireWaveguideTemplate(name="wire_t")
t1.Layout(core_width=0.6, cladding_width=3.0)

t2 = SlotWaveguideTemplate(name="slot_t")
t2.Layout(core_width=0.6, slot_width=0.15, cladding_width=3.0)

# 3 different grating period unit cells
period1 = WaveguideSectionsGratingPeriod(name="period1", wg_templates=[t1, t2, t1])
period1.Layout(section_lengths=[0.2, 0.3, 0.2])

period2 = WaveguideSectionsGratingPeriod(name="period2", wg_templates=[t1, t2, t1])
period2.Layout(section_lengths=[0.13, 0.4, 0.13])

period3 = WaveguideSectionsGratingPeriod(name="period3", wg_templates=[t1, t2, t1])
period3.Layout(section_lengths=[0.11, 0.5, 0.11])

# a nonuniform grating with different starting and ending cells (apodized)
grating = WaveguideNonUniformGrating(
    name="my_nonuniform_grating",
    period_cells=[
        period1,
        period2,
        period3,
        period3,
        period3,
        period3,
        period3,
        period3,
        period3,
        period3,
        period3,
        period3,
        period3,
        period3,
        period2,
        period1,
    ],
)
layout = grating.Layout()

layout.visualize(annotate=True)
../../../../../_images/picazzo3-wg-grating-cell-WaveguideNonUniformGrating-1.png