File: fuzzer.py

package info (click to toggle)
prjtrellis 1.4-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 83,000 kB
  • sloc: cpp: 20,813; python: 16,246; sh: 375; makefile: 262; asm: 80; ansic: 58
file content (27 lines) | stat: -rw-r--r-- 753 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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()