| import timing_solver |
| import timing_dbs |
| import cell_fuzzers |
| import json |
| import fuzzloops |
| |
| |
| def main(): |
| jobs = [] |
| jobs += cell_fuzzers.timing_configs("picorv32", "../../resource/picorv32_x20.v", "85") |
| |
| def per_job(job): |
| grade, cfg = job |
| cfg.setup(skip_specimen=True) |
| bitf = cfg.build_design(cfg.ncl, {}, backanno=True, substitute=False) |
| ncl = bitf.replace(".bit", "_out.ncl") |
| sdf = bitf.replace(".bit", ".sdf") |
| data = timing_solver.solve_pip_delays(ncl, sdf) |
| db = timing_dbs.interconnect_db_path("ECP5", grade) |
| with open(db, "w") as f: |
| json.dump(data, f, indent=4, sort_keys=True) |
| |
| fuzzloops.parallel_foreach(jobs, per_job) |
| |
| |
| if __name__ == "__main__": |
| main() |