import os import sys import re import shutil import argparse import math def formatter(prog): return argparse.HelpFormatter(prog, max_help_position=60) parser = argparse.ArgumentParser(formatter_class=formatter) # Mandatory arguments parser.add_argument('--magic_drc_in', type=str, default="./checks/caravel.magic.drc") parser.add_argument('--rdb_out', type=str, default="./checks/caravel.magic.rdb") args = parser.parse_args() data, drc = True, False def main(): try: fp = open(args.magic_drc_in) lineType = data drcRule = "" with open(args.rdb_out,"w") as fpw: for line in fp.readlines(): if ("[INFO]" in line) or (len(line.strip())==0): continue elif ("caravel" in line): fpw.write("caravel 100\n") elif "------" in line: lineType = not lineType elif (lineType==drc): drcRule = line.strip().split("(") drcRule = [drcRule,"UnknownRule"] if len(drcRule) <2 else drcRule fpw.write(f"r_0_{drcRule[1][:-1]}\n") fpw.write(f"1000 1000 2 Nov 29 03:26:39 2020\n") fpw.write(f"Rule File Pathname: {args.magic_drc_in}\n") fpw.write(f"{drcRule[1][:-1]}: {drcRule[0]}\n") drcNumber = 1 elif (lineType==data): cord = [int(float(i))*100 for i in line.strip().split(" ")] if cord[0]>32638 and cord[1]>138201 and drcNumber<900: fpw.write(f"p {drcNumber} 4\n") fpw.write(f"{cord[0]} {cord[1]}\n") fpw.write(f"{cord[2]} {cord[1]}\n") fpw.write(f"{cord[2]} {cord[3]}\n") fpw.write(f"{cord[0]} {cord[3]}\n") drcNumber+=1 print(f"Generated RDB at {args.rdb_out}") except IOError: print("Magic DRC Error file not found {args.magic_drc_in}") except: print("Failed to generate RDB file") finally: fp.close() if __name__ == "__main__": main()