| def __init__(self, verilog_netlist, logger): |
| self.verilog_netlist = verilog_netlist |
| # self.instances[instance.name] = instance.module |
| yosys_env = os.environ.copy() |
| script_path = os.path.dirname(os.path.abspath(__file__)) |
| yosys_env["YOSYS_VERILOG_IN"] = self.verilog_netlist |
| yosys_env["YOSYS_JSON_OUT"] = "./tmp.json" |
| self.logger.debug("running yosys ..") |
| process = subprocess.run( |
| f"yosys -c {script_path}/yosys/to-json.tcl".split(), |
| stderr=subprocess.STDOUT, |
| self.logger.error(process.stdout.decode("utf-8")) |
| self.logger.debug("reading json ..") |
| module_name = os.path.basename(self.verilog_netlist) |
| module_name = os.path.splitext(module_name)[0] |
| self.logger.debug("parsing json ..") |
| full_cells = data["modules"][module_name]["cells"] |
| self.instances[cell] = full_cells[cell]["type"] |