| #!/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() |