SiFab contains one spiral:
- FixedPortWithLengthSpiral: a spiral where the position of the ports and the length can be easily controlled by the user.
This class allows to connect two ports with a fixed position (
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 (
- the distance between the ports (
ports_distance) without specifying any port. In this case,
input_portis 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
If a layout with the given property values cannot be generated, an exception is raised with suggestions on how to meet the layout specifications.
Click on the name of the component below to see the complete PCell reference.
||Spiral with fixed position for the ports or a fixed length.|
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)