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

Period for a waveguide with blocks on the side. The base definition is taken from the wg_template which is used for the ports.


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



block_height: float and number > 0, optional

The height of the side block, perpendicular to the waveguide direction. By default, it extends up to the edge of the cladding.

block_layer: __Layer__, optional

Layer on which the blocks should be drawn. By default, the core layer of the waveguide is used.

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

The offset from the waveguide center line to the block’s edge closest to the waveguide core. By default, the core width is used.

block_width: float and number > 0, optional

The width of the block along the waveguide direction. If ‘relative_block_width’ is True (default), this is expressed as a fraction of the period length (fill factor).

relative_block_width: optional

If True, the block width is expressed as a fraction of the length.

view_name: str, optional

The name of the view

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 with blocks on the side.
from technologies import silicon_photonics
from ipkiss3 import all as i3
from picazzo3.wg.grating import WaveguideUniformGrating, WaveguideSideBlockGratingPeriod
from picazzo3.traces.wire_wg import WireWaveguideTemplate

t1 = WireWaveguideTemplate(name="wire_t")
t1.Layout(core_width=0.6, cladding_width=3.0)

period = WaveguideSideBlockGratingPeriod(name="period_sb",
period.Layout(length=0.31) # use defaults

grating = WaveguideUniformGrating(name="my_sideblock_grating",

layout = grating.Layout()