prjxray/fuzzers
Dr Jonathan Richard Robert Kimmitt a8de0afdb3 virtex7: HP-bank glue codified end-to-end + open-flow validation
The open-flow (Yosys → nextpnr-xilinx → FASM → bitstream) now produces
silicon-functional bits on VC707 xc7vx485tffg1761-2 for:
  - rst_to_led (IBUF↔OBUF passthrough)
  - counter_skewfree (button-clocked 8b counter, general routing)
  - counter_sw_bufr (button → BUFR → 8b counter)
  - counter_bufr  (200 MHz LVDS sysclk → IBUFDS → BUFR → 8b counter)
  - counter_2bufg (2× BUFGCTRL on the same source)
  - vc707_telegraph (125 MHz crystal → IBUFDS_GTE2 → BUFG → UART smoke test)
  - vc707_picosoc  (picorv32 + simpleuart + BRAM @ 125 MHz; UART prints
                    'PicoSoC alive on VC707 @ 125 MHz' on /dev/ttyUSB0)

Highlights of this drop:

utils/fasm2frames.py (+223 net):
  - Bank-glue auto-injection for HP-bank IOB18 — IBUF/OBUF (Y0+Y1) +
    IBUFDS differential pair. Fires off the FASM-level direction
    heuristic (.IN/.IN_ONLY/IBUFDISABLE for IBUF, .DRIVE. for OBUF,
    .IN_DIFF for IBUFDS; .SLEW. is unreliable as a marker — gets emitted
    on default-state IOBs too).
  - INT_L_X32Y49 DCI cascade / bank-active markers when any LIOB18_X81
    Y1 OBUF is present.
  - PUDC_B emission rewritten for HP-bank IOSTANDARDs (10 features
    cover Y0 + Y1 default-state; all 9 historic 'PUDC_B glue' bits
    flow naturally from the existing IOSTANDARD segbits).
  - HCLK_L per-BUFRCLK-channel 'active' marker — currently codified
    for BUFRCLK3 (the channel exercised by counter_sw_bufr).
  - GFAN T-tie root glue — INT_L_X62Y(N+10).GFAN_TIE_ROOT_GLUE when
    INT_L_X62Y(N).GFAN0.GND_WIRE appears (OBUF.T → GND routing).
  - PUDC_B tile excluded from the bank-glue walk (its IN features are
    virtual; injecting OBUF_HP_BANK_GLUE on it produces spurious bits).

utils/utils.tcl (+47):
  - write_pip_txtdata bulk-fetch — replaces per-net foreach pip with
    bulk get_pips + bulk get_property IS_DIRECTIONAL + cached
    dst_wire_to_num_pips. ~4× speed-up on xc7vx485t (per-spec time on
    041-clk-hrow-pips / 045-hclk-cmt-pips drops from ~1.5 h to ~25 min).

utils/mergedb.sh (+15):
  - LIOI / LIOI_TBYTESRC / LIOI_TBYTETERM / LIOB18 / mask_liob18 sed
    rewrites for the L-side IOI/IOB18 tiles on HP-only parts (xc7vx485t
    uses left-side IOB18 too; upstream kintex7 mergedb only knew the
    right side).

11 fuzzers patched for virtex7 readiness:
  - 030-iob18 Makefile: split DB target for virtex7 (HP-only); the BUFR
    HP-bank results come from the actual fuzzer rather than HR-side sed.
  - 037-iob18-pips: L-side mirror tiles (LIOI / LIOI_TBYTESRC /
    LIOI_TBYTETERM) added to segdata glob; *_SING tiles excluded;
    EXCLUDE_RE updated for L-side prefixes.
  - 039-hclk-config: split virtex7 vs kintex7 (HCLK_IOI vs HCLK_IOI3);
    XRAY_IOSTANDARD env var; IOB18M/IOB33M alternation.
  - 047a-hclk-idelayctrl-pips: accepts both HCLK_IOI and HCLK_IOI3.
  - 041, 045, 034, 034b, 043, 044, 046: removed local
    write_pip_txtdata override that shadowed the patched utils.tcl
    bulk-fetch (was re-introducing the slow per-net Tcl path).

