class picazzo3.phc.w1.cell.GenericW1Waveguide

A generic W1 Photonic Crystal waveguide. The unit cells can be specified as PCells, going outward as from the center line.

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

List of unit cells: center row to outside rows (symmetric)

name: String that contains only ISO/IEC 8859-1 (extended ASCII py3) or pure ASCII (py2) characters

The unique name of the pcell


class Layout
n_o_periods: int and number > 0

number of lattice periods in the propagation direction of the W1 waveguide

port_offset: float

Horizontal offset of the port width respect to the first and last column of the W1 waveguide.

port_row: ( int and number >= 0 ), *None allowed*

Row of the photonic crystal waveguide where the input/output ports are located. If none, it will be the center.

port_width: ( float and number > 0 ), *None allowed*

width of the waveguide ports of the photonic crystal waveguide. If none, a width of sqrt(3)*pitch is taken.

start_even: ( bool, bool_, bool or int )

If true, start the crystal on an even row, if false, on an odd row.

lattice_pitches: Coord2 and number >= 0

Lattice constants along the horizontal and the oblique direction. Choose identical values for a regular grid. If ‘pitches’ is manually set, this property will be ignored. If this property is set, the property ‘pitch’ will be ignored.

pitch: float and Real, number and number >= 0

Lattice constant for a uniform triangular lattice. This property will be ignored if ‘lattice_pitches’ or ‘pitches’ are set manually


Cartesian (X, Y) pitches of the lattice. If this is specified, the properties ‘lattice_pitches’ and ‘pitch’ will be ignored

cells: dict

dictionary of Unit Cells for a Photonic Crystal. The value should be of the form {‘x’: cell1, ‘y’: cell2}. The keys of the dictionary should be characters and each character can be used to identify the unit cell in the map

map: str and String that contains only ISO/IEC 8859-1 (extended ASCII py3) or pure ASCII (py2) characters

Map of the photonic crystal. This property accepts a multi-line string. Every character in the string represents a unit cell of the photonic crystal, which can be found in the property cells


list of tuple with (coordinate (in pitches), angle, waveguide_template, [name])

process_hfw: ProcessLayer

process for underetching

purpose_hfw: PatternPurpose

drawing purpose for underetching

zero_line_y: float

line in the map which corresponds to the coordinate y=0. This can be a fractional number, and the unit is relative to pitches.y .

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


"""We will generate a W1 with a lattice pitch which is slightly
different along the horizontal and oblique direction

from technologies import silicon_photonics  # noqa: F401
from picazzo3.phc.generic import DodecHole
from picazzo3.phc.w1 import GenericW1Waveguide

radii = [0.11, 0.11, 0.12, 0.12]  # inner holes are smaller than outer holes
centers = [(0.10, 0), (0, 0), (0, 0), (0, 0)]  # the inner rows are slightly displaced
unit_cells = [DodecHole().Layout(center=c, radius=r, angle=0) for (r, c) in zip(radii, centers)]

# add them together, with an empty cell in the center
unit_cells = unit_cells[::-1] + [None] + unit_cells

cell = GenericW1Waveguide(name="my_generic_phc_waveguide1", unit_cells=unit_cells)
layout = cell.Layout(
    lattice_pitches=(0.43, 0.45),