Disable perimeter pins for now

This commit is contained in:
mrg 2020-11-03 13:35:34 -08:00
commit d209e8d9a3
124 changed files with 162 additions and 201 deletions

View File

@ -137,6 +137,21 @@ class cell_properties():
""" """
def __init__(self): def __init__(self):
self.names = {} self.names = {}
self.names["bitcell"] = "cell_6t"
self.names["bitcell_1rw_1r"] = "cell_1rw_1r"
self.names["bitcell_1r_1w"] = "cell_1r_1w"
self.names["dummy_bitcell"] = "dummy_cell_6t"
self.names["dummy_bitcell_1rw_1r"] = "dummy_cell_1rw_1r"
self.names["dummy_bitcell_1r_1w"] = "dummy_cell_1r_1w"
self.names["replica_bitcell"] = "replica_cell_6t"
self.names["replica_bitcell_1rw_1r"] = "replica_cell_1rw_1r"
self.names["replica_bitcell_1r_1w"] = "replica_cell_1r_1w"
self.names["col_cap_bitcell_6t"] = "col_cap_cell_6t"
self.names["col_cap_bitcell_1rw_1r"] = "col_cap_cell_1rw_1r"
self.names["col_cap_bitcell_1r_1w"] = "col_cap_cell_1r_1w"
self.names["row_cap_bitcell_6t"] = "row_cap_cell_6t"
self.names["row_cap_bitcell_1rw_1r"] = "row_cap_cell_1rw_1r"
self.names["row_cap_bitcell_1r_1w"] = "row_cap_cell_1r_1w"
self._bitcell = _bitcell._default() self._bitcell = _bitcell._default()

View File

@ -7,7 +7,6 @@
# #
import debug import debug
from tech import cell_properties as props from tech import cell_properties as props
from globals import OPTS
import bitcell_base import bitcell_base
@ -27,10 +26,8 @@ class bitcell(bitcell_base.bitcell_base):
type_list = ["OUTPUT", "OUTPUT", "INPUT", "POWER", "GROUND"] type_list = ["OUTPUT", "OUTPUT", "INPUT", "POWER", "GROUND"]
storage_nets = ['Q', 'Q_bar'] storage_nets = ['Q', 'Q_bar']
def __init__(self, name, cell_name=None): def __init__(self, name):
if not cell_name: super().__init__(name)
cell_name = OPTS.bitcell_name
super().__init__(name, cell_name)
debug.info(2, "Create bitcell") debug.info(2, "Create bitcell")
self.nets_match = self.do_nets_exist(self.storage_nets) self.nets_match = self.do_nets_exist(self.storage_nets)

View File

@ -8,7 +8,6 @@
import debug import debug
from tech import cell_properties as props from tech import cell_properties as props
import bitcell_base import bitcell_base
from globals import OPTS
class bitcell_1rw_1r(bitcell_base.bitcell_base): class bitcell_1rw_1r(bitcell_base.bitcell_base):
@ -31,10 +30,8 @@ class bitcell_1rw_1r(bitcell_base.bitcell_base):
"INPUT", "INPUT", "POWER", "GROUND"] "INPUT", "INPUT", "POWER", "GROUND"]
storage_nets = ['Q', 'Q_bar'] storage_nets = ['Q', 'Q_bar']
def __init__(self, name, cell_name=None): def __init__(self, name):
if not cell_name: super().__init__(name)
cell_name = OPTS.bitcell_name
super().__init__(name, cell_name)
debug.info(2, "Create bitcell with 1RW and 1R Port") debug.info(2, "Create bitcell with 1RW and 1R Port")
self.nets_match = self.do_nets_exist(self.storage_nets) self.nets_match = self.do_nets_exist(self.storage_nets)

View File

@ -8,7 +8,6 @@
import debug import debug
from tech import cell_properties as props from tech import cell_properties as props
import bitcell_base import bitcell_base
from globals import OPTS
class bitcell_1w_1r(bitcell_base.bitcell_base): class bitcell_1w_1r(bitcell_base.bitcell_base):
@ -31,10 +30,8 @@ class bitcell_1w_1r(bitcell_base.bitcell_base):
"INPUT", "INPUT", "POWER", "GROUND"] "INPUT", "INPUT", "POWER", "GROUND"]
storage_nets = ['Q', 'Q_bar'] storage_nets = ['Q', 'Q_bar']
def __init__(self, name, cell_name=None): def __init__(self, name):
if not cell_name: super().__init__(name)
cell_name = OPTS.bitcell_name
super().__init__(name, cell_name)
debug.info(2, "Create bitcell with 1W and 1R Port") debug.info(2, "Create bitcell with 1W and 1R Port")
self.nets_match = self.do_nets_exist(self.storage_nets) self.nets_match = self.do_nets_exist(self.storage_nets)

