altered bitcell, pbitcell, and bitcell array modules to accomodate additional bitline reference functions

This commit is contained in:
Michael Timothy Grimes 2018-08-05 19:43:59 -07:00
parent fb0de710ec
commit ecd4612167
4 changed files with 45 additions and 12 deletions

View File

@ -62,11 +62,21 @@ class bitcell(design.design):
return row_pins return row_pins
def list_column_pins(self): def list_all_column_pins(self):
""" Creates a list of all column pins (except for gnd and vdd) """ """ Creates a list of all column pins (except for gnd and vdd) """
column_pins = ["bl", "br"] column_pins = ["bl", "br"]
return column_pins return column_pins
def list_column_pins(self):
""" Creates a list of all column pins (except for gnd and vdd) """
column_pins = ["bl"]
return column_pins
def list_column_bar_pins(self):
""" Creates a list of all column pins (except for gnd and vdd) """
column_pins = ["br"]
return column_pins
def list_read_column_pins(self): def list_read_column_pins(self):
""" Creates a list of column pins associated with read ports """ """ Creates a list of column pins associated with read ports """
column_pins = ["bl"] column_pins = ["bl"]

View File

@ -43,7 +43,7 @@ class bitcell_array(design.design):
def add_pins(self): def add_pins(self):
row_list = self.cell.list_row_pins() row_list = self.cell.list_row_pins()
column_list = self.cell.list_column_pins() column_list = self.cell.list_all_column_pins()
for col in range(self.column_size): for col in range(self.column_size):
for cell_column in column_list: for cell_column in column_list:
self.add_pin(cell_column+"[{0}]".format(col)) self.add_pin(cell_column+"[{0}]".format(col))
@ -81,7 +81,9 @@ class bitcell_array(design.design):
def add_layout_pins(self): def add_layout_pins(self):
""" Add the layout pins """ """ Add the layout pins """
column_list = self.cell.list_column_pins() row_list = self.cell.list_row_pins()
column_list = self.cell.list_all_column_pins()
offset = vector(0.0, 0.0) offset = vector(0.0, 0.0)
for col in range(self.column_size): for col in range(self.column_size):
for cell_column in column_list: for cell_column in column_list:
@ -95,7 +97,6 @@ class bitcell_array(design.design):
# increments to the next column width # increments to the next column width
offset.x += self.cell.width offset.x += self.cell.width
row_list = self.cell.list_row_pins()
offset.x = 0.0 offset.x = 0.0
for row in range(self.row_size): for row in range(self.row_size):
for cell_row in row_list: for cell_row in row_list:

View File

@ -1090,8 +1090,8 @@ class pbitcell(pgate.pgate):
return row_pins return row_pins
def list_column_pins(self): def list_all_column_pins(self):
""" Creates a list of all column pins """ """ Creates a list of all bitline pins """
column_pins = [] column_pins = []
for k in range(self.num_readwrite): for k in range(self.num_readwrite):
column_pins.append("rwbl{0}".format(k)) column_pins.append("rwbl{0}".format(k))
@ -1105,6 +1105,30 @@ class pbitcell(pgate.pgate):
return column_pins return column_pins
def list_column_pins(self):
""" Creates a list of all bitline bar pins """
column_pins = []
for k in range(self.num_readwrite):
column_pins.append("rwbl{0}".format(k))
for k in range(self.num_write):
column_pins.append("wbl{0}".format(k))
for k in range(self.num_read):
column_pins.append("rbl{0}".format(k))
return column_pins
def list_column_bar_pins(self):
""" Creates a list of all bitline bar pins """
column_pins = []
for k in range(self.num_readwrite):
column_pins.append("rwbl_bar{0}".format(k))
for k in range(self.num_write):
column_pins.append("wbl_bar{0}".format(k))
for k in range(self.num_read):
column_pins.append("rbl_bar{0}".format(k))
return column_pins
def list_read_column_pins(self): def list_read_column_pins(self):
""" Creates a list of column pins associated with read ports """ """ Creates a list of column pins associated with read ports """
column_pins = [] column_pins = []

View File

@ -29,21 +29,19 @@ class pbitcell_array_test(openram_test):
a = bitcell_array.bitcell_array(name="pbitcell_array", cols=4, rows=4) a = bitcell_array.bitcell_array(name="pbitcell_array", cols=4, rows=4)
self.local_check(a) self.local_check(a)
debug.info(2, "Testing 4x4 array for multiport bitcell, with read/write ports at the edge of the bit cell") debug.info(2, "Testing 4x4 array for multiport bitcell, with write ports at the edge of the bit cell")
OPTS.bitcell = "pbitcell" OPTS.bitcell = "pbitcell"
OPTS.rw_ports = 2 OPTS.rw_ports = 2
OPTS.r_ports = 0 OPTS.r_ports = 0
OPTS.w_ports = 2 OPTS.w_ports = 2
debug.info(2, "Testing 4x4 array for multiport bitcell, with write ports at the edge of the bit cell")
a = bitcell_array.bitcell_array(name="pbitcell_array", cols=4, rows=4) a = bitcell_array.bitcell_array(name="pbitcell_array", cols=4, rows=4)
self.local_check(a) self.local_check(a)
debug.info(2, "Testing 4x4 array for multiport bitcell, with read/write ports at the edge of the bit cell")
OPTS.bitcell = "pbitcell"
OPTS.rw_ports = 2 OPTS.rw_ports = 2
OPTS.r_ports = 0 OPTS.r_ports = 0
OPTS.w_ports = 0 OPTS.w_ports = 0
debug.info(2, "Testing 4x4 array for multiport bitcell, with read/write ports at the edge of the bit cell")
a = bitcell_array.bitcell_array(name="pbitcell_array", cols=4, rows=4) a = bitcell_array.bitcell_array(name="pbitcell_array", cols=4, rows=4)
self.local_check(a) self.local_check(a)