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 (43 lines) | stat: -rw-r--r-- 1,268 bytes parent folder | download
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
from fuzzconfig import FuzzConfig
import interconnect
import pytrellis

jobs = [
    {
        "cfg": FuzzConfig(job="GLB_ENTRY", family="MachXO2", device="LCMXO2-1200HC", ncl="tap.ncl",
                          tiles=["CENTER6:CENTER_EBR_CIB"]),
        "left_net": "R6C{}_HPSX{:02d}00",
        "right_net": "R6C{}_HPSX{:02d}00"
    },
]


def main():
    # left_end and right_end are 1200HC-specific. However, the results
    # also readily apply to 2000HC devices because they also have a
    # CENTER_EBR_CIB tile (without qualifiers).
    def left_end(x):
        return 8 if x % 2 == 0 else 7

    def right_end(x):
        if x == 0 or x == 4:
            return 18
        elif x == 1 or x == 5:
            return 19
        else:
            return 17

    pytrellis.load_database("../../../database")
    for job in jobs:
        cfg = job["cfg"]
        cfg.setup()
        netnames = []
        netnames += [job["left_net"].format(left_end(x), x) for x in range(8)]
        netnames += [job["right_net"].format(right_end(x), x) for x in range(8)]

        interconnect.fuzz_interconnect_with_netnames(config=cfg, netnames=netnames,
                                                     netname_filter_union=False)


if __name__ == "__main__":
    main()