View File

@ -20,15 +20,15 @@ class bitcell_base(design.design):
""" """
cell_size_layer = "boundary" cell_size_layer = "boundary"
def __init__(self, name, cell_name, hard_cell=True): def __init__(self, name, hard_cell=True):
design.design.__init__(self, name, cell_name) design.design.__init__(self, name)
if hard_cell: if hard_cell:
(self.width, self.height) = utils.get_libcell_size(cell_name, (self.width, self.height) = utils.get_libcell_size(self.cell_name,
GDS["unit"], GDS["unit"],
layer[self.cell_size_layer]) layer[self.cell_size_layer])
self.pin_map = utils.get_libcell_pins(self.pin_names, self.pin_map = utils.get_libcell_pins(self.pin_names,
cell_name, self.cell_name,
GDS["unit"]) GDS["unit"])
self.add_pin_types(self.type_list) self.add_pin_types(self.type_list)

View File

@ -12,7 +12,8 @@ import bitcell_base
class col_cap_bitcell_1rw_1r(bitcell_base.bitcell_base): class col_cap_bitcell_1rw_1r(bitcell_base.bitcell_base):
""" """
todo""" Column end cap cell.
"""
pin_names = [props.bitcell.cell_1rw1r.pin.bl0, pin_names = [props.bitcell.cell_1rw1r.pin.bl0,
props.bitcell.cell_1rw1r.pin.br0, props.bitcell.cell_1rw1r.pin.br0,
@ -22,11 +23,8 @@ class col_cap_bitcell_1rw_1r(bitcell_base.bitcell_base):
type_list = ["OUTPUT", "OUTPUT", "OUTPUT", "OUTPUT", type_list = ["OUTPUT", "OUTPUT", "OUTPUT", "OUTPUT",
"POWER", "GROUND"] "POWER", "GROUND"]
def __init__(self, name="col_cap_cell_1rw_1r", cell_name=None): def __init__(self, name="col_cap_cell_1rw_1r"):
if not cell_name: bitcell_base.bitcell_base.__init__(self, name)
cell_name = name
# Ignore the name argument
bitcell_base.bitcell_base.__init__(self, name, cell_name)
debug.info(2, "Create col_cap bitcell 1rw+1r object") debug.info(2, "Create col_cap bitcell 1rw+1r object")
self.no_instances = True self.no_instances = True

View File

@ -8,7 +8,6 @@
import debug import debug
from tech import cell_properties as props from tech import cell_properties as props
import bitcell_base import bitcell_base
from globals import OPTS
class dummy_bitcell(bitcell_base.bitcell_base): class dummy_bitcell(bitcell_base.bitcell_base):
@ -25,10 +24,8 @@ class dummy_bitcell(bitcell_base.bitcell_base):
props.bitcell.cell_6t.pin.gnd] props.bitcell.cell_6t.pin.gnd]
type_list = ["OUTPUT", "OUTPUT", "INPUT", "POWER", "GROUND"] type_list = ["OUTPUT", "OUTPUT", "INPUT", "POWER", "GROUND"]
def __init__(self, name, cell_name=None): def __init__(self, name):
if not cell_name: super().__init__(name)
cell_name = OPTS.dummy_bitcell_name
super().__init__(name, cell_name)
debug.info(2, "Create dummy bitcell") debug.info(2, "Create dummy bitcell")

View File

@ -8,7 +8,6 @@
import debug import debug
from tech import cell_properties as props from tech import cell_properties as props
import bitcell_base import bitcell_base
from globals import OPTS
class dummy_bitcell_1rw_1r(bitcell_base.bitcell_base): class dummy_bitcell_1rw_1r(bitcell_base.bitcell_base):
@ -29,10 +28,8 @@ class dummy_bitcell_1rw_1r(bitcell_base.bitcell_base):
type_list = ["OUTPUT", "OUTPUT", "OUTPUT", "OUTPUT", type_list = ["OUTPUT", "OUTPUT", "OUTPUT", "OUTPUT",
"INPUT", "INPUT", "POWER", "GROUND"] "INPUT", "INPUT", "POWER", "GROUND"]
def __init__(self, name, cell_name=None): def __init__(self, name):
if not cell_name: super().__init__(name)
cell_name = OPTS.dummy_bitcell_name
super().__init__(name, cell_name)
debug.info(2, "Create dummy bitcell 1rw+1r object") debug.info(2, "Create dummy bitcell 1rw+1r object")

