WaveguideBundle

class picazzo3.wg.bundle.cell.WaveguideBundle(*args, **kwargs)

Bundle of waveguides, routed together

Parameters:

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

the traces in this bundle

cell_instances: _PCellInstanceDict, optional

name: optional

The unique name of the pcell

Views

Layout
Parameters:

view_name: str, optional

The name of the view

area_layer_on: optional

When True, the entire bundle area will be covered by all the cover layers.

trace_transformations: list and List with type restriction, allowed types: <class ‘ipkiss.geometry.transform.Transform’>, optional

transformations to be applied to each of the traces

cover_layers: List with type restriction, allowed types: <class ‘ipkiss.primitives.layer.Layer’>, optional

layers that can be used to generate additional coverage of the trace (e.g. manhattan corners)

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

Examples

from technologies import silicon_photonics
import ipkiss3.all as i3
from picazzo3.wg.bundle import WaveguideBundle
from picazzo3.traces.wire_wg.trace import WireWaveguideTemplate
wg_t = WireWaveguideTemplate()
wg_t.Layout(core_width=0.550,
            cladding_width=i3.TECH.WG.CLADDING_WIDTH,
            core_process=i3.TECH.PROCESS.WG)
trace = wg_t()
trace.Layout(shape=[(0.0,0.0), (20.0, 5.0)])
trace_tfs = [i3.Translation(translation=(0.0,10.0*i)) for i in range(5)]
C = WaveguideBundle(traces=[trace]*5)
lay = C.Layout(trace_transformations=trace_tfs)
lay.visualize()
../../../../_images/picazzo3-wg-bundle-cell-WaveguideBundle-1.png