005-tilegrid: XRAY_GTX_SITES to fuzz only the BONDED GTX quads

005-tilegrid skips GTX entirely on virtex7, and the reason is the
package rather than the fuzzer: xc7vx485t-ffg1761 bonds only about half
its GTX quads, an UNBONDED quad cannot be placed, and one unplaceable
site fails the whole run.  So the GT tiles a real design actually uses
went unmeasured, and their tilegrid entries stayed empty -- which is the
"key not found" / empty bits{} hole that fasm2frames then reports far
downstream.

XRAY_GTX_SITES takes a comma-separated site list and restricts the fuzz
to it, so a bonded quad can be measured and the unbonded ones are left
legitimately unmeasured instead of taking the run down with them.  On
this board the SGMII sits on GTXE2_CHANNEL_X1Y* / GTXE2_COMMON_X1Y0.

Unset, behaviour is exactly as before.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Dr Jonathan Richard Robert Kimmitt 2026-08-19 13:57:35 +01:00
parent b6bb3abae5
commit 721ee34ba5
2 changed files with 24 additions and 0 deletions

View File

@ -24,6 +24,18 @@ def gen_sites():
for site_name, site_type in gridinfo.sites.items():
if site_type in ['GTXE2_CHANNEL']:
# XRAY_GTX_SITES restricts the fuzz to a comma-separated list of
# site names. Needed on virtex7: the xc7vx485t-ffg1761 package
# bonds only about half its GTX quads, and an UNBONDED quad
# cannot be placed, so fuzzing every site fails the whole run --
# which is why 005-tilegrid skips GTX for virtex7 entirely.
# Restricting to a bonded quad measures the tiles that a real
# design actually uses (this board's SGMII sits on
# GTXE2_CHANNEL_X1Y* / GTXE2_COMMON_X1Y0) and leaves the
# unbonded ones legitimately unmeasured.
want = os.getenv("XRAY_GTX_SITES")
if want and site_name not in want.split(','):
continue
yield tile_name, site_name

View File

@ -24,6 +24,18 @@ def gen_sites():
for site_name, site_type in gridinfo.sites.items():
if site_type in ['GTXE2_COMMON']:
# XRAY_GTX_SITES restricts the fuzz to a comma-separated list of
# site names. Needed on virtex7: the xc7vx485t-ffg1761 package
# bonds only about half its GTX quads, and an UNBONDED quad
# cannot be placed, so fuzzing every site fails the whole run --
# which is why 005-tilegrid skips GTX for virtex7 entirely.
# Restricting to a bonded quad measures the tiles that a real
# design actually uses (this board's SGMII sits on
# GTXE2_CHANNEL_X1Y* / GTXE2_COMMON_X1Y0) and leaves the
# unbonded ones legitimately unmeasured.
want = os.getenv("XRAY_GTX_SITES")
if want and site_name not in want.split(','):
continue
yield tile_name, site_name