mirror of
https://github.com/VLSIDA/OpenRAM.git
synced 2026-09-06 09:18:34 +02:00
Merged with dev, addressed conflict in port data
This commit is contained in:
@@ -481,7 +481,7 @@ class simulation():
|
||||
debug.warning("Error occurred while determining SEN name. Can cause faults in simulation.")
|
||||
|
||||
debug.info(2, "s_en name = {}".format(self.sen_name))
|
||||
|
||||
|
||||
column_addr = self.get_column_addr()
|
||||
bl_name_port, br_name_port = self.get_bl_name(self.graph.all_paths, port)
|
||||
port_pos = -1 - len(str(column_addr)) - len(str(port))
|
||||
@@ -575,7 +575,11 @@ class simulation():
|
||||
"""
|
||||
Gets the signal name associated with the bitlines in the bank.
|
||||
"""
|
||||
cell_mod = factory.create(module_type=OPTS.bitcell)
|
||||
# FIXME: change to a solution that does not depend on the technology
|
||||
if OPTS.tech_name == "sky130" and len(self.all_ports) == 1:
|
||||
cell_mod = factory.create(module_type=OPTS.bitcell, version="opt1")
|
||||
else:
|
||||
cell_mod = factory.create(module_type=OPTS.bitcell)
|
||||
cell_bl = cell_mod.get_bl_name(port)
|
||||
cell_br = cell_mod.get_br_name(port)
|
||||
|
||||
@@ -587,14 +591,14 @@ class simulation():
|
||||
for i in range(len(bl_names)):
|
||||
bl_names[i] = bl_names[i].split(OPTS.hier_seperator)[-1]
|
||||
return bl_names[0], bl_names[1]
|
||||
|
||||
|
||||
def get_empty_measure_data_dict(self):
|
||||
"""Make a dict of lists for each type of delay and power measurement to append results to"""
|
||||
|
||||
measure_names = self.delay_meas_names + self.power_meas_names
|
||||
# Create list of dicts. List lengths is # of ports. Each dict maps the measurement names to lists.
|
||||
measure_data = [{mname: [] for mname in measure_names} for i in self.all_ports]
|
||||
return measure_data
|
||||
return measure_data
|
||||
|
||||
def sum_delays(self, delays):
|
||||
"""Adds the delays (delay_data objects) so the correct slew is maintained"""
|
||||
@@ -603,5 +607,3 @@ class simulation():
|
||||
for i in range(1, len(delays)):
|
||||
delay+=delays[i]
|
||||
return delay
|
||||
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ from globals import OPTS
|
||||
class stimuli():
|
||||
""" Class for providing stimuli functions """
|
||||
|
||||
def __init__(self, stim_file, corner):
|
||||
def __init__(self, stim_file, corner):
|
||||
self.vdd_name = "vdd"
|
||||
self.gnd_name = "gnd"
|
||||
self.pmos_name = tech.spice["pmos"]
|
||||
@@ -169,7 +169,7 @@ class stimuli():
|
||||
def gen_constant(self, sig_name, v_val):
|
||||
""" Generates a constant signal with reference voltage and the voltage value """
|
||||
self.sf.write("V{0} {0} 0 DC {1}\n".format(sig_name, v_val))
|
||||
|
||||
|
||||
def get_voltage(self, value):
|
||||
if value == "0" or value == 0:
|
||||
return 0
|
||||
@@ -299,19 +299,27 @@ class stimuli():
|
||||
|
||||
self.sf.write("* {} process corner\n".format(self.process))
|
||||
for item in self.device_libraries:
|
||||
if OPTS.spice_name:
|
||||
item[0] = item[0].replace("SIMULATOR", OPTS.spice_name.lower())
|
||||
else:
|
||||
item[0] = item[0].replace("SIMULATOR", "ngspice")
|
||||
if os.path.isfile(item[0]):
|
||||
self.sf.write(".lib \"{0}\" {1}\n".format(item[0], item[1]))
|
||||
else:
|
||||
debug.error("Could not find spice library: {0}\nSet SPICE_MODEL_DIR to over-ride path.\n".format(item[0]))
|
||||
debug.error("Could not find spice library: {0}\nSet SPICE_MODEL_DIR to over-ride path.\n".format(item[0]), -1)
|
||||
|
||||
includes = self.device_models + [circuit]
|
||||
|
||||
for item in list(includes):
|
||||
if OPTS.spice_name:
|
||||
item = item.replace("SIMULATOR", OPTS.spice_name.lower())
|
||||
else:
|
||||
item = item.replace("SIMULATOR", "ngspice")
|
||||
self.sf.write(".include \"{0}\"\n".format(item))
|
||||
|
||||
def add_comment(self, msg):
|
||||
self.sf.write(msg + "\n")
|
||||
|
||||
|
||||
def write_supply(self):
|
||||
""" Writes supply voltage statements """
|
||||
gnd_node_name = "0"
|
||||
@@ -403,5 +411,3 @@ class stimuli():
|
||||
end_time = datetime.datetime.now()
|
||||
delta_time = round((end_time - start_time).total_seconds(), 1)
|
||||
debug.info(2, "*** Spice: {} seconds".format(delta_time))
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user