mirror of
https://github.com/VLSIDA/OpenRAM.git
synced 2026-09-02 21:08:22 +02:00
Change num_wmask to num_wmasks and write_size = None not word_size if wmask not used.
This commit is contained in:
@@ -32,6 +32,11 @@ class functional(simulation):
|
||||
if OPTS.is_unit_test:
|
||||
random.seed(12345)
|
||||
|
||||
if self.write_size is not None:
|
||||
self.num_wmasks = int(self.word_size / self.write_size)
|
||||
else:
|
||||
self.num_wmasks = 0
|
||||
|
||||
self.set_corner(corner)
|
||||
self.set_spice_constants()
|
||||
#self.set_feasible_period(sram, spfile, corner)
|
||||
@@ -46,13 +51,10 @@ class functional(simulation):
|
||||
self.read_check = []
|
||||
|
||||
def initilize_wmask(self):
|
||||
self.wmask = [None]*self.num_wmask
|
||||
self.num_wmask = int(self.word_size/self.write_size)
|
||||
self.wmask_enabled = False
|
||||
if self.word_size !=self.write_size:
|
||||
self.wmask_enabled = True
|
||||
self.wmask = [None]*self.num_wmasks
|
||||
if self.write_size is not None:
|
||||
# initialize wmask to 1
|
||||
for bit in range(self.num_wmask):
|
||||
for bit in range(self.num_wmasks):
|
||||
self.wmask[bit] = 1
|
||||
# if bit == 0:
|
||||
# self.wmask[self.num_wmask-1 - bit] = 1
|
||||
@@ -189,8 +191,8 @@ class functional(simulation):
|
||||
return(1, "SUCCESS")
|
||||
|
||||
def gen_wmask(self):
|
||||
wmask_bits = [None]*self.num_wmask
|
||||
for bit in range(self.num_wmask):
|
||||
wmask_bits = [None]*self.num_wmasks
|
||||
for bit in range(self.num_wmasks):
|
||||
rand = random.randint(0, 1)
|
||||
wmask_bits[bit] = rand
|
||||
return wmask_bits
|
||||
@@ -292,10 +294,9 @@ class functional(simulation):
|
||||
|
||||
# Generate wmask bits
|
||||
for port in self.write_ports:
|
||||
self.sf.write("\n* Generation of wmask signals\n")
|
||||
if (self.write_size != self.word_size):
|
||||
num_wmask = int(self.word_size / self.write_size)
|
||||
for bit in range(num_wmask):
|
||||
self.sf.write("\n* Generation of wmask sibfssgnals\n")
|
||||
if self.write_size is not None:
|
||||
for bit in range(self.num_wmasks):
|
||||
sig_name = "WMASK{0}_{1} ".format(port, bit)
|
||||
self.stim.gen_pwl(sig_name, self.cycle_times, self.data_values[port][bit], self.period,
|
||||
self.slew, 0.05)
|
||||
|
||||
@@ -34,10 +34,11 @@ class simulation():
|
||||
self.readwrite_ports = self.sram.readwrite_ports
|
||||
self.read_ports = self.sram.read_ports
|
||||
self.write_ports = self.sram.write_ports
|
||||
self.num_wmask = int(self.word_size/self.write_size)
|
||||
self.wmask_enabled = False
|
||||
if self.word_size !=self.write_size:
|
||||
self.wmask_enabled = True
|
||||
if self.write_size is not None:
|
||||
self.num_wmasks = int(self.word_size/self.write_size)
|
||||
else:
|
||||
self.num_wmasks = 0
|
||||
|
||||
|
||||
def set_corner(self,corner):
|
||||
""" Set the corner values """
|
||||
@@ -79,7 +80,7 @@ class simulation():
|
||||
# Three dimensional list to handle each addr and data bits for wach port over the number of checks
|
||||
self.addr_values = [[[] for bit in range(self.addr_size)] for port in self.all_ports]
|
||||
self.data_values = [[[] for bit in range(self.word_size)] for port in self.write_ports]
|
||||
self.wmask_values = [[[] for bit in range(self.num_wmask)] for port in self.write_ports]
|
||||
self.wmask_values = [[[] for bit in range(self.num_wmasks)] for port in self.write_ports]
|
||||
|
||||
# For generating comments in SPICE stimulus
|
||||
self.cycle_comments = []
|
||||
@@ -248,7 +249,7 @@ class simulation():
|
||||
t_current,
|
||||
t_current+self.period)
|
||||
elif op == "write":
|
||||
if (self.wmask_enabled):
|
||||
if self.write_size is not None:
|
||||
comment = "\tWriting {0} to address {1} with mask bit {2} (from port {3}) during cycle {4} ({5}ns - {6}ns)".format(word,
|
||||
addr,
|
||||
wmask,
|
||||
@@ -300,9 +301,8 @@ class simulation():
|
||||
for port in range(total_ports):
|
||||
pin_names.append("{0}{1}".format(tech.spice["clk"], port))
|
||||
|
||||
if (self.write_size != self.word_size):
|
||||
num_wmask = int(self.word_size/self.write_size)
|
||||
for bit in range(num_wmask):
|
||||
if self.write_size is not None:
|
||||
for bit in range(self.num_wmasks):
|
||||
pin_names.append("WMASK{0}_{1}".format(port,bit))
|
||||
|
||||
for read_output in read_index:
|
||||
|
||||
Reference in New Issue
Block a user