From 0667a93d5361e5135704c060ecedb1ac71c91b51 Mon Sep 17 00:00:00 2001 From: Jesse Cirimelli-Low Date: Mon, 7 Mar 2022 13:45:50 -0800 Subject: [PATCH] single port rba passing lvs --- .../sky130/modules/sky130_col_cap_array.py | 46 ++++++++++++++++++- .../sky130/modules/sky130_replica_column.py | 2 +- 2 files changed, 45 insertions(+), 3 deletions(-) diff --git a/technology/sky130/modules/sky130_col_cap_array.py b/technology/sky130/modules/sky130_col_cap_array.py index a363dda2..fa70ed27 100644 --- a/technology/sky130/modules/sky130_col_cap_array.py +++ b/technology/sky130/modules/sky130_col_cap_array.py @@ -89,10 +89,10 @@ class sky130_col_cap_array(sky130_bitcell_base_array): elif col % 4 == 2: row_layout.append(self.colend1) self.cell_inst[col]=self.add_inst(name=name, mod=self.colend1) - pins.append("fake_bl_{}".format(bitline)) + pins.append("fake_br_{}".format(bitline)) pins.append("vdd") pins.append("gnd") - pins.append("fake_br_{}".format(bitline)) + pins.append("fake_bl_{}".format(bitline)) pins.append("gate") bitline += 1 elif col % 4 ==3: @@ -170,6 +170,48 @@ class sky130_col_cap_array(sky130_bitcell_base_array): offset=inst.lr(), width=pin.width(), height=pin.height()) + + + for col in range(len(self.insts)): + + inst = self.insts[col] + if col % 4 == 0: + pin = self.cell_inst[col].get_pin("bl") + text = "fake_bl_{}".format(int(col/2)) + self.add_layout_pin(text=text, + layer=pin.layer, + offset=pin.ll().scale(1, 0), + width=pin.width(), + height=pin.height()) + + pin = self.cell_inst[col].get_pin("br") + text = "fake_br_{}".format(int(col/2)) + self.add_layout_pin(text=text, + layer=pin.layer, + offset=pin.ll().scale(1, 0), + width=pin.width(), + height=pin.height()) + + elif col % 4 == 2: + pin = self.cell_inst[col].get_pin("bl") + text = "fake_br_{}".format(int(col/2)) + self.add_layout_pin(text=text, + layer=pin.layer, + offset=pin.ll().scale(1, 0), + width=pin.width(), + height=pin.height()) + + pin = self.cell_inst[col].get_pin("br") + text = "fake_bl_{}".format(int(col/2)) + self.add_layout_pin(text=text, + layer=pin.layer, + offset=pin.ll().scale(1, 0), + width=pin.width(), + height=pin.height()) + + + + return def add_supply_pins(self): diff --git a/technology/sky130/modules/sky130_replica_column.py b/technology/sky130/modules/sky130_replica_column.py index 90c24222..d0eb9979 100644 --- a/technology/sky130/modules/sky130_replica_column.py +++ b/technology/sky130/modules/sky130_replica_column.py @@ -214,7 +214,7 @@ class sky130_replica_column(sky130_bitcell_base_array): for port in self.all_ports: for row in range(row_range_min, row_range_max): wl_pin = self.cell_inst[row].get_pin(self.cell.get_wl_name(port)) - self.add_layout_pin(text="wl_{0}_{1}".format(port, row), + self.add_layout_pin(text="wl_{0}_{1}".format(port, row_range_max-row), layer=wl_pin.layer, offset=wl_pin.ll().scale(0, 1), width=self.width,