Commit Graph

1508 Commits

Author SHA1 Message Date
Dr Jonathan Richard Robert Kimmitt 88f6f61d10 virtex7: 030-iob18 process_rdb — guard the visited-iostandards merge
Failed in dbfixup.py:153 add_tag_bits (AssertionError) because the
process_rdb name-harmonisation loop folded two distinct-bit Y1 IN
groups onto a single feature name. On Virtex-7 IOB_Y1 LVCMOS*.IN
has bits {38_00,39_01} but SSTL*.IN has only {38_00}; the visited-
iostandard logic forced both onto 'LVCMOS18_SSTL12_SSTL135_SSTL15.IN'
(driven by the Y0 grouping where they happened to share bits),
emitting two contradictory db lines that dbfixup can't merge.

(The existing filter_negbits already expects the un-merged name
IOB_Y1.LVCMOS12_LVCMOS15_LVCMOS18.IN, confirming the merge is wrong
here.) kintex7's Y1 LVCMOS and SSTL share bits, so it never hits
this case.

Fix: require identical bits before adopting a visited name; gate
via XRAY_DATABASE == virtex7 so kintex7's behaviour is provably
unchanged. Adds 'import os' for the env check.

Verified: no duplicate tags; Y1 splits correctly into
LVCMOS12_LVCMOS15_LVCMOS18.IN + SSTL12_SSTL135_SSTL15.IN.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-27 14:27:08 +01:00
Dr Jonathan Richard Robert Kimmitt 48e7996581 virtex7: 035a-iob18-idelay/odelay — L/R-side sort + ODELAY VAR_LOAD DRC
Two unrelated fixes the HP-IOB18 fuzzers need on a full-chip part:

1) top.py for both idelay and odelay collects all IOB18 tiles
   ('IOB18' in tile_name) but sorted with a key hardcoded to prefix
   'RIOB18_' via create_xy_fun('RIOB18_'), which asserts on the first
   LIOB18_* tile. kintex7's ROI only ever exposed the R side so this
   was latent. Switch to a regex prefix '[LR]IOB18_' (matches the
   existing '\\S+' idiom used by 037-iob18-pips). Doesn't change
   which tiles get collected, so no-op for kintex7.

2) odelay generate.tcl: Vivado 2020.1 enforces DRC REQP-135 (ODELAY
   VAR_LOAD/VAR_LOAD_PIPE requires CNTVALUEIN[0:4] connected) before
   write_bitstream, but the fuzzer intentionally leaves CNTVALUEIN
   unconnected. The idelay generate.tcl already disables IDELAY's
   equivalents (REQP-79/81/84/85/87); add REQP-135 to the odelay
   disable list to mirror.

Verified: idelay/odelay both run to completion on xc7vx485tffg1761-2,
producing valid segdata.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-27 14:27:08 +01:00
Dr Jonathan Richard Robert Kimmitt 1ebe6937e0 virtex7: enable 018-clb-ram (LUTRAM/SRL) — was misdiagnosed as Vivado-version wall
The earlier skip blamed a 'Vivado 2020.1 BEL-slot' difference; on close
investigation the real failure was generate.py:79 `assert bels == bels_tcl`
in the my_ram_N branch. The two ROI definitions disagree on X extent:
util.get_roi() (XRAY_ROI_GRID_*) yields SLICEM at SLICE X2..X12, but the
Vivado dump pblock built from $XRAY_ROI is X0..X11 — so the whole
SLICE_X12Y* column top.py LOC's primitives into falls outside the dumped
pblock and shows up as None in design.csv, tripping the assert.

The sibling RAM path already tolerated this via 'if ram != has_bel_tcl:
continue' (line ~137); mirror the same graceful skip in the SRL/LUT path.
For other families bels always == bels_tcl, so the change is a no-op.

