WaveguideSectionsGratingPeriod
- class picazzo3.wg.grating.cell.WaveguideSectionsGratingPeriod
waveguide grating period consisting of concatenated waveguide sections. At the logical level, the waveguides are connected using WaveguideReflectors, which result in a model based on simple Fresnel reflection.
- Parameters:
- wg_templates: List with type restriction, allowed types: <class ‘ipkiss3.pcell.cell.pcell.PCell’>
List of waveguide templates that make up a grating period
- wg_template: PCell and _WaveguideTemplate
Waveguide template of start and end of the period (and ports)
- 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:
- section_lengths: list<number >= 0>
List of lengths for the waveguide templates
- length: float and Real, number and number >= 0
Length of the grating period.
- 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 by constructing period unit cells of different waveguide sections. """ 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_sections", 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)