class picazzo3.wg.grating.cell.WaveguideSideGratingPeriod(*args, **kwargs)

Period for a waveguide with side gratings. The base definition is taken from the wg_template which is used for the ports. The widths property then creates the blocks with modified widths, based on the original. (another parameter can be adapted by changing the property width_parameter_name)


n_o_sections: int and number > 0, optional

Number of sections in the grating period

wg_template: PCell and _WaveguideTemplate, optional

Waveguide template of start and end of the period (and ports)

cell_instances: _PCellInstanceDict, optional

name: optional

The unique name of the pcell

modified_waveguide_parameters: locked

wg_templates: List with type restriction, allowed types: <class ‘ipkiss3.pcell.cell.pcell.PCell’>, locked



relative_widths: optional

If True, the values of the width are relative to the original value.

view_name: str, optional

The name of the view

width_parameter_name: str, optional

Name of the property of the waveguide template that is to be adjusted by the values in ‘widths’.

widths: list<Real, number>, optional

The modified widths of the waveguide core. If ‘relative_widths’ is True, the values are relative to the original core width. It is also possible to adjust another parameter than ‘core_width’ by overriding the ‘width_parameter_name’.

section_lengths: list<number >= 0>, optional

List of lengths for the waveguide templates

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

Length of the grating period.

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


""" We make a grating based on a wire waveguide and modify the width of the core
to create side gratings:
from technologies import silicon_photonics
from ipkiss3 import all as i3
from picazzo3.wg.grating import WaveguideUniformGrating, WaveguideSideGratingPeriod

period = WaveguideSideGratingPeriod(n_o_sections=3)

# we modify the width with +/- 50nm
# relative to the original core width
period.Layout(section_lengths=[0.1, 0.13, 0.1],
              widths=[-0.05, +0.05, -0.05],

grating = WaveguideUniformGrating(name="my_side_grating",
layout = grating.Layout()