mirror of https://github.com/VLSIDA/OpenRAM.git
Templatable verilog file
This commit is contained in:
parent
58ea148d47
commit
38a035a7da
|
|
@ -0,0 +1,36 @@
|
||||||
|
|
||||||
|
module multibank # (
|
||||||
|
DATA_WIDTH = 32,
|
||||||
|
ADDR_WIDTH= 8
|
||||||
|
)(
|
||||||
|
#<RW_PORTS
|
||||||
|
clk#$PORT_NUM$#,
|
||||||
|
addr#$PORT_NUM$#,
|
||||||
|
din#$PORT_NUM$#,
|
||||||
|
csb#$PORT_NUM$#,
|
||||||
|
web#$PORT_NUM$#,
|
||||||
|
dout#$PORT_NUM$#,
|
||||||
|
#>RW_PORTS
|
||||||
|
#<R_PORTS
|
||||||
|
clk#$PORT_NUM$#,
|
||||||
|
addr#$PORT_NUM$#,
|
||||||
|
csb#$PORT_NUM$#,
|
||||||
|
web#$PORT_NUM$#,
|
||||||
|
dout#$PORT_NUM$#,
|
||||||
|
#>R_PORTS
|
||||||
|
);
|
||||||
|
|
||||||
|
parameter RAM_DEPTH = 1 << ADRR_WIDTH;
|
||||||
|
|
||||||
|
#<BANK_INIT
|
||||||
|
bank bank#$BANK_NUM$# #(DATA_WIDTH, ADDR_WIDTH) (
|
||||||
|
#<BANK_RW_PORTS
|
||||||
|
clk#$PORT_NUM$#,
|
||||||
|
addr#$PORT_NUM$#,
|
||||||
|
din#$PORT_NUM$#,
|
||||||
|
csb#$PORT_NUM$#,
|
||||||
|
web#$PORT_NUM$#,
|
||||||
|
dout#$PORT_NUM$#,
|
||||||
|
#>BANK_R_PORTS
|
||||||
|
)
|
||||||
|
#>BANK_INIT
|
||||||
|
|
@ -0,0 +1,47 @@
|
||||||
|
|
||||||
|
|
||||||
|
class TextSection:
|
||||||
|
|
||||||
|
def __init__(self, name, parent):
|
||||||
|
self.name = name
|
||||||
|
self.parent = parent
|
||||||
|
self.lines = []
|
||||||
|
self.sections = []
|
||||||
|
self.sectionPos = []
|
||||||
|
self.lineNum = 0
|
||||||
|
self.repeat = 0
|
||||||
|
|
||||||
|
def addLine(self, line):
|
||||||
|
self.lines.append(line)
|
||||||
|
self.lineNum+= 1
|
||||||
|
|
||||||
|
def addSection(self, section):
|
||||||
|
self.sections.append(section)
|
||||||
|
self.sectionPos.append(self.lineNum)
|
||||||
|
|
||||||
|
def expand(self):
|
||||||
|
for i
|
||||||
|
|
||||||
|
class VerilogTemplate:
|
||||||
|
|
||||||
|
def __init__(self, template, output);
|
||||||
|
self.template = template
|
||||||
|
self.output = output
|
||||||
|
self.sections = []
|
||||||
|
|
||||||
|
def readTemplate(self):
|
||||||
|
lines = []
|
||||||
|
with open(self.template, 'r') as f:
|
||||||
|
lines = f.readlines()
|
||||||
|
currentSection = TextSection('base', None)
|
||||||
|
for line in lines:
|
||||||
|
if line[:2] == '#<':
|
||||||
|
section = TextSection(line[2:], currentSection)
|
||||||
|
currentSection.addSection(section)
|
||||||
|
currentSection = section
|
||||||
|
if line[:2] == '#>' and line[2:] == section.name:
|
||||||
|
currentSection = currentSection.parent
|
||||||
|
else:
|
||||||
|
currentSection.addLine(line)
|
||||||
|
|
||||||
|
|
||||||
Loading…
Reference in New Issue