Write mask and array supply pins on the ends

This commit is contained in:
mrg 2020-12-17 15:25:19 -08:00
parent bad735fd89
commit 29880a0b5a
1 changed files with 10 additions and 8 deletions

View File

@ -11,7 +11,7 @@ import math
from sram_factory import factory from sram_factory import factory
from vector import vector from vector import vector
from globals import OPTS from globals import OPTS
from tech import layer
class write_mask_and_array(design.design): class write_mask_and_array(design.design):
""" """
@ -95,9 +95,9 @@ class write_mask_and_array(design.design):
if not self.offsets: if not self.offsets:
self.offsets = [] self.offsets = []
for i in range(self.columns): for i in range(self.columns):
self.offsets.append(i * self.driver_spacing) self.offsets.append((i + self.write_size - 1) * self.driver_spacing)
self.width = self.offsets[-1] + self.driver_spacing self.width = self.columns * self.bitcell.width
self.height = self.and2.height self.height = self.and2.height
write_bits = self.columns / self.num_wmasks write_bits = self.columns / self.num_wmasks
@ -140,9 +140,11 @@ class write_mask_and_array(design.design):
offset=en_pos) offset=en_pos)
for supply in ["gnd", "vdd"]: for supply in ["gnd", "vdd"]:
supply_pin_left = self.and2_insts[0].get_pin(supply) supply_pin = self.and2_insts[0].get_pin(supply)
supply_pin_right = self.and2_insts[self.num_wmasks - 1].get_pin(supply) supply_pin_yoffset = supply_pin.cy()
self.add_path(supply_pin_left.layer, [supply_pin_left.lc(), supply_pin_right.rc()]) left_loc = vector(0, supply_pin_yoffset)
self.add_power_pin(supply, supply_pin_left.center(), start_layer=supply_pin_left.layer) right_loc = vector(self.width, supply_pin_yoffset)
self.add_power_pin(supply, supply_pin_right.center(), start_layer=supply_pin_right.layer) self.add_path(supply_pin.layer, [left_loc, right_loc])
self.add_power_pin(supply, left_loc, start_layer=supply_pin.layer)
self.add_power_pin(supply, right_loc, start_layer=supply_pin.layer)