prjxray/fuzzers/011-clb-ffconfig
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
..
minitest Add licensing header to Makefiles 2020-05-26 07:33:12 -07:00
Makefile Add licensing header to Makefiles 2020-05-26 07:33:12 -07:00
README.md fuzzers: fix typo in 011-clb-ffconfig README 2024-01-08 14:00:20 +07:00
bits.dbf Add support to zero db to support simple groups. 2019-06-19 14:46:39 -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
prims.py Add licensing header to fuzzers' python scripts 2020-05-26 07:33:12 -07:00
top.py Add licensing header to fuzzers' python scripts 2020-05-26 07:33:12 -07:00

README.md

clb-ffconfig Fuzzer

Documents FF configuration.

Note Vivado GUI is misleading in some cases where it shows configuration per FF, but its actually per SLICE

Primitive pin map

Element CE CK D SR Q
FDRE CE C D R Q
FDPE CE C D PRE Q
FDSE CE C D S Q
FDCE CE C D CLR Q
LDPE GE G D PRE Q
LDCE GE G D CLR Q

Primitive bit map

Prim FFSYNC LATCH ZRST
FDPE
FDSE X
FDRE X X
FDCE X
LDCE X X
LDPE X

FFSYNC

Configures whether a storage element is synchronous or asynchronous.

Scope: entire site (not individual FFs)

FFSYNC Reset Applicable prims
0 Asynchronous FDPE, FDCE, LDCE, LDPE
1 Synchronous FDSE, FDRE

LATCH

Configures latch vs FF behavior for the CLB

LATCH Description Primitives
0 All storage elements in the CLB are FF's FDPE, FDSE, FDRE, FDCE
1 LUT6 storage elements are latches (LDCE or LDPE). LUT5 storage elements cannot be used LDCE, LDPE

N*FF.ZRST

Configures stored value when reset is asserted

Prim ZRST On reset
FDRE, FDCE, and LDCE 0 1
FDRE, FDCE, and LDCE 1 0
FDPE, FDSE, and LDPE 0 0
FDPE, FDSE, and LDPE 1 1

N*FF.ZINI

Sets GSR FF or latch value

LATCH ZINI Set to
FF 0 1
FF 1 0
LATCH 0 0
LATCH 1 1

CEUSEDMUX

Configures ability to drive clock enable (CE) or always enable clock

CEUSEDMUX Description
0 always on (CE=1)
1 controlled (CE=mywire)

SRUSEDMUX

Configures ability to reset FF after GSR

SRUSEDMUX Description
0 never reset (R=0)
1 controlled (R=mywire)

TODO: how used when SR?

CLKINV

Configures whether to invert the clock going into a slice.

Scope: entire site (not individual FFs)

LATCH CLKINV Description
FF 0 normal clock
FF 1 invert clock
LATCH 0 invert clock
LATCH 1 normal clock