mirror of https://github.com/VLSIDA/OpenRAM.git
Merge branch 'dev' of github.com:VLSIDA/PrivateRAM into dev
This commit is contained in:
commit
159c04a25d
|
|
@ -6,6 +6,7 @@
|
||||||
# All rights reserved.
|
# All rights reserved.
|
||||||
#
|
#
|
||||||
import debug
|
import debug
|
||||||
|
import math
|
||||||
|
|
||||||
class verilog:
|
class verilog:
|
||||||
"""
|
"""
|
||||||
|
|
@ -53,7 +54,7 @@ class verilog:
|
||||||
self.vf.write("\n );\n\n")
|
self.vf.write("\n );\n\n")
|
||||||
|
|
||||||
if self.write_size:
|
if self.write_size:
|
||||||
self.num_wmasks = int(self.word_size/self.write_size)
|
self.num_wmasks = int(math.ceil(self.word_size / self.write_size))
|
||||||
self.vf.write(" parameter NUM_WMASKS = {0} ;\n".format(self.num_wmasks))
|
self.vf.write(" parameter NUM_WMASKS = {0} ;\n".format(self.num_wmasks))
|
||||||
self.vf.write(" parameter DATA_WIDTH = {0} ;\n".format(self.word_size))
|
self.vf.write(" parameter DATA_WIDTH = {0} ;\n".format(self.word_size))
|
||||||
self.vf.write(" parameter ADDR_WIDTH = {0} ;\n".format(self.addr_size))
|
self.vf.write(" parameter ADDR_WIDTH = {0} ;\n".format(self.addr_size))
|
||||||
|
|
@ -189,9 +190,13 @@ class verilog:
|
||||||
self.vf.write(" if (!csb{0}_reg)\n".format(port))
|
self.vf.write(" if (!csb{0}_reg)\n".format(port))
|
||||||
|
|
||||||
if self.write_size:
|
if self.write_size:
|
||||||
|
remainder_bits = self.word_size % self.write_size
|
||||||
for mask in range(0,self.num_wmasks):
|
for mask in range(0,self.num_wmasks):
|
||||||
lower = mask * self.write_size
|
lower = mask * self.write_size
|
||||||
upper = lower + self.write_size-1
|
if (remainder_bits and mask == self.num_wmasks - 1):
|
||||||
|
upper = lower + remainder_bits - 1
|
||||||
|
else:
|
||||||
|
upper = lower + self.write_size - 1
|
||||||
self.vf.write(" if (wmask{0}_reg[{1}])\n".format(port,mask))
|
self.vf.write(" if (wmask{0}_reg[{1}])\n".format(port,mask))
|
||||||
self.vf.write(" mem[addr{0}_reg][{1}:{2}] = din{0}_reg[{1}:{2}];\n".format(port,upper,lower))
|
self.vf.write(" mem[addr{0}_reg][{1}:{2}] = din{0}_reg[{1}:{2}];\n".format(port,upper,lower))
|
||||||
self.vf.write(" end\n")
|
self.vf.write(" end\n")
|
||||||
|
|
|
||||||
|
|
@ -47,7 +47,7 @@ class delay(simulation):
|
||||||
self.targ_write_ports = []
|
self.targ_write_ports = []
|
||||||
self.period = 0
|
self.period = 0
|
||||||
if self.write_size:
|
if self.write_size:
|
||||||
self.num_wmasks = int(self.word_size / self.write_size)
|
self.num_wmasks = int(math.ceil(self.word_size / self.write_size))
|
||||||
else:
|
else:
|
||||||
self.num_wmasks = 0
|
self.num_wmasks = 0
|
||||||
self.set_load_slew(0,0)
|
self.set_load_slew(0,0)
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
import collections
|
import collections
|
||||||
import debug
|
import debug
|
||||||
import random
|
import random
|
||||||
|
import math
|
||||||
from .stimuli import *
|
from .stimuli import *
|
||||||
from .charutils import *
|
from .charutils import *
|
||||||
from globals import OPTS
|
from globals import OPTS
|
||||||
|
|
@ -31,7 +32,7 @@ class functional(simulation):
|
||||||
random.seed(12345)
|
random.seed(12345)
|
||||||
|
|
||||||
if self.write_size:
|
if self.write_size:
|
||||||
self.num_wmasks = int(self.word_size / self.write_size)
|
self.num_wmasks = int(math.ceil(self.word_size / self.write_size))
|
||||||
else:
|
else:
|
||||||
self.num_wmasks = 0
|
self.num_wmasks = 0
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,7 @@ class simulation():
|
||||||
self.write_ports = self.sram.write_ports
|
self.write_ports = self.sram.write_ports
|
||||||
self.words_per_row = self.sram.words_per_row
|
self.words_per_row = self.sram.words_per_row
|
||||||
if self.write_size:
|
if self.write_size:
|
||||||
self.num_wmasks = int(self.word_size/self.write_size)
|
self.num_wmasks = int(math.ceil(self.word_size/self.write_size))
|
||||||
else:
|
else:
|
||||||
self.num_wmasks = 0
|
self.num_wmasks = 0
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,7 @@ class bank(design.design):
|
||||||
self.sram_config = sram_config
|
self.sram_config = sram_config
|
||||||
sram_config.set_local_config(self)
|
sram_config.set_local_config(self)
|
||||||
if self.write_size:
|
if self.write_size:
|
||||||
self.num_wmasks = int(self.word_size / self.write_size)
|
self.num_wmasks = int(ceil(self.word_size / self.write_size))
|
||||||
else:
|
else:
|
||||||
self.num_wmasks = 0
|
self.num_wmasks = 0
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@
|
||||||
from tech import drc
|
from tech import drc
|
||||||
import debug
|
import debug
|
||||||
import design
|
import design
|
||||||
|
import math
|
||||||
from sram_factory import factory
|
from sram_factory import factory
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
from vector import vector
|
from vector import vector
|
||||||
|
|
@ -23,7 +24,7 @@ class port_data(design.design):
|
||||||
sram_config.set_local_config(self)
|
sram_config.set_local_config(self)
|
||||||
self.port = port
|
self.port = port
|
||||||
if self.write_size is not None:
|
if self.write_size is not None:
|
||||||
self.num_wmasks = int(self.word_size / self.write_size)
|
self.num_wmasks = int(math.ceil(self.word_size / self.write_size))
|
||||||
else:
|
else:
|
||||||
self.num_wmasks = 0
|
self.num_wmasks = 0
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@
|
||||||
#
|
#
|
||||||
import design
|
import design
|
||||||
import debug
|
import debug
|
||||||
|
import math
|
||||||
from tech import drc
|
from tech import drc
|
||||||
from sram_factory import factory
|
from sram_factory import factory
|
||||||
from vector import vector
|
from vector import vector
|
||||||
|
|
@ -39,7 +40,7 @@ class write_driver_array(design.design):
|
||||||
self.num_spare_cols = num_spare_cols
|
self.num_spare_cols = num_spare_cols
|
||||||
|
|
||||||
if self.write_size:
|
if self.write_size:
|
||||||
self.num_wmasks = int(self.word_size / self.write_size)
|
self.num_wmasks = int(math.ceil(self.word_size / self.write_size))
|
||||||
|
|
||||||
self.create_netlist()
|
self.create_netlist()
|
||||||
if not OPTS.netlist_only:
|
if not OPTS.netlist_only:
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@
|
||||||
#
|
#
|
||||||
import design
|
import design
|
||||||
import debug
|
import debug
|
||||||
|
import math
|
||||||
from sram_factory import factory
|
from sram_factory import factory
|
||||||
from vector import vector
|
from vector import vector
|
||||||
from globals import OPTS
|
from globals import OPTS
|
||||||
|
|
@ -31,7 +32,7 @@ class write_mask_and_array(design.design):
|
||||||
self.offsets = offsets
|
self.offsets = offsets
|
||||||
self.column_offset = column_offset
|
self.column_offset = column_offset
|
||||||
self.words_per_row = int(columns / word_size)
|
self.words_per_row = int(columns / word_size)
|
||||||
self.num_wmasks = int(word_size / write_size)
|
self.num_wmasks = int(math.ceil(word_size / write_size))
|
||||||
|
|
||||||
self.create_netlist()
|
self.create_netlist()
|
||||||
if not OPTS.netlist_only:
|
if not OPTS.netlist_only:
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@
|
||||||
#
|
#
|
||||||
import datetime
|
import datetime
|
||||||
import debug
|
import debug
|
||||||
from math import log
|
from math import log, ceil
|
||||||
from importlib import reload
|
from importlib import reload
|
||||||
from vector import vector
|
from vector import vector
|
||||||
from globals import OPTS, print_time
|
from globals import OPTS, print_time
|
||||||
|
|
@ -36,7 +36,7 @@ class sram_base(design, verilog, lef):
|
||||||
self.bank_insts = []
|
self.bank_insts = []
|
||||||
|
|
||||||
if self.write_size:
|
if self.write_size:
|
||||||
self.num_wmasks = int(self.word_size / self.write_size)
|
self.num_wmasks = int(ceil(self.word_size / self.write_size))
|
||||||
else:
|
else:
|
||||||
self.num_wmasks = 0
|
self.num_wmasks = 0
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue