diff --git a/compiler/base/design.py b/compiler/base/design.py index 97c288f9..70a9047b 100644 --- a/compiler/base/design.py +++ b/compiler/base/design.py @@ -53,7 +53,6 @@ class design(hierarchy_design): (width, height) = utils.get_libcell_size(self.cell_name, GDS["unit"], layer[prop.boundary_layer]) - self.pin_map = utils.get_libcell_pins(self.pins, self.cell_name, GDS["unit"]) diff --git a/compiler/gdsMill/gdsMill/vlsiLayout.py b/compiler/gdsMill/gdsMill/vlsiLayout.py index 9c0e0659..d2572427 100644 --- a/compiler/gdsMill/gdsMill/vlsiLayout.py +++ b/compiler/gdsMill/gdsMill/vlsiLayout.py @@ -749,6 +749,7 @@ class VlsiLayout: Find all text labels and create a map to a list of shapes that they enclose on the given layer. """ + # Get the labels on a layer in the root level labels = self.getTexts(lpp) @@ -760,6 +761,12 @@ class VlsiLayout: label_coordinate = label.coordinates[0] user_coordinate = [x*self.units[0] for x in label_coordinate] pin_shapes = [] + try: + from tech import layer_override + if layer_override[label.textString]: + shapes = self.getAllShapes((layer_override[label.textString], None)) + except: + pass for boundary in shapes: if self.labelInRectangle(user_coordinate, boundary): pin_shapes.append((lpp, boundary)) diff --git a/compiler/modules/bitcell_base_array.py b/compiler/modules/bitcell_base_array.py index 196f9868..495d7833 100644 --- a/compiler/modules/bitcell_base_array.py +++ b/compiler/modules/bitcell_base_array.py @@ -161,8 +161,20 @@ class bitcell_base_array(design.design): for row in range(self.row_size): for col in range(self.column_size): inst = self.cell_inst[row, col] - for pin_name in ["vdd", "gnd"]: - self.copy_layout_pin(inst, pin_name) + if row == 2: #add only 1 label per col + for pin_name in ["vdd", "gnd"]: + self.copy_layout_pin(inst, pin_name) + if 'VPB' in self.cell_inst[row, col].mod.pins: + self.add_label("gnd", inst.get_pin("vpb").layer, inst.get_pin("vpb").ll()) + if 'VNB' in self.cell_inst[row, col].mod.pins: + try: + from tech import layer_override + if layer_override['VNB\x00']: + inst.get_pin("vnb").layer = layer_override['VNB\x00'] + except: + pass + self.add_label("vdd", inst.get_pin("vnb").layer, inst.get_pin("vnb").ll()) + def _adjust_x_offset(self, xoffset, col, col_offset): tempx = xoffset