Verified end-to-end on xc7vx485tffg1761-2: produces valid LUTRAM segdata
(ALUT/BLUT/CLUT/DLUT.{RAM,SRL,SMALL} + WA7USED/WA8USED/WEMUX.CE), pushes
into segbits_clblm_l/r (clblm coverage 95% -> ~100% vs kintex7).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-27 14:27:08 +01:00
Dr Jonathan Richard Robert Kimmitt 68f2db4060 virtex7: skip HR-bank IOB/IOI fuzzers (HP-only part)
xc7vx485t has no IOB33/IOI3 (HR) tiles, so the HR-bank IOB/IOI fuzzers (030-iob,
035-iob-ilogic, 035a-iob-idelay, 035b-iob-iserdes, 036-iob-ologic, 037-iob-pips,
047-hclk-ioi-pips) have no sites. Gate them on a new HAS_HIGH_RANGE_BANKS flag
(0 for virtex7); the HP iob18/ioi18 fuzzers cover the part. Decouple
037-iob18-pips and 047a-hclk-idelayctrl-pips from the now-skipped HR fuzzers.
Kintex-7 and the other families are unchanged.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 17:19:22 +01:00
Dr Jonathan Richard Robert Kimmitt 3119e42d25 virtex7: off-edge ROI + graceful handling of unsolvable edge tiles
- settings/virtex7.sh: move XRAY_ROI and XRAY_ROI_GRID off the device bottom
  edge (SLICE_X0Y50:X11Y99; grid 5-20/261-312). Edge tiles at Y0 can't exercise
  features like BRAM36 ECC/cascade, and the bottom-edge BRAM is unsolvable.
- prjxray/segmaker.py: when a tile has no bitstream info (dummy tile, or an edge
  tile dropped from the tilegrid such as BRAM_L_X114Y0 on xc7vx485t), account
  for any tags on it and skip with a warning instead of asserting. Fixes the
  BRAM config/FIFO fuzzers (027, 029, ...) for virtex7; no-op for normal dummy
  tiles. Also print the unsolved tags before the all-tags-used assertion.
