From c9b3f4772e066d092d115e741e4f1164a9de9802 Mon Sep 17 00:00:00 2001 From: Jesse Cirimelli-Low Date: Wed, 30 Jun 2021 05:21:39 -0700 Subject: [PATCH] fix bias correspondence points --- compiler/base/pin_layout.py | 14 ++++++++++++-- compiler/base/utils.py | 6 ++++++ compiler/gdsMill/gdsMill/vlsiLayout.py | 16 ++++++++-------- 3 files changed, 26 insertions(+), 10 deletions(-) diff --git a/compiler/base/pin_layout.py b/compiler/base/pin_layout.py index f27990f5..ff137022 100644 --- a/compiler/base/pin_layout.py +++ b/compiler/base/pin_layout.py @@ -45,9 +45,19 @@ class pin_layout: if self.same_lpp(layer_name_pp, lpp): self._layer = layer_name break + else: - debug.error("Layer {} is not a valid routing layer in the tech file.".format(layer_name_pp), -1) - + try: + from tech import layer_override + from tech import layer_override_name + if layer_override[name]: + self.lpp = layer_override[name] + self.layer = "m1" + self._recompute_hash() + return + except: + debug.error("Layer {} is not a valid routing layer in the tech file.".format(layer_name_pp), -1) + self.lpp = layer[self.layer] self._recompute_hash() diff --git a/compiler/base/utils.py b/compiler/base/utils.py index 382dd61d..fe27c9c0 100644 --- a/compiler/base/utils.py +++ b/compiler/base/utils.py @@ -158,6 +158,12 @@ def get_gds_pins(pin_names, name, gds_filename, units): # this is a list because other cells/designs # may have must-connect pins if isinstance(lpp[1], list): + try: + from tech import layer_override + if layer_override[pin_name]: + lpp = layer_override[pin_name.textString] + except: + pass lpp = (lpp[0], None) cell[str(pin_name)].append(pin_layout(pin_name, rect, lpp)) diff --git a/compiler/gdsMill/gdsMill/vlsiLayout.py b/compiler/gdsMill/gdsMill/vlsiLayout.py index d2572427..c3469203 100644 --- a/compiler/gdsMill/gdsMill/vlsiLayout.py +++ b/compiler/gdsMill/gdsMill/vlsiLayout.py @@ -761,22 +761,22 @@ class VlsiLayout: label_coordinate = label.coordinates[0] user_coordinate = [x*self.units[0] for x in label_coordinate] pin_shapes = [] + # Remove the padding if it exists + if label.textString[-1] == "\x00": + label_text = label.textString[0:-1] + else: + label_text = label.textString try: from tech import layer_override - if layer_override[label.textString]: - shapes = self.getAllShapes((layer_override[label.textString], None)) + if layer_override[label_text]: + shapes = self.getAllShapes((layer_override[label_text][0], None)) + lpp = layer_override[label_text] except: pass for boundary in shapes: if self.labelInRectangle(user_coordinate, boundary): pin_shapes.append((lpp, boundary)) - label_text = label.textString - - # Remove the padding if it exists - if label_text[-1] == "\x00": - label_text = label_text[0:-1] - try: self.pins[label_text] except KeyError: