From 801ff63e243fac6811f951f6be6b50f79eeee487 Mon Sep 17 00:00:00 2001 From: Kevin Kim Date: Sun, 27 Aug 2023 14:00:10 -0700 Subject: [PATCH 1/2] started wrapper generation script --- synthDC/scripts/wrapperGen.py | 60 +++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 synthDC/scripts/wrapperGen.py diff --git a/synthDC/scripts/wrapperGen.py b/synthDC/scripts/wrapperGen.py new file mode 100644 index 000000000..76ae24a33 --- /dev/null +++ b/synthDC/scripts/wrapperGen.py @@ -0,0 +1,60 @@ +""" +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 = "`include \"config.vh\"\n`include \"parameter-defs.vh\"\nimport cvw::*;\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" + + + +print(buf) \ No newline at end of file From 62d71043982eb866c524753e865c3a15c49ff7ad Mon Sep 17 00:00:00 2001 From: Kevin Kim Date: Sun, 27 Aug 2023 14:13:29 -0700 Subject: [PATCH 2/2] wrapper generation works --- synthDC/scripts/wrapperGen.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/synthDC/scripts/wrapperGen.py b/synthDC/scripts/wrapperGen.py index 76ae24a33..84c04f1fd 100644 --- a/synthDC/scripts/wrapperGen.py +++ b/synthDC/scripts/wrapperGen.py @@ -30,7 +30,7 @@ lineModuleEnd = 0 moduleName = "" # string that will keep track of the running module header -buf = "`include \"config.vh\"\n`include \"parameter-defs.vh\"\nimport cvw::*;\n" +buf = "import cvw::*;\n`include \"config.vh\"\n`include \"parameter-defs.vh\"\n" # are we writing into the buffer writeBuf=False @@ -56,5 +56,19 @@ for l in 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) \ No newline at end of file