prjxray/fuzzers/050-pip-seed
Dr Jonathan Richard Robert Kimmitt 39f5de415d Add Virtex-7 (xc7vx485t) family support
Port prjxray to the Virtex-7 family, modelled on Kintex-7, targeting
xc7vx485tffg1761-2 (vc707). Non-breaking for the existing families.

Family registration:
- settings/virtex7.sh, settings/virtex7/devices.yaml
- Makefile: virtex7 in DATABASES/XRAY_PARTS + db-extras-virtex7 targets
- utils/update_parts.py, update_resources.py: virtex7 choice
- CI matrix (Pipeline.yml), Vivado edition (xilinx.sh), README

Architecture adaptations for the HP-bank-only VX part (verified non-breaking):
- update_resources.tcl: fall back to HP banks when no HR banks exist
- XRAY_IOSTANDARD env (default LVCMOS33; LVCMOS18 for virtex7), parameterised
  across the fuzzer generate.tcl files
- fuzzers: enable HP-bank (iob18/ioi18) + IOI/HCLK handling for virtex7;
  GTX skipped (ffg1761 bonds only ~7 of 14 GTX quads)
- 005-tilegrid: HP/HR bank tile handling; iob18_int INT offset 3->2;
  ioi18 AUTO_FRAME; cfg PDRC-2 DRC disable; add_tdb skips unsolved edge tiles;
  per-specimen retry for transient FlexLM SIGSEGV under concurrency
- per-family Vivado version gate (virtex7 -> v2020.1.1)
- XRAY_ROI and XRAY_ROI_GRID tuned to a compact CLBLL+CLBLM region

General fixes:
- tools/bitread.cc: fix use-after-free of the mmap'd bitstream (exposed by the
  larger Virtex-7 bitstream)
- utils/environment.python.sh: add repo root to PYTHONPATH (PEP 660 editable
  install doesn't expose the repo-root utils/ package)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 07:21:23 +01:00
..
Makefile Add licensing header to Makefiles 2020-05-26 07:33:12 -07:00
README.md docs: Fix top level headers and other small clean. 2019-04-03 19:26:28 -07:00
generate.py Add licensing header to fuzzers' python scripts 2020-05-26 07:33:12 -07:00
generate.sh Add licensing header to bash scripts 2020-05-26 07:33:12 -07:00
generate.tcl Add Virtex-7 (xc7vx485t) family support 2026-05-24 07:21:23 +01:00
picorv32.v fuzzers: name with tile type 2019-01-07 23:08:45 +01:00
top.v fuzzers: name with tile type 2019-01-07 23:08:45 +01:00

README.md

Generic fuzzer for INT PIPs

Run this fuzzer a few times until it stops adding new PIPs to the database.

Sample runs:

  • 78fa4bd5
    • jenkins 3, success
    • intpips: 1 iter, N=200, -m 5 -M 15
    • intpips todo final: N/A
    • intpips segbits_int_l.db lines: 3374
    • rempips todo initial: 279
    • rempips todo final (32): 9
  • 20e09ca7
    • jenkins 21, rempips failure
    • intpips: 6 iters, N=48, -m 15 -M 45
    • intpips segbits_int_l.db lines: 3364
    • rempips todo initial: 294
    • rempips todo final (51): 294
  • 1182359f
    • jenkins 23, intpips failure
    • inpips: 12 iters, N=48, -m 15 -M 45
    • intpips todo final: 495
    • inpips segbits_int_l.db lines: 5167
    • rempips todo: N/A

const0

These show up in large numbers after a full solve. This means that it either has trouble solving these or simply cannot. Counts from sample run

Includes:

  • INT.BYP_ALT*.LOGIC_OUTS* (24)
    • Ex: INT.BYP_ALT2.LOGIC_OUTS14
  • INT.[NESW]*.LOGIC_OUTS* (576)
    • Ex: INT.EE4BEG2.LOGIC_OUTS2
    • Ex: INT.EL1BEG_N3.LOGIC_OUTS0
    • Ex: INT.WR1BEG3.LOGIC_OUTS2
  • INT.IMUX*.* (1151)
    • Ex: INT.IMUX0.NL1END0
    • Ex: INT.IMUX0.FAN_BOUNCE7
    • Ex: INT.IMUX14.LOGIC_OUTS7

GFAN

Includes:

  • Easily solves: INT.IMUX_L*.GFAN*
  • Can solve: INT.BYP_ALT*.GFAN*
  • Cannot solve: INT.IMUX*.GFAN* (solves as "<m1 0> ")

IMUX

  • Okay: BYP_ALT*.VCC_WIRE
  • Cannot solve: INT.IMUX[0-9]+.VCC_WIRE
  • Cannot solve: INT.IMUX_L[0-9]+.VCC_WIRE

See https://github.com/SymbiFlow/prjxray/issues/383