Layout changes 3.2.0
There are two small layout bugfixes in IPKISS 3.2, which can have an impact on your existing layouts. You can check out the two cases below:
ShapeArc
In ShapeArc, the angle_step
is adjusted a bit so the full arc is covered.
However, if end_angle
< start_angle
, and the angle difference is not a multiple of angle_step,
the angle_step
was not adjusted properly, and this may cause the arc not to stop exactly at end_angle
.
The following code would yield the wrong result in ipkiss 3.1.3, but this has been fixed in ipkiss 3.2.0:
import ipkiss3.all as i3
i3.LayoutCell().Layout(
elements=[
i3.SRef(
reference=i3.Waveguide().Layout(
shape=i3.ShapeArc(radius=10, start_angle=274, start_face_angle=180,
end_angle=0, end_face_angle=90, angle_step=5)
).cell
),
i3.SRef(
reference=i3.Waveguide().Layout(shape=[(10, 0), (10, 5)]).cell
)
]
).visualize()
route_to_parallel_line
The function route_to_parallel_line
is used to route an S-shape bend between two parallel lines. The parameter
max_s_bend_angle
is used to define the maximum angle of the S-bend. It may be 90 degrees, in which case manhattan
routing is performed.
In IPKISS 3.1.3 there was a small bug: if the maximum s-bend angle (max_s_bend_angle
) could be used to route
between two parallel lines, instead a slightly smaller value was used.
The bugfix results in a slightly different calculation of S-bend routes.
The following code would yield slightly wrong result in ipkiss 3.1.3, but this has been fixed in ipkiss 3.2.0:
from technologies import silicon_photonics
from ipkiss3 import all as i3
wg = i3.Waveguide()
wg_lay = wg.Layout()
from picazzo3.container.fanout_ports import FanoutPorts
my_wg_fanout = FanoutPorts(contents=wg,
port_labels=["in"]
)
lay = my_wg_fanout.Layout(flatten_contents=False,
area_layer_on=False, # if True, adds area layer on the bundle
output_direction=i3.WEST,
spacing=20.0, # spacing between outputs
reference_coordinate=-12.5, # y-coordinate (or x for NORTH and SOUTH) of first waveguide
target_coordinate=20.0, # x-coordinate (or y for NORTH and SOUTH) of output port
max_s_bend_angle=90.0, # maximum angle of S-bend
bend_radius=4.5 # bend radius of waveguides
)
lay.visualize()