Skip to content

prjxray: build openXC7 master 9346969e - #17

Merged
cavearr merged 1 commit into
mainfrom
feat/bump-prjxray-9346969e
Sep 15, 2026
Merged

cavearr merged 1 commit into
mainfrom
feat/bump-prjxray-9346969e

Conversation

@cavearr

@cavearr cavearr commented Sep 15, 2026

Copy link
Copy Markdown
Member

Bump prjxray from ef5203e9 to openXC7 master 9346969e, validated on the bench before the push: chipdb identity unchanged (8abe12ebcdc89d7b), L1 37/37 with the release bins, L2 zero metric drift,
one-factor A/B over the 37 parts (frames and .bit byte-identical), HP-bank specimen fails with the same nine missing database keys before and after (the only behavioural change is the opt-in
XRAY_ALLOW_MISSING_FEATURES), windows cross-build and E2E under wine with the mingw python OK.

Move prjxray from ef5203e9 (2026-08-18) to openXC7/prjxray master
9346969e (2026-09-11). The delta on the shipped surface (fasm2frames,
bit2fasm, xc7frames2bit, bitread, xc7patch, the prjxray python library)
is exactly what 0061/0067 analysed and deliberately left out of the
0.9.5 bump so it could get its own bench:

- utils/fasm2frames.py (+325): HP-bank glue auto-injection on any
  LIOB18/RIOB18 tile (IBUF/OBUF/IBUFDS_HP_BANK_GLUE and virtex7 column
  markers), written for virtex7 whose database carries those segbits.
  On a database without those keys (our zynq7) the injection collects
  into a list that is never raised: a silent no-op by design. Also the
  PUDC_B pullup gains an HP-bank template, and the STEPDOWN walk now
  resolves fabric/package tile-name mismatches (4f12665b, written
  against xc7s25csga324-1) -- a mismatch our manifest no longer has:
  all 128 packaged parts resolve every package_pins.csv tile name
  against their fabric tilegrid (0 discrepancies, measured against
  prjxray-db 1768fb35 in the 0.9.5 bench).
- prjxray/grid.py: a tile type with its own segbits database now wins
  over the alias path (virtex7 IOB SING alias metadata is wrong). This
  is on the assembly hot path of every family, so it is the change the
  bench's one-factor A/B (old vs new fasm2frames over the same
  canonical fasm, all 37 manifest parts) exists to measure.
- tools/bitread.cc: upstream's own re-implementation of the
  use-after-free fix we contributed as PR #6 (copy mmap bytes into an
  owning vector instead of keeping the owners alive).
- Inert for what we ship: db.py tilegrid fallback, the opt-in
  XRAY_ALLOW_MISSING_FEATURES escape, a util.py assert message, and
  segmaker.py (fuzzers). The remaining new commits are our own PRs #16
  and #18 (fuzzers, utils/, docs).

The three text anchors of the packer's util.py locking patch
(pack/components.py) are present verbatim in 9346969e, so that patch
applies unchanged. The chipdb identity does not involve prjxray and
stays 8abe12ebcdc89d7b, so the 37 prebuilt bins of the 0.9.5 cycle
remain valid for this tree. nix/windows/default.nix only gets the
cosmetic prjxray-win version; its sources derive from the native
derivation.
@cavearr
cavearr merged commit c33e897 into main Sep 15, 2026
8 checks passed
@cavearr
cavearr deleted the feat/bump-prjxray-9346969e branch September 15, 2026 16:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant