add simple sram sizing for netlist only

This commit is contained in:
Jesse Cirimelli-Low 2020-02-06 12:10:49 +00:00
parent 18573c0e42
commit 3a06141030
3 changed files with 23 additions and 6 deletions

View File

@ -96,8 +96,10 @@ def get_libcell_size(name, units, lpp):
Open a GDS file and return the library cell size from either the Open a GDS file and return the library cell size from either the
bounding box or a border layer. bounding box or a border layer.
""" """
cell_gds = OPTS.openram_tech + "gds_lib/" + str(name) + ".gds" if not OPTS.netlist_only:
return(get_gds_size(name, cell_gds, units, lpp)) cell_gds = OPTS.openram_tech + "gds_lib/" + str(name) + ".gds"
return(get_gds_size(name, cell_gds, units, lpp))
return (0,0,)
def get_gds_pins(pin_names, name, gds_filename, units): def get_gds_pins(pin_names, name, gds_filename, units):
@ -128,8 +130,11 @@ def get_libcell_pins(pin_list, name, units):
Open a GDS file and find the pins in pin_list as text on a given layer. Open a GDS file and find the pins in pin_list as text on a given layer.
Return these as a rectangle layer pair for each pin. Return these as a rectangle layer pair for each pin.
""" """
cell_gds = OPTS.openram_tech + "gds_lib/" + str(name) + ".gds" if not OPTS.netlist_only:
return(get_gds_pins(pin_list, name, cell_gds, units)) cell_gds = OPTS.openram_tech + "gds_lib/" + str(name) + ".gds"
return(get_gds_pins(pin_list, name, cell_gds, units))
else:
return

View File

@ -57,6 +57,7 @@ class bank(design.design):
def create_netlist(self): def create_netlist(self):
self.compute_sizes() self.compute_sizes()
self.add_modules() self.add_modules()
self.add_pins() # Must create the replica bitcell array first self.add_pins() # Must create the replica bitcell array first

View File

@ -23,8 +23,11 @@ class sram_config:
# This will get over-written when we determine the organization # This will get over-written when we determine the organization
self.words_per_row = words_per_row self.words_per_row = words_per_row
if not OPTS.netlist_only:
self.compute_sizes()
else:
self.compute_simple_sram_sizes()
self.compute_sizes()
def set_local_config(self, module): def set_local_config(self, module):
@ -35,6 +38,14 @@ class sram_config:
# Copy all the variables to the local module # Copy all the variables to the local module
for member in members: for member in members:
setattr(module,member,getattr(self,member)) setattr(module,member,getattr(self,member))
def compute_simple_sram_sizes(self):
self.row_addr_size = int(log(OPTS.num_words, 2))
self.col_addr_size = int(log(OPTS.word_size, 2))
self.words_per_row = 1
self.num_rows = OPTS.num_words
self.num_cols = OPTS.word_size
self.bank_addr_size = self.col_addr_size + self.row_addr_size
self.addr_size = self.bank_addr_size + int(log(self.num_banks, 2))
def compute_sizes(self): def compute_sizes(self):
""" Computes the organization of the memory using bitcell size by trying to make it square.""" """ Computes the organization of the memory using bitcell size by trying to make it square."""