View File

@ -8,7 +8,6 @@
import debug import debug
from tech import cell_properties as props from tech import cell_properties as props
import bitcell_base import bitcell_base
from globals import OPTS
class dummy_bitcell_1w_1r(bitcell_base.bitcell_base): class dummy_bitcell_1w_1r(bitcell_base.bitcell_base):
@ -29,10 +28,8 @@ class dummy_bitcell_1w_1r(bitcell_base.bitcell_base):
type_list = ["OUTPUT", "OUTPUT", "INPUT", "INPUT", type_list = ["OUTPUT", "OUTPUT", "INPUT", "INPUT",
"INPUT", "INPUT", "POWER", "GROUND"] "INPUT", "INPUT", "POWER", "GROUND"]
def __init__(self, name, cell_name=None): def __init__(self, name):
if not cell_name: super().__init__(name)
cell_name = OPTS.dummy_bitcell_name
super().__init__(name, cell_name)
debug.info(2, "Create dummy bitcell 1w+1r object") debug.info(2, "Create dummy bitcell 1w+1r object")

View File

@ -18,14 +18,12 @@ class dummy_pbitcell(design.design):
""" """
def __init__(self, name, cell_name=None): def __init__(self, name, cell_name=None):
if not cell_name:
cell_name = name
self.num_rw_ports = OPTS.num_rw_ports self.num_rw_ports = OPTS.num_rw_ports
self.num_w_ports = OPTS.num_w_ports self.num_w_ports = OPTS.num_w_ports
self.num_r_ports = OPTS.num_r_ports self.num_r_ports = OPTS.num_r_ports
self.total_ports = self.num_rw_ports + self.num_w_ports + self.num_r_ports self.total_ports = self.num_rw_ports + self.num_w_ports + self.num_r_ports
design.design.__init__(self, name, cell_name) design.design.__init__(self, name)
debug.info(1, "create a dummy bitcell using pbitcell with {0} rw ports, {1} w ports and {2} r ports".format(self.num_rw_ports, debug.info(1, "create a dummy bitcell using pbitcell with {0} rw ports, {1} w ports and {2} r ports".format(self.num_rw_ports,
self.num_w_ports, self.num_w_ports,
self.num_r_ports)) self.num_r_ports))

View File

@ -21,9 +21,7 @@ class pbitcell(bitcell_base.bitcell_base):
with a variable number of read/write, write, and read ports with a variable number of read/write, write, and read ports
""" """
def __init__(self, name, cell_name=None, replica_bitcell=False, dummy_bitcell=False): def __init__(self, name, replica_bitcell=False, dummy_bitcell=False):
if not cell_name:
cell_name = name
self.num_rw_ports = OPTS.num_rw_ports self.num_rw_ports = OPTS.num_rw_ports
self.num_w_ports = OPTS.num_w_ports self.num_w_ports = OPTS.num_w_ports
self.num_r_ports = OPTS.num_r_ports self.num_r_ports = OPTS.num_r_ports
@ -32,7 +30,7 @@ class pbitcell(bitcell_base.bitcell_base):
self.replica_bitcell = replica_bitcell self.replica_bitcell = replica_bitcell
self.dummy_bitcell = dummy_bitcell self.dummy_bitcell = dummy_bitcell
bitcell_base.bitcell_base.__init__(self, name, cell_name, hard_cell=False) bitcell_base.bitcell_base.__init__(self, name, hard_cell=False)
fmt_str = "{0} rw ports, {1} w ports and {2} r ports" fmt_str = "{0} rw ports, {1} w ports and {2} r ports"
info_string = fmt_str.format(self.num_rw_ports, info_string = fmt_str.format(self.num_rw_ports,
self.num_w_ports, self.num_w_ports,

View File

@ -6,11 +6,8 @@
# All rights reserved. # All rights reserved.
# #
import debug import debug
import utils
import bitcell_base import bitcell_base
from tech import GDS, layer
from tech import cell_properties as props from tech import cell_properties as props
from globals import OPTS
class replica_bitcell(bitcell_base.bitcell_base): class replica_bitcell(bitcell_base.bitcell_base):
@ -27,11 +24,8 @@ class replica_bitcell(bitcell_base.bitcell_base):
props.bitcell.cell_6t.pin.gnd] props.bitcell.cell_6t.pin.gnd]
type_list = ["OUTPUT", "OUTPUT", "INPUT", "POWER", "GROUND"] type_list = ["OUTPUT", "OUTPUT", "INPUT", "POWER", "GROUND"]
def __init__(self, name, cell_name=None): def __init__(self, name):
if not cell_name: super().__init__(name)
cell_name = OPTS.replica_bitcell_name
# Ignore the name argument
super().__init__(name, cell_name)
debug.info(2, "Create replica bitcell object") debug.info(2, "Create replica bitcell object")
def get_stage_effort(self, load): def get_stage_effort(self, load):

