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
Total design length of the spiral.
n_o_loops: int and number > 0
Number of loops in the spiral
trace_template: PCell and _TraceTemplate
Trace template used in the chain.
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.
List of shapes used to build the traces
view_name: str and ( Alphanumeric string or Contains _$ )
The name of the view
incoupling_length: float and Real, number and number >= 0
length of the incoupling section.
spacing: float and Real, number and number >= 0
spacing between the individual loops.
flatten: ( bool, bool_, bool or int )
If true the instances are flattened
from technologies import silicon_photonics from picazzo3.wg.spirals import FixedLengthSpiral from ipkiss3 import all as i3 cell = FixedLengthSpiral(total_length=4000, n_o_loops=6, trace_template=i3.TECH.PCELLS.WG.DEFAULT) layout = cell.Layout(incoupling_length=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(annotate=True)