class picazzo3.phc.w1.cell.GenericW1Waveguide(*args, **kwargs)

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’>, optional

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

cell_instances: _PCellInstanceDict, optional

name: optional

The unique name of the pcell



view_name: str, optional

The name of the view

n_o_periods: int and number > 0, optional

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

port_offset: float, optional

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

port_row: optional

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

port_width: optional

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

start_even: optional

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

lattice_pitches: Coord2, optional

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, optional

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

pitches: optional

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

cells: dict, optional

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, optional

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

ports_coordinates: optional

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

process_hfw: ProcessLayer, optional

process for underetching

purpose_hfw: PatternPurpose, optional

drawing purpose for underetching

zero_line_y: float, optional

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 .

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 will generate a W1 with a lattice pitch which is slightly
different along the horizontal and oblique direction

from technologies import silicon_photonics
from ipkiss3 import all as i3
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)]

print unit_cells
# 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(unit_cells=unit_cells,
                     lattice_pitches=(0.43, 0.45),