View File

@ -8,7 +8,6 @@
import debug import debug
import bitcell_base import bitcell_base
from tech import cell_properties as props from tech import cell_properties as props
from globals import OPTS
class replica_bitcell_1rw_1r(bitcell_base.bitcell_base): class replica_bitcell_1rw_1r(bitcell_base.bitcell_base):
@ -28,10 +27,8 @@ class replica_bitcell_1rw_1r(bitcell_base.bitcell_base):
props.bitcell.cell_1rw1r.pin.gnd] props.bitcell.cell_1rw1r.pin.gnd]
type_list = ["OUTPUT", "OUTPUT", "OUTPUT", "OUTPUT", "INPUT", "INPUT", "POWER", "GROUND"] type_list = ["OUTPUT", "OUTPUT", "OUTPUT", "OUTPUT", "INPUT", "INPUT", "POWER", "GROUND"]
def __init__(self, name, cell_name=None): def __init__(self, name):
if not cell_name: super().__init__(name)
cell_name = OPTS.replica_bitcell_name
super().__init__(name, cell_name)
debug.info(2, "Create replica bitcell 1rw+1r object") debug.info(2, "Create replica bitcell 1rw+1r object")
def get_stage_effort(self, load): def get_stage_effort(self, load):

View File

@ -8,9 +8,6 @@
import debug import debug
import bitcell_base import bitcell_base
from tech import cell_properties as props from tech import cell_properties as props
from globals import OPTS
from tech import GDS, layer
import utils
class replica_bitcell_1w_1r(bitcell_base.bitcell_base): class replica_bitcell_1w_1r(bitcell_base.bitcell_base):
@ -30,13 +27,10 @@ class replica_bitcell_1w_1r(bitcell_base.bitcell_base):
props.bitcell.cell_1w1r.pin.gnd] props.bitcell.cell_1w1r.pin.gnd]
type_list = ["OUTPUT", "OUTPUT", "INPUT", "INPUT", "INPUT", "INPUT", "POWER", "GROUND"] type_list = ["OUTPUT", "OUTPUT", "INPUT", "INPUT", "INPUT", "INPUT", "POWER", "GROUND"]
def __init__(self, name, cell_name=None): def __init__(self, name):
if not cell_name: super().__init__(name)
cell_name = OPTS.replica_bitcell_name
super().__init__(name, cell_name)
debug.info(2, "Create replica bitcell 1w+1r object") debug.info(2, "Create replica bitcell 1w+1r object")
def get_stage_effort(self, load): def get_stage_effort(self, load):
parasitic_delay = 1 parasitic_delay = 1
size = 0.5 #This accounts for bitline being drained thought the access TX and internal node size = 0.5 #This accounts for bitline being drained thought the access TX and internal node

View File

@ -12,20 +12,16 @@ import bitcell_base
class row_cap_bitcell_1rw_1r(bitcell_base.bitcell_base): class row_cap_bitcell_1rw_1r(bitcell_base.bitcell_base):
""" """
A single bit cell which is forced to store a 0. Row end cap cell.
This module implements the single memory cell used in the design. It """
is a hand-made cell, so the layout and netlist should be available in
the technology library. """
pin_names = [props.bitcell.cell_1rw1r.pin.wl0, pin_names = [props.bitcell.cell_1rw1r.pin.wl0,
props.bitcell.cell_1rw1r.pin.wl1, props.bitcell.cell_1rw1r.pin.wl1,
props.bitcell.cell_1rw1r.pin.gnd] props.bitcell.cell_1rw1r.pin.gnd]
type_list = ["INPUT", "INPUT", "GROUND"] type_list = ["INPUT", "INPUT", "GROUND"]
def __init__(self, name="row_cap_cell_1rw_1r", cell_name=None): def __init__(self, name="row_cap_cell_1rw_1r"):
if not cell_name: bitcell_base.bitcell_base.__init__(self, name)
cell_name = name
bitcell_base.bitcell_base.__init__(self, name, cell_name)
debug.info(2, "Create row_cap bitcell 1rw+1r object") debug.info(2, "Create row_cap bitcell 1rw+1r object")
self.no_instances = True self.no_instances = True

