mirror of
https://github.com/openhwgroup/cvw
synced 2025-02-11 06:05:49 +00:00
Merge pull request #397 from kipmacsaigoren/synth_wrapper_gen
Synthesis Wrapper Generation script
This commit is contained in:
commit
a2545e5ac2
74
synthDC/scripts/wrapperGen.py
Normal file
74
synthDC/scripts/wrapperGen.py
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
"""
|
||||||
|
wrapperGen.py
|
||||||
|
|
||||||
|
kekim@hmc.edu
|
||||||
|
|
||||||
|
script that generates top-level wrappers for verilog modules to synthesize
|
||||||
|
"""
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
import os
|
||||||
|
|
||||||
|
#create argument parser
|
||||||
|
parser = argparse.ArgumentParser()
|
||||||
|
|
||||||
|
parser.add_argument("fin")
|
||||||
|
|
||||||
|
args=parser.parse_args()
|
||||||
|
|
||||||
|
fin = open(args.fin, "r")
|
||||||
|
|
||||||
|
lines = fin.readlines()
|
||||||
|
|
||||||
|
# keeps track of what line number the module header begins
|
||||||
|
lineModuleStart = 0
|
||||||
|
|
||||||
|
# keeps track of what line number the module header ends
|
||||||
|
lineModuleEnd = 0
|
||||||
|
|
||||||
|
# keeps track of module name
|
||||||
|
moduleName = ""
|
||||||
|
|
||||||
|
# string that will keep track of the running module header
|
||||||
|
buf = "import cvw::*;\n`include \"config.vh\"\n`include \"parameter-defs.vh\"\n"
|
||||||
|
|
||||||
|
# are we writing into the buffer
|
||||||
|
writeBuf=False
|
||||||
|
|
||||||
|
index=0
|
||||||
|
|
||||||
|
# string copy logic
|
||||||
|
for l in lines:
|
||||||
|
if l.find("module") == 0:
|
||||||
|
lineModuleStart = index
|
||||||
|
moduleName = l.split()[1]
|
||||||
|
writeBuf = True
|
||||||
|
buf += f"module {moduleName}wrapper (\n"
|
||||||
|
continue
|
||||||
|
if (writeBuf):
|
||||||
|
buf += l
|
||||||
|
if l.find (");") == 0:
|
||||||
|
lineModuleEnd = index
|
||||||
|
break
|
||||||
|
index+=1
|
||||||
|
|
||||||
|
# post-processing buffer: add DUT and endmodule lines
|
||||||
|
buf += f"\t{moduleName} #(P) dut(.*);\nendmodule"
|
||||||
|
|
||||||
|
|
||||||
|
# path to wrapper
|
||||||
|
wrapperPath = f"{os.getenv('WALLY')}/src/wrappers/{moduleName}wrapper.sv"
|
||||||
|
|
||||||
|
# clear wrappers directory
|
||||||
|
os.system(f"rm {os.getenv('WALLY')}/src/wrappers/*")
|
||||||
|
|
||||||
|
fout = open(wrapperPath, "w")
|
||||||
|
|
||||||
|
fout.write(buf)
|
||||||
|
|
||||||
|
fin.close()
|
||||||
|
fout.close()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
print(buf)
|
Loading…
Reference in New Issue
Block a user