Skip to article frontmatterSkip to article content

gdsfactory.routing.route_ports_to_side

gdsfactory.routing.route_ports_to_side(component: Component, cross_section: CrossSectionSpec, ports: Ports | None = None, side: Literal['north', 'east', 'south', 'west'] = 'north', x: float | None | Literal['east', 'west'] = None, y: float | None | Literal['north', 'south'] = None, **kwargs: Any)tuple[list[ManhattanRoute], list[kf.DPort]]

Routes ports to a given side.

Parameters
  • componentcomponent to route.

  • cross_sectioncross_section to use for routing.

  • portsports to route to a side.

  • side‘north’, ‘south’, ‘east’ or ‘west’.

  • xposition to route ports for east/west. None, uses most east/west value.

  • yposition to route ports for south/north. None, uses most north/south value.

  • kwargsadditional arguments to pass to the routing function.

Keyword Arguments
  • radiusin um.

  • separationin um.

  • routing. (extend_left, extend_right for south/north)

  • routing.

Returns

with routing elements. List of ports: of the new ports.

Return type

List of routes

import gdsfactory as gf

c = gf.Component()
dummy = gf.components.nxn(north=2, south=2, west=2, east=2)
sides = ["north", "south", "east", "west"]
d = 100
positions = [(0, 0), (d, 0), (d, d), (0, d)]

for pos, side in zip(positions, sides):
    dummy_ref = c << dummy
    dummy_ref.move(pos)
    routes, ports = gf.routing.route_ports_to_side(
        component=c, side=side, ports=dummy_ref.ports, cross_section="strip"
    )

    for i, p in enumerate(ports):
        c.add_port(name=f"{side[0]}{i}", port=p)

c.plot()