| #!/usr/bin/env python3 | |
| import argparse | |
| # ============================================================================ | |
| def main(): | |
| # Parse args | |
| parser = argparse.ArgumentParser( | |
| description="Generates top-level verilog for scalable processing test" | |
| ) | |
| parser.add_argument('--top-name', type=str, default=None) | |
| parser.add_argument( | |
| '--num-processing-units', type=int, default=1, required=True | |
| ) | |
| parser.add_argument('--template', type=str, default="basys3_top.v") | |
| args = parser.parse_args() | |
| # Read template | |
| with open(args.template, "r") as fp: | |
| template = fp.readlines() | |
| # Find a line with "NUM_PROCESSING_UNITS" and change it | |
| verilog = [] | |
| for line in template: | |
| line = line.strip() | |
| if "NUM_PROCESSING_UNITS" in line: | |
| verilog.append( | |
| ".NUM_PROCESSING_UNITS (%d)," % args.num_processing_units | |
| ) | |
| elif args.top_name is not None and "module top" in line: | |
| verilog.append("module %s" % args.top_name) | |
| else: | |
| verilog.append(line) | |
| # Spit out the code | |
| for line in verilog: | |
| print(line) | |
| # ============================================================================ | |
| if __name__ == '__main__': | |
| main() |