RouteToManhattanRelativeToPosition

ipkiss3.pcell.routing.RouteToManhattanRelativeToPosition(**kwargs)

Route a port to a manhattan direction at a coordinate value relative to the given position (coordinate is x for EAST/WEST direction, and y for NORTH/SOUTH) relation is either ‘>’ or ‘<’

Parameters:

input_port : Port object

port to be routed (starting point of the Route)

bend_radius : positive number

radius of the bends used in the route. Default is taken from TECH.WG.BEND_RADIUS

min_straight : nonnegative number

minimum length of a straight section between bends. Default is taken from TECH.WG.SHORT_STRAIGHT

start_straight : nonnegative number

minimum length of the first straight section. Default is the same as min_straight

end_straight : nonnegative number

minimum length of the last straight section. Default is the same as min_straight

rounding algorithm : ShapeModifier object

algorithm which produces the bend shape given the coordinates of the waypoints. default is a circular bend

direction : constant EAST, WEST, NORTH, SOUTH

direction towards which the input_port must be routed

position : number

x-coordinate (if direction is NORTH/SOUTH) or y-coordinate (EAST/WEST) of output port

relation : character ‘<’ or ‘>’

indicates whether the output must be towards the EAST/NORTH (>) or towards the WEST/SOUTH (<) with respect of the input_port

Returns:

RouteToLine object

Examples

from technologies import silicon_photonics
import ipkiss3.all as i3
from ipkiss3.pcell.routing import RouteToManhattanRelativeToPosition

input_port = i3.OpticalPort(name="in", position=(0.0, 0.0), angle_deg=45.0)

# create the route object
route = RouteToManhattanRelativeToPosition(input_port=input_port,
                                           start_straight=10.0,
                                           end_straight=20.0,
                                           direction=i3.DIRECTION.WEST,
                                           relation='<',
                                           position=0.0)

# a route is a Shape, so we can use it to draw a waveguide
wg = i3.RoundedWaveguide()
layout = wg.Layout(shape=route)
layout.visualize()
../../../_images/ipkiss3-pcell-routing-RouteToManhattanRelativeToPosition-1.png
from technologies import silicon_photonics
import ipkiss3.all as i3
from ipkiss3.pcell.routing import RouteToManhattanRelativeToPosition

input_port = i3.OpticalPort(name="in", position=(0.0, 0.0), angle_deg=45.0)

# create the route object
route = RouteToManhattanRelativeToPosition(input_port=input_port,
                                           start_straight=10.0,
                                           end_straight=20.0,
                                           relation='>',
                                           direction=i3.DIRECTION.EAST,
                                           position=40.0)

# a route is a Shape, so we can use it to draw a waveguide
wg = i3.RoundedWaveguide()
layout = wg.Layout(shape=route)
layout.visualize()
../../../_images/ipkiss3-pcell-routing-RouteToManhattanRelativeToPosition-2.png