Rounded spiral with incoupling sections that calculates its length. The total length is set by the property
total_lengthand the inner size of the spiral will be adapted so that the total length of the spiral (including the incoupling sections) would be equal to
total_length. The way this inner size is calculated can set using properties in the Layout view.
total_length: float and number > 0, optional
Total design length of the spiral.
n_o_loops: int and number > 0, optional
Number of loops in the spiral
trace_template: PCell and _TraceTemplate, optional
Trace template used in the chain.
cell_instances: _PCellInstanceDict, optional
The unique name of the pcell
traces: List with type restriction, allowed types: <class ‘ipkiss3.pcell.cell.pcell.PCell’>, locked
n_o_traces: int and number > 0, locked
Total number of traces used in the spiral.
The inner size of the spiral is calculated by assuming a minimal inner_size and growing it in either the direction set by
growth_direction. An error is raised when that is impossible to do with the set number of loops.
angle_step: float and number > 0, optional
angle step for rounding
adds rectangular blocks in the bends to avoid as much as possible non-manhattan angles
view_name: str, optional
The name of the view
incoupling_length: float and Real, number and number >= 0, optional
length of the incoupling section.
rounding algorithm used to generate the bends. Can be circular, spline, …
spacing: float and Real, number and number >= 0, optional
spacing between the individual loops.
shapes: list, optional
List of shapes used to build the traces
If true the instances are flattened
bend_radius: float and number > 0, optional
bend radius for the auto-generated bends
grid: float and number > 0, locked
design grid. Extracted by default from TECH.METRICS.GRID
Number of grid cells per design unit
Ratio of grid cell and design unit
unit: float and number > 0, locked
design unit. Extracted by default from TECH.METRICS.UNIT
from technologies import silicon_photonics from picazzo3.wg.spirals import FixedLengthSpiralRounded from ipkiss3 import all as i3 cell = FixedLengthSpiralRounded(total_length=4000, n_o_loops=6, trace_template=i3.TECH.PCELLS.WG.DEFAULT) layout = cell.Layout(incoupling_length=10.0, bend_radius=10.0, spacing=4, stub_direction="H", # either H or V growth_direction="V" # either H or V ) # Checking if the trace length is indeed correct print(layout.trace_length()) layout.visualize()