OpenRAM/compiler/router/navigation_blockage.py

32 lines
1015 B
Python

# See LICENSE for licensing information.
#
# Copyright (c) 2016-2023 Regents of the University of California, Santa Cruz
# All rights reserved.
#
from openram.base.vector import vector
from .navigation_node import navigation_node
class navigation_blockage:
""" This class represents a blockage on the navigation graph. """
def __init__(self, ll, ur):
self.ll = ll
self.ur = ur
def create_corner_nodes(self):
""" Create nodes on all 4 corners of this blockage. """
corners = []
corners.append(navigation_node(vector(self.ll[0], self.ll[1])))
corners.append(navigation_node(vector(self.ll[0], self.ur[1])))
corners.append(navigation_node(vector(self.ur[0], self.ll[1])))
corners.append(navigation_node(vector(self.ur[0], self.ur[1])))
corners[0].add_neighbor(corners[1])
corners[0].add_neighbor(corners[2])
corners[3].add_neighbor(corners[1])
corners[3].add_neighbor(corners[2])
return corners