diff --git a/synthDC/scripts/wrapperGen.py b/synthDC/scripts/wrapperGen.py new file mode 100644 index 000000000..84c04f1fd --- /dev/null +++ b/synthDC/scripts/wrapperGen.py @@ -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) \ No newline at end of file