From b22d2a76a729222c3318f28e66216b3cf124d3e3 Mon Sep 17 00:00:00 2001 From: mrg Date: Wed, 6 Jan 2021 09:39:50 -0800 Subject: [PATCH] Make clear source/target option instead of general setter (bug to remove source/target fixed) --- compiler/router/grid.py | 71 ++++++++++++++++++++--------------------- 1 file changed, 34 insertions(+), 37 deletions(-) diff --git a/compiler/router/grid.py b/compiler/router/grid.py index b8e78290..bd4a118f 100644 --- a/compiler/router/grid.py +++ b/compiler/router/grid.py @@ -78,81 +78,78 @@ class grid: for k in self.map: self.map[k].blocked=False - def set_source(self, n, value=True): + def clear_source(self): + for k in self.map: + self.map[k].source=False + self.source = set() + + def set_source(self, n): if not isinstance(n, vector3d): for item in n: - self.set_source(item, value) + self.set_source(item) else: self.add_map(n) - self.map[n].source=value + self.map[n].source=True self.source.add(n) - def set_target(self, n, value=True): + def clear_target(self): + for k in self.map: + self.map[k].target=False + self.target = set() + + def set_target(self, n): if not isinstance(n, vector3d): for item in n: - self.set_target(item, value) + self.set_target(item) else: self.add_map(n) - self.map[n].target=value + self.map[n].target=True self.target.add(n) - def add_source(self, track_list, value=True): + def add_source(self, track_list): debug.info(3, "Adding source list={0}".format(str(track_list))) for n in track_list: debug.info(4, "Adding source ={0}".format(str(n))) - self.set_source(n, value) - self.set_blocked(n, False) + self.set_source(n) + # self.set_blocked(n, False) - def add_target(self, track_list, value=True): + def add_target(self, track_list): debug.info(3, "Adding target list={0}".format(str(track_list))) for n in track_list: debug.info(4, "Adding target ={0}".format(str(n))) - self.set_target(n, value) - self.set_blocked(n, False) + self.set_target(n) + # self.set_blocked(n, False) - def add_perimeter_target(self, side="all", value=True): + def add_perimeter_target(self, side="all"): debug.info(3, "Adding perimeter target") + perimeter_list = [] # Add the left/right columns if side=="all" or side=="left": x = self.ll.x for y in range(self.ll.y, self.ur.y, 1): - n = vector3d(x, y, 0) - self.set_target(n, value) - self.set_blocked(n, False) - n = vector3d(x, y, 1) - self.set_target(n, value) - self.set_blocked(n, False) + perimeter_list.append(vector3d(x, y, 0)) + perimeter_list.append(vector3d(x, y, 1)) if side=="all" or side=="right": x = self.ur.x for y in range(self.ll.y, self.ur.y, 1): - n = vector3d(x, y, 0) - self.set_target(n, value) - self.set_blocked(n, False) - n = vector3d(x, y, 1) - self.set_target(n, value) - self.set_blocked(n, False) + perimeter_list.append(vector3d(x, y, 0)) + perimeter_list.append(vector3d(x, y, 1)) if side=="all" or side=="bottom": y = self.ll.y for x in range(self.ll.x, self.ur.x, 1): - n = vector3d(x, y, 0) - self.set_target(n, value) - self.set_blocked(n, False) - n = vector3d(x, y, 1) - self.set_target(n, value) - self.set_blocked(n, False) + perimeter_list.append(vector3d(x, y, 0)) + perimeter_list.append(vector3d(x, y, 1)) if side=="all" or side=="top": y = self.ur.y for x in range(self.ll.x, self.ur.x, 1): - n = vector3d(x, y, 0) - self.set_target(n, value) - self.set_blocked(n, False) - n = vector3d(x, y, 1) - self.set_target(n, value) - self.set_blocked(n, False) + perimeter_list.append(vector3d(x, y, 0)) + perimeter_list.append(vector3d(x, y, 1)) + + self.set_target(perimeter_list) def is_target(self, point): """