# Spiral waveguide¶

SiFab contains one spiral:

## FixedPortWithLengthSpiral¶

This class allows to connect two ports with a fixed position (input_port and output_port) using a spiral. The total port-to-port spiral length (total_length) and the number of loops (n_o_loops) can be fully controlled by the user. Alternatively to using two ports with fixed position, the user can specify

• a fixed input port (input_port) and the distance between the ports (ports_distance), or
• the distance between the ports (ports_distance) without specifying any port. In this case, input_port is placed at the origin.

By default, the spiral is drawn starting 100 um from the input port (along the vector connecting the input and the output ports), however this can be adapted by changing the value of offset_spiral_start. If a layout with the given property values cannot be generated, an exception is raised with suggestions on how to meet the layout specifications.

Reference

Click on the name of the component below to see the complete PCell reference.

 si_fab.all.FixedPortWithLengthSpiral Spiral with fixed position for the ports or a fixed length.

Example

from si_fab import all as pdk
from ipkiss3 import all as i3

p1 = i3.OpticalPort(name="in",
position=(0.0, 0.0),
angle_deg=0.0,
trace_template=pdk.SiWireWaveguideTemplate())
p2 = i3.OpticalPort(name="out",
position=(400.0, 0.0),
angle_deg=180.0,
trace_template=pdk.SiWireWaveguideTemplate())

sp = pdk.FixedPortWithLengthSpiral(input_port=p1,
output_port=p2,
total_length=5000.0,
n_o_loops=5)
sp_lv = sp.Layout()
sp_lv.visualize(annotate=True)