README.md (+86):
  - 'Virtex-7 Port Status (virtex7-support branch)' section —
    achievements, goals, work-in-progress, constraints.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-29 10:13:53 +01:00
..
000-init-db add support for the kintex high performance banks 2024-01-08 14:00:20 +07:00
001-part-yaml Add Virtex-7 (xc7vx485t) family support 2026-05-24 07:21:23 +01:00
005-tilegrid Add Virtex-7 (xc7vx485t) family support 2026-05-24 07:21:23 +01:00
007-timing Add Virtex-7 (xc7vx485t) family support 2026-05-24 07:21:23 +01:00
010-clb-lutinit Add Virtex-7 (xc7vx485t) family support 2026-05-24 07:21:23 +01:00
011-clb-ffconfig Add Virtex-7 (xc7vx485t) family support 2026-05-24 07:21:23 +01:00
012-clb-n5ffmux Add Virtex-7 (xc7vx485t) family support 2026-05-24 07:21:23 +01:00
013-clb-ncy0 Add Virtex-7 (xc7vx485t) family support 2026-05-24 07:21:23 +01:00
014-clb-ffsrcemux Add Virtex-7 (xc7vx485t) family support 2026-05-24 07:21:23 +01:00
015-clb-nffmux Add Virtex-7 (xc7vx485t) family support 2026-05-24 07:21:23 +01:00
016-clb-noutmux Add Virtex-7 (xc7vx485t) family support 2026-05-24 07:21:23 +01:00
017-clb-precyinit Add Virtex-7 (xc7vx485t) family support 2026-05-24 07:21:23 +01:00
018-clb-ram virtex7: enable 018-clb-ram (LUTRAM/SRL) — was misdiagnosed as Vivado-version wall 2026-05-27 14:27:08 +01:00
019-clb-ndi1mux Add Virtex-7 (xc7vx485t) family support 2026-05-24 07:21:23 +01:00
025-bram-config Add Virtex-7 (xc7vx485t) family support 2026-05-24 07:21:23 +01:00
026-bram-data Add Virtex-7 (xc7vx485t) family support 2026-05-24 07:21:23 +01:00
027-bram36-config Fix new BRAM36 features. 2020-10-28 13:44:49 -07:00
028-fifo-config Add license headers to tcl files 2020-05-26 07:33:12 -07:00
029-bram-fifo-config Add license headers to tcl files 2020-05-26 07:33:12 -07:00
030-iob Add Virtex-7 (xc7vx485t) family support 2026-05-24 07:21:23 +01:00
030-iob18 virtex7: HP-bank glue codified end-to-end + open-flow validation 2026-05-29 10:13:53 +01:00
031-cmt-mmcm mmcm, pll: use full name for MMCM, and PLL sites 2021-02-26 17:04:03 +01:00
032-cmt-pll mmcm, pll: use full name for MMCM, and PLL sites 2021-02-26 17:04:03 +01:00
033-mon-xadc Add Virtex-7 (xc7vx485t) family support 2026-05-24 07:21:23 +01:00
034-cmt-pll-pips virtex7: HP-bank glue codified end-to-end + open-flow validation 2026-05-29 10:13:53 +01:00
034b-cmt-mmcm-pips virtex7: HP-bank glue codified end-to-end + open-flow validation 2026-05-29 10:13:53 +01:00
035-iob-ilogic Add Virtex-7 (xc7vx485t) family support 2026-05-24 07:21:23 +01:00
035a-iob-idelay Add license headers to tcl files 2020-05-26 07:33:12 -07:00
035a-iob18-idelay virtex7: HP-bank glue codified end-to-end + open-flow validation 2026-05-29 10:13:53 +01:00
035a-iob18-odelay virtex7: HP-bank glue codified end-to-end + open-flow validation 2026-05-29 10:13:53 +01:00
035b-iob-iserdes Add Virtex-7 (xc7vx485t) family support 2026-05-24 07:21:23 +01:00
036-iob-ologic Fix duplicate feature ZBUF and TDDR.SRUSED. 2020-10-02 19:08:36 -07:00
036-iob18-ologic fix obvious issues in 035a-iob18-idelay/bits.dbf and 036-iob18-ologic/bits.dbf 2024-01-08 14:00:20 +07:00
037-iob-pips Add license headers to tcl files 2020-05-26 07:33:12 -07:00
037-iob18-pips virtex7: HP-bank glue codified end-to-end + open-flow validation 2026-05-29 10:13:53 +01:00
038-cfg virtex7: HP-bank glue codified end-to-end + open-flow validation 2026-05-29 10:13:53 +01:00
038-cfg-startup add basic fuzzer for STARTUPE2 2024-01-08 14:00:21 +07:00
039-hclk-config virtex7: HP-bank glue codified end-to-end + open-flow validation 2026-05-29 10:13:53 +01:00
040-clk-hrow-config Add license headers to tcl files 2020-05-26 07:33:12 -07:00
041-clk-hrow-pips virtex7: HP-bank glue codified end-to-end + open-flow validation 2026-05-29 10:13:53 +01:00
042-clk-bufg-config Add license headers to tcl files 2020-05-26 07:33:12 -07:00
043-clk-rebuf-pips virtex7: HP-bank glue codified end-to-end + open-flow validation 2026-05-29 10:13:53 +01:00
044-clk-bufg-pips virtex7: HP-bank glue codified end-to-end + open-flow validation 2026-05-29 10:13:53 +01:00
045-hclk-cmt-pips virtex7: HP-bank glue codified end-to-end + open-flow validation 2026-05-29 10:13:53 +01:00
046-clk-bufg-muxed-pips virtex7: HP-bank glue codified end-to-end + open-flow validation 2026-05-29 10:13:53 +01:00
047-hclk-ioi-pips Add license headers to tcl files 2020-05-26 07:33:12 -07:00
047-hclk-ioi18-pips update copyright year for io*18 fuzzers 2024-01-08 14:00:20 +07:00
047a-hclk-idelayctrl-pips virtex7: HP-bank glue codified end-to-end + open-flow validation 2026-05-29 10:13:53 +01:00
048-int-piplist Add licensing header to Makefiles 2020-05-26 07:33:12 -07:00
049-int-imux-gfan Add license headers to tcl files 2020-05-26 07:33:12 -07:00
050-pip-seed Add Virtex-7 (xc7vx485t) family support 2026-05-24 07:21:23 +01:00
051-pip-imuxlout-bypalts Add Virtex-7 (xc7vx485t) family support 2026-05-24 07:21:23 +01:00
052-pip-clkin Add Virtex-7 (xc7vx485t) family support 2026-05-24 07:21:23 +01:00
053-pip-ctrlin virtex7: 053-pip-ctrlin / 055-pip-gnd — 2*N tile reservation 2026-05-27 14:27:08 +01:00
054-pip-fan-alt Add Virtex-7 (xc7vx485t) family support 2026-05-24 07:21:23 +01:00
055-pip-gnd virtex7: 053-pip-ctrlin / 055-pip-gnd — 2*N tile reservation 2026-05-27 14:27:08 +01:00
056-pip-rem Add Virtex-7 (xc7vx485t) family support 2026-05-24 07:21:23 +01:00
057-pip-bi Add Virtex-7 (xc7vx485t) family support 2026-05-24 07:21:23 +01:00
058-pip-hclk Add Virtex-7 (xc7vx485t) family support 2026-05-24 07:21:23 +01:00
059-pip-byp-bounce Add Virtex-7 (xc7vx485t) family support 2026-05-24 07:21:23 +01:00
060-bram-cascades Add license headers to tcl files 2020-05-26 07:33:12 -07:00
061-pcie-conf cells_data: add clock information on ports.json 2021-03-26 13:47:38 +01:00
062-pcie-int-pips 062-pcie-int-pips: add fuzzer to document PCIE_INT_INTERFACE DELAY PIPs 2021-02-05 19:18:35 +01:00
063-gtp-common-conf cells_data: add clock information on ports.json 2021-03-26 13:47:38 +01:00
063-gtx-common-conf fix 063-gtx-common-conf/attrs.json 2025-04-03 04:52:08 +07:00
064-gtp-channel-conf 064-gtp-channel: fix width of [TR]XOUT_DIV attributes 2021-03-26 13:47:38 +01:00
064-gtx-channel-conf fix 064-gtx-channel-conf/attrs.json 2025-04-02 05:38:24 +07:00
065-gtp-common-pips fuzzers: fix clean in parts fuzzers 2022-03-03 12:50:33 +01:00
065b-gtp-common-pips 065b-gtp-pips: increase iter timeout 2022-03-07 14:57:31 +01:00
066-gtp-int-pips 066-gtp-int-pips: add fuzzer for GTP_INT_INTERFACE DELAY PIPs 2021-02-04 12:35:00 +01:00
071-ppips Add Virtex-7 (xc7vx485t) family support 2026-05-24 07:21:23 +01:00
072-ordered_wires fuzzers: fix clean in parts fuzzers 2022-03-03 12:50:33 +01:00
073-get_counts fuzzers: fix clean in parts fuzzers 2022-03-03 12:50:33 +01:00
074-dump_all virtex7: HP-bank glue codified end-to-end + open-flow validation 2026-05-29 10:13:53 +01:00
075-pins fuzzers: fix clean in parts fuzzers 2022-03-03 12:50:33 +01:00
076-ps7 Add license headers to tcl files 2020-05-26 07:33:12 -07:00
100-dsp-mskpat Add Virtex-7 (xc7vx485t) family support 2026-05-24 07:21:23 +01:00
101-dsp-pips 101-dsp-pips: solve DSP-related PIPs 2021-02-15 13:15:44 +01:00
piplist Add Virtex-7 (xc7vx485t) family support 2026-05-24 07:21:23 +01:00
.gitignore fuzzers: consolidate common gitignores 2018-12-19 18:56:32 -08:00
Makefile virtex7: enable 018-clb-ram (LUTRAM/SRL) — was misdiagnosed as Vivado-version wall 2026-05-27 14:27:08 +01:00
clb.mk 012-clb-d5ff: increased specimens and added c argument 2019-02-15 16:16:41 +01:00
clb_ext.mk Added a makefile which allows to fuzz features for both SLICEM and SLICEL but separate them during database merge. 2019-07-10 15:06:58 +02:00
fuzzer.mk Add left and right clock pips. 2019-02-11 09:59:09 -08:00
int_create_empty_db.sh Add licensing header to bash scripts 2020-05-26 07:33:12 -07:00
int_generate.py Add licensing header to fuzzers' python scripts 2020-05-26 07:33:12 -07:00
int_loop.mk fuzzers: Fix including Makefiles. 2019-01-31 18:24:33 -08:00
int_loop.sh pip fuzzers: enable part specific builds 2021-02-02 19:35:23 +01:00
int_loop_check.py Add licensing header to fuzzers' python scripts 2020-05-26 07:33:12 -07:00
int_maketodo.py Add initial MMCM feature and PIP support. 2020-10-08 17:44:42 -07:00
pip_list.mk Fix 048 not using correct directory. 2019-03-12 10:47:27 -07:00
pip_loop.mk pip fuzzers: enable part specific builds 2021-02-02 19:35:23 +01:00
reseg.sh Add licensing header to bash scripts 2020-05-26 07:33:12 -07:00
run_fuzzer.py run_fuzzer: replace semicolon with dash in stderr and stdout names 2022-02-03 18:14:58 +01:00