View File

@ -13,7 +13,7 @@ nominal_corner_only = True
route_supplies = True route_supplies = True
check_lvsdrc = True check_lvsdrc = True
perimeter_pins = True perimeter_pins = False
#netlist_only = True #netlist_only = True
#analytical_delay = False #analytical_delay = False
output_path = "macros/sram_1rw1r_{0}_{1}_{2}_{3}".format(word_size, output_path = "macros/sram_1rw1r_{0}_{1}_{2}_{3}".format(word_size,

View File

@ -13,7 +13,7 @@ nominal_corner_only = True
route_supplies = True route_supplies = True
check_lvsdrc = True check_lvsdrc = True
perimeter_pins = True perimeter_pins = False
#netlist_only = True #netlist_only = True
#analytical_delay = False #analytical_delay = False
output_path = "macros/sram_1rw1r_{0}_{1}_{2}_{3}".format(word_size, output_path = "macros/sram_1rw1r_{0}_{1}_{2}_{3}".format(word_size,

View File

@ -13,7 +13,7 @@ nominal_corner_only = True
route_supplies = True route_supplies = True
check_lvsdrc = True check_lvsdrc = True
perimeter_pins = True perimeter_pins = False
#netlist_only = True #netlist_only = True
#analytical_delay = False #analytical_delay = False
output_path = "macros/sram_1rw1r_{0}_{1}_{2}_{3}".format(word_size, output_path = "macros/sram_1rw1r_{0}_{1}_{2}_{3}".format(word_size,

View File

@ -208,11 +208,9 @@ def setup_bitcell():
# If we have non-1rw ports, # If we have non-1rw ports,
# and the user didn't over-ride the bitcell manually, # and the user didn't over-ride the bitcell manually,
# figure out the right bitcell to use # figure out the right bitcell to use
if (OPTS.bitcell == "bitcell"): if OPTS.bitcell == "bitcell":
if (OPTS.num_rw_ports == 1 and OPTS.num_w_ports == 0 and OPTS.num_r_ports == 0): if (OPTS.num_rw_ports == 1 and OPTS.num_w_ports == 0 and OPTS.num_r_ports == 0):
OPTS.bitcell = "bitcell" OPTS.bitcell = "bitcell"
OPTS.bitcell_name = "cell_6t"
else: else:
ports = "" ports = ""
if OPTS.num_rw_ports > 0: if OPTS.num_rw_ports > 0:
@ -225,20 +223,13 @@ def setup_bitcell():
if ports != "": if ports != "":
OPTS.bitcell_suffix = "_" + ports OPTS.bitcell_suffix = "_" + ports
OPTS.bitcell = "bitcell" + OPTS.bitcell_suffix OPTS.bitcell = "bitcell" + OPTS.bitcell_suffix
OPTS.bitcell_name = "cell" + OPTS.bitcell_suffix
OPTS.dummy_bitcell = "dummy_" + OPTS.bitcell OPTS.dummy_bitcell = "dummy_" + OPTS.bitcell
OPTS.dummy_bitcell_name = "dummy_" + OPTS.bitcell_name
OPTS.replica_bitcell = "replica_" + OPTS.bitcell OPTS.replica_bitcell = "replica_" + OPTS.bitcell
OPTS.replica_bitcell_name = "replica_" + OPTS.bitcell_name elif OPTS.bitcell == "pbitcell":
elif (OPTS.bitcell == "pbitcell"):
OPTS.bitcell = "pbitcell" OPTS.bitcell = "pbitcell"
OPTS.bitcell_name = "pbitcell"
OPTS.dummy_bitcell = "dummy_pbitcell" OPTS.dummy_bitcell = "dummy_pbitcell"
OPTS.dummy_bitcell_name = "dummy_pbitcell"
OPTS.replica_bitcell = "replica_pbitcell" OPTS.replica_bitcell = "replica_pbitcell"
OPTS.replica_bitcell_name = "replica_pbitcell"
# See if bitcell exists # See if bitcell exists
try: try:
@ -248,11 +239,8 @@ def setup_bitcell():
# or its custom replica bitcell # or its custom replica bitcell
# Use the pbitcell (and give a warning if not in unit test mode) # Use the pbitcell (and give a warning if not in unit test mode)
OPTS.bitcell = "pbitcell" OPTS.bitcell = "pbitcell"
OPTS.bitcell_name = "pbitcell"
OPTS.dummy_bitcell = "dummy_pbitcell" OPTS.dummy_bitcell = "dummy_pbitcell"
OPTS.dummy_bitcell_name = "dummy_pbitcell"
OPTS.replica_bitcell = "replica_pbitcell" OPTS.replica_bitcell = "replica_pbitcell"
OPTS.replica_bitcell_name = "replica_pbitcell"
if not OPTS.is_unit_test: if not OPTS.is_unit_test:
debug.warning("Using the parameterized bitcell which may have suboptimal density.") debug.warning("Using the parameterized bitcell which may have suboptimal density.")
debug.info(1, "Using bitcell: {}".format(OPTS.bitcell)) debug.info(1, "Using bitcell: {}".format(OPTS.bitcell))

View File

@ -39,7 +39,7 @@ class sram_config:
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."""
bitcell = factory.create(module_type=OPTS.bitcell, cell_name=OPTS.bitcell_name) bitcell = factory.create(module_type=OPTS.bitcell)
debug.check(self.num_banks in [1, 2, 4], debug.check(self.num_banks in [1, 2, 4],
"Valid number of banks are 1 , 2 and 4.") "Valid number of banks are 1 , 2 and 4.")

View File

@ -15,6 +15,7 @@ from globals import OPTS
from sram_factory import factory from sram_factory import factory
import debug import debug
class and2_dec_test(openram_test): class and2_dec_test(openram_test):
def runTest(self): def runTest(self):

View File

@ -15,6 +15,7 @@ from globals import OPTS
from sram_factory import factory from sram_factory import factory
import debug import debug
class pinv_dec_1x_test(openram_test): class pinv_dec_1x_test(openram_test):
def runTest(self): def runTest(self):

View File

@ -15,7 +15,6 @@ from globals import OPTS
from sram_factory import factory from sram_factory import factory
import debug import debug
#@unittest.skip("SKIPPING 05_bitcell_1rw_1r_array_test")
class bitcell_array_1rw_1r_test(openram_test): class bitcell_array_1rw_1r_test(openram_test):

View File

@ -15,6 +15,7 @@ from globals import OPTS
from sram_factory import factory from sram_factory import factory
import debug import debug
class hierarchical_decoder_pbitcell_test(openram_test): class hierarchical_decoder_pbitcell_test(openram_test):
def runTest(self): def runTest(self):

View File

@ -15,6 +15,7 @@ from globals import OPTS
from sram_factory import factory from sram_factory import factory
import debug import debug
class hierarchical_predecode2x4_pbitcell_test(openram_test): class hierarchical_predecode2x4_pbitcell_test(openram_test):
def runTest(self): def runTest(self):

View File

@ -15,6 +15,7 @@ from globals import OPTS
from sram_factory import factory from sram_factory import factory
import debug import debug
class hierarchical_predecode3x8_pbitcell_test(openram_test): class hierarchical_predecode3x8_pbitcell_test(openram_test):
def runTest(self): def runTest(self):

View File

@ -16,7 +16,6 @@ from sram_factory import factory
import debug import debug
# @unittest.skip("SKIPPING hierarchical_predecode4x16_test")
class hierarchical_predecode4x16_test(openram_test): class hierarchical_predecode4x16_test(openram_test):
def runTest(self): def runTest(self):

View File

@ -15,6 +15,7 @@ from globals import OPTS
from sram_factory import factory from sram_factory import factory
import debug import debug
class precharge_1rw_1r_test(openram_test): class precharge_1rw_1r_test(openram_test):
def runTest(self): def runTest(self):

View File

@ -15,6 +15,7 @@ from globals import OPTS
from sram_factory import factory from sram_factory import factory
import debug import debug
class sense_amp_test(openram_test): class sense_amp_test(openram_test):
def runTest(self): def runTest(self):

View File

@ -15,6 +15,7 @@ from globals import OPTS
from sram_factory import factory from sram_factory import factory
import debug import debug
class write_driver_test(openram_test): class write_driver_test(openram_test):
def runTest(self): def runTest(self):

View File

@ -9,7 +9,6 @@
import unittest import unittest
from testutils import * from testutils import *
import sys, os import sys, os
sys.path.append(os.getenv("OPENRAM_HOME")) sys.path.append(os.getenv("OPENRAM_HOME"))
import globals import globals
from globals import OPTS from globals import OPTS

View File

@ -13,6 +13,7 @@ from globals import OPTS
from sram_factory import factory from sram_factory import factory
import debug import debug
class replica_bitcell_array_1rw_1r_test(openram_test): class replica_bitcell_array_1rw_1r_test(openram_test):
def runTest(self): def runTest(self):

View File

@ -13,6 +13,7 @@ from globals import OPTS
from sram_factory import factory from sram_factory import factory
import debug import debug
class replica_column_test(openram_test): class replica_column_test(openram_test):
def runTest(self): def runTest(self):

View File

@ -25,12 +25,10 @@ class replica_column_test(openram_test):
self.local_check(a) self.local_check(a)
debug.info(2, "Testing replica column for cell_1rw_1r") debug.info(2, "Testing replica column for cell_1rw_1r")
globals.setup_bitcell()
a = factory.create(module_type="replica_column", rows=4, rbl=[1, 1], replica_bit=6) a = factory.create(module_type="replica_column", rows=4, rbl=[1, 1], replica_bit=6)
self.local_check(a) self.local_check(a)
debug.info(2, "Testing replica column for cell_1rw_1r") debug.info(2, "Testing replica column for cell_1rw_1r")
globals.setup_bitcell()
a = factory.create(module_type="replica_column", rows=4, rbl=[2, 0], replica_bit=2) a = factory.create(module_type="replica_column", rows=4, rbl=[2, 0], replica_bit=2)
self.local_check(a) self.local_check(a)

View File

@ -7,7 +7,6 @@
import unittest import unittest
from testutils import * from testutils import *
import sys, os import sys, os
sys.path.append(os.getenv("OPENRAM_HOME")) sys.path.append(os.getenv("OPENRAM_HOME"))
import globals import globals
from globals import OPTS from globals import OPTS

View File

@ -15,6 +15,7 @@ from globals import OPTS
from sram_factory import factory from sram_factory import factory
import debug import debug
class single_bank_wmask_1rw_1r_test(openram_test): class single_bank_wmask_1rw_1r_test(openram_test):
def runTest(self): def runTest(self):

View File

@ -16,7 +16,6 @@ from sram_factory import factory
import debug import debug
# @unittest.skip("SKIPPING psram_1bank_2mux_1rw_1w_wmask_test, multiport layout not complete")
class psram_1bank_2mux_1rw_1w_wmask_test(openram_test): class psram_1bank_2mux_1rw_1w_wmask_test(openram_test):
def runTest(self): def runTest(self):

View File

@ -16,7 +16,6 @@ from sram_factory import factory
import debug import debug
#@unittest.skip("SKIPPING 22_sram_1rw_1r_1bank_nomux_func_test")
class psram_1bank_nomux_func_test(openram_test): class psram_1bank_nomux_func_test(openram_test):
def runTest(self): def runTest(self):

View File

@ -9,7 +9,6 @@
import unittest import unittest
from testutils import * from testutils import *
import sys, os import sys, os
sys.path.append(os.getenv("OPENRAM_HOME")) sys.path.append(os.getenv("OPENRAM_HOME"))
import globals import globals
from globals import OPTS from globals import OPTS
@ -17,7 +16,6 @@ from sram_factory import factory
import debug import debug
# @unittest.skip("SKIPPING sram_wmask_1w_1r_func_test")
class sram_wmask_1w_1r_func_test(openram_test): class sram_wmask_1w_1r_func_test(openram_test):
def runTest(self): def runTest(self):

View File

@ -32,7 +32,7 @@ tech_modules = module_type()
cell_properties = cell_properties() cell_properties = cell_properties()
cell_properties.bitcell.mirror.x = True cell_properties.bitcell.mirror.x = True
cell_properties.bitcell.mirror.y = False cell_properties.bitcell.mirror.y = False
cell_properties.names["bitcell"] = "mycell"
################################################### ###################################################
# Custom cell properties # Custom cell properties
################################################### ###################################################