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:
In ShapeArc, the
angle_step is adjusted a bit so the full arc is covered.
start_angle, and the angle difference is not a multiple of angle_step,
angle_step was not adjusted properly, and this may cause the arc not to stop exactly at
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 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()