Spiral waveguide

SiFab contains one spiral, FixedPortWithLengthSpiral.

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.

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)
../../../../../../../../_images/example_spiral.png