- fuzzers/Makefile: skip 018-clb-ram for virtex7 (Vivado 2020.1 packs SRL/RAM
  into different BEL slots than the fuzzer pins).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 16:29:42 +01:00
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
Hans Baier de537592c8 Merge remote-tracking branch 'upstream/master' 2025-04-28 04:58:14 +07:00
Hans Baier e5b8927c12 fuzzers/041-clk-hrow-pips/Makefile: revert accidentally committed line
Signed-off-by: Hans Baier <foss@hans-baier.de>
2025-04-03 04:54:16 +07:00
Hans Baier 5484250349 fix 063-gtx-common-conf/attrs.json
Signed-off-by: Hans Baier <foss@hans-baier.de>
2025-04-03 04:52:08 +07:00
Hans Baier 458f8125b4 fix 064-gtx-channel-conf/attrs.json
Signed-off-by: Hans Baier <foss@hans-baier.de>
2025-04-02 05:38:24 +07:00
Hans Baier ce065d470e Merge remote-tracking branch 'upstream/master' 2025-02-19 13:33:09 +07:00
Hans Baier 89774f18a2 fix doc link in README
Signed-off-by: Hans Baier <foss@hans-baier.de>
2025-02-14 08:11:57 +07:00
Hans Baier c33ec0a26b 063-gtx-common-conf: fix bitfilter to include DRP and remove collisions
Signed-off-by: Hans Baier <foss@hans-baier.de>
2025-02-14 03:38:36 +07:00
Hans Baier 9e486828a7 063-gtx-common-conf: adjust bitfilter to include frame 24/25, and see if we get collisions
Signed-off-by: Hans Baier <foss@hans-baier.de>
2025-02-13 17:20:08 +07:00
Hans Baier f42e522731 063-gtx-common-conf: add bitfilter to avoid collisions
Signed-off-by: Hans Baier <foss@hans-baier.de>
2025-02-13 17:20:08 +07:00
Hans Baier 0a19140cbe Fix 005-tilegrid/gtx_common
Signed-off-by: Hans Baier <foss@hans-baier.de>
2025-02-13 17:20:08 +07:00
Hans Baier 95eb4f812b add fuzzers/005-tilegrid/gtx_common
Signed-off-by: Hans Baier <foss@hans-baier.de>
2025-02-13 17:20:08 +07:00
Hans Baier 86bff48f0c fuzzers/Makefile: run GTX_CHANNEL fuzzer for kintex
Signed-off-by: Hans Baier <foss@hans-baier.de>
2025-02-13 17:20:08 +07:00
Hans Baier 1dc6a620db fuzzers/064-gtx-channel-conf: fix wrong attrs; fuzzer now works perfectly
Signed-off-by: Hans Baier <foss@hans-baier.de>
2025-02-13 17:20:08 +07:00
Hans Baier 4dd4533912 fuzzers/064-gtx-channel-conf: IN_USE for GTX has 10 bits and fixup channel tags before processing
Signed-off-by: Hans Baier <foss@hans-baier.de>
2025-02-13 17:20:08 +07:00
Hans Baier aaa5544622 fuzzers/064-gtx-channel-conf: re-enable bit filter, to get the IN_USE solution
Signed-off-by: Hans Baier <foss@hans-baier.de>
2025-02-13 17:20:08 +07:00
Hans Baier 5f7ca79667 fuzzers/064-gtx-channel-conf: double specimens from 20 to 40 to resolve some multi candidates features
Signed-off-by: Hans Baier <foss@hans-baier.de>
2025-02-13 17:20:08 +07:00
Hans Baier 6c6c528970 fix gtx_channel tilegrid fuzzer
Signed-off-by: Hans Baier <foss@hans-baier.de>
2025-02-13 17:20:08 +07:00
Hans Baier e565dae491 064-gtx-channel-conf fuzzer runs and gets first results, many are still missing (zero candidates)
Signed-off-by: Hans Baier <foss@hans-baier.de>
2025-02-13 17:20:08 +07:00
Hans Baier 51a0b43919 063-gtx-common-conf gives first plausible results
Signed-off-by: Hans Baier <foss@hans-baier.de>
2025-02-13 17:20:08 +07:00
Hans Baier 26ccc8a038 005-tilegrid/add_tdb.py: add missing gtx_int_interface
Signed-off-by: Hans Baier <foss@hans-baier.de>
2025-02-13 17:20:08 +07:00
Hans Baier ce09bfb56e fuzzers/005-tilegrid/pcie_int_interface/top.py: fix PCIE_INT variable name
Signed-off-by: Hans Baier <foss@hans-baier.de>
2025-02-13 17:20:08 +07:00
Hans Baier 8d7f18cd7d fix gtx_channel number of words
Signed-off-by: Hans Baier <foss@hans-baier.de>
2025-02-13 17:20:08 +07:00
Hans Baier f1e816f305 add GTX tilegridd fuzzers to tilegrid fuzzer Makefile
Signed-off-by: Hans Baier <foss@hans-baier.de>
2025-02-13 17:20:08 +07:00
Hans Baier 9e0085136d 005-tilegrid/gtx_int_interface fuzzer works
Signed-off-by: Hans Baier <foss@hans-baier.de>
2025-02-13 17:20:08 +07:00
Hans Baier 711bff982b 005-tilegrid/gtx_channel fuzzer works
Signed-off-by: Hans Baier <foss@hans-baier.de>
2025-02-13 17:20:08 +07:00
Jonathan Kimmitt 42eddb9b9e Experimental support for xc7k325t
Signed-off-by: Jonathan Kimmitt <jonathan@kimmitt.uk>
Signed-off-by: Tim 'mithro' Ansell <tansell@google.com>
2024-10-25 10:11:38 +07:00
Hans Baier a1b5db694e add XC7K420T support
Signed-off-by: Hans Baier <hansfbaier@gmail.com>
2024-10-25 09:58:51 +07:00
Hans Baier ee5ffe2333 add kintex 480T support
Signed-off-by: Hans Baier <hansfbaier@gmail.com>
2024-10-25 09:58:45 +07:00
Hans Baier 4214de4ece segbits_hclk_ioi: fix missing ONLY_DIFF_IN_USE
Signed-off-by: Hans Baier <hansfbaier@gmail.com>
2024-10-25 09:41:21 +07:00
Hans Baier 7ceb33337d 071-ppips: In Kintex7, two wires are permanently connected to RIOI_O[01]
Signed-off-by: Hans Baier <hansfbaier@gmail.com>
2024-10-25 09:39:34 +07:00
Hans Baier 20f4e101d1 add 038-cfg-startup fuzzer to fuzzers Makefile
Signed-off-by: Hans Baier <hansfbaier@gmail.com>
2024-01-08 14:00:21 +07:00
Hans Baier 0685efcd5c add ppips for CFG_CENTER_TOP and CFG_CENTER_BOT
Signed-off-by: Hans Baier <hansfbaier@gmail.com>
2024-01-08 14:00:21 +07:00
Hans Baier 2df9e9e92c add ppips for CFG_CENTER_MID
Signed-off-by: Hans Baier <hansfbaier@gmail.com>
2024-01-08 14:00:21 +07:00
Hans Baier db1ae77fa2 add basic fuzzer for STARTUPE2
Signed-off-by: Hans Baier <hansfbaier@gmail.com>
2024-01-08 14:00:21 +07:00
Hans Baier d438c6f0a3 fuzzers/Makefile: add odelay fuzzer and factor out condition for high performance banks
Signed-off-by: Hans Baier <hansfbaier@gmail.com>
2024-01-08 14:00:21 +07:00
David Shah dd2415365e Basic ODELAY fuzzer
Signed-off-by: David Shah <dave@ds0.me>
Signed-off-by: Hans Baier <hansfbaier@gmail.com>
2024-01-08 14:00:21 +07:00
Hans Baier 1497c7ea90 030-iob18: add issue link to hack used in Makefile
Signed-off-by: Hans Baier <hansfbaier@gmail.com>
2024-01-08 14:00:21 +07:00
Hans Baier 1b1ff89c16 write_io_banks.tcl: use a reliable way to distinguish high performance banks
Signed-off-by: Hans Baier <hansfbaier@gmail.com>
2024-01-08 14:00:21 +07:00
Hans Baier 3ee0781314 030-iob18: add manually discovered RIOB18.IOB_Y0.SSTL*.IN feature, reduces specimens to 40
Signed-off-by: Hans Baier <hansfbaier@gmail.com>
2024-01-08 14:00:21 +07:00
Hans Baier a517cfdda7 030-iob18: fix Vref conflict warnigns by assigning the correct Vref
Signed-off-by: Hans Baier <hansfbaier@gmail.com>
2024-01-08 14:00:21 +07:00
Hans Baier ec284dfb8f riob18: fix IBUF_LOW_PWR_SUPPORTED
Signed-off-by: Hans Baier <hansfbaier@gmail.com>
2024-01-08 14:00:20 +07:00
Hans Baier 3cce9fb8af fix obvious issues in 035a-iob18-idelay/bits.dbf and 036-iob18-ologic/bits.dbf
Signed-off-by: Hans Baier <hansfbaier@gmail.com>
2024-01-08 14:00:20 +07:00
Hans Baier d9b9be10f6 030-iob18/README.md: explain about the fuzzer
Signed-off-by: Hans Baier <hansfbaier@gmail.com>
2024-01-08 14:00:20 +07:00
Hans Baier 3e8547dda8 update copyright year for io*18 fuzzers
Signed-off-by: Hans Baier <hansfbaier@gmail.com>
2024-01-08 14:00:20 +07:00