prjxray/prjxray
Dr Jonathan Richard Robert Kimmitt a4e63510b4 virtex7: open-source FASM-path now produces a Y1-mixed-IOB bitstream
Two surgical fixes that together close the FASM -> frames -> bitstream
path for designs that use IOB_Y1 (slave) as an input alongside IOB_Y0
(master) as an output in the same LIOB18/RIOB18 tile.  Verified
end-to-end on VC707 (~/johnson_8bit, 8-bit Johnson counter with
LEDs on Y0 and the centre-button input landing on Y1): single
`fasm2frames` + `xc7frames2bit` run with no Vivado in the loop, the
loaded bitstream advances the ring on each button press.

(1) Layer-A — IN_ONLY segbit over-claim.

    LIOB18.IOB_Y1.LVCMOS..._IN_ONLY rows previously CLEARed bits
    `!38_32 !38_34`.  Those two bits actually belong to
    INT_L.IOB_COL_BANK_ACTIVE (which SETs them).  When a tile has a
    Y0 OBUF + Y1 IBUF, both features fire and conflict on the same
    physical bits — fasm2frames stops with FasmInconsistentBits.
    Drop those two bits from every Y1 IN_ONLY row in LIOB18 and
    RIOB18; let the bits default-to-zero unless bank-active sets
    them.  Verified that the Y0 IN_ONLY rows are untouched.

(2) Layer-B — XRAY_ALLOW_MISSING_FEATURES escape hatch.

    fasm_assembler.py: parse_fasm_filename() now respects the env
    var XRAY_ALLOW_MISSING_FEATURES=1.  When set, missing-feature
    lookups become per-line console warnings instead of a
    FasmLookupError.  Three IOB_Y1 features still need fuzzing
    (IBUF_HP_BANK_GLUE, LVCMOS12_LVCMOS15.IN,
    LVCMOS12_LVCMOS15_SSTL12_SSTL135_SSTL15.IN_ONLY) — the proper
    fix is a fuzzer pass that places IBUFs on Y1 sites and merges
    the captured segbits into segbits_{l,r}iob18.db, but until then
    the escape hatch keeps the open-source path moving.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-02 09:36:57 +01:00
..
__init__.py Generate tile types, site types, tilegrid, tileconn for entire part. 2018-09-26 22:37:33 -07:00
bitfilter.py scripts: use open safe file class 2022-03-17 10:04:19 +01:00
bitsmaker.py Add licensing header to python scripts 2020-05-26 07:33:12 -07:00
bitstream.py scripts: use open safe file class 2022-03-17 10:04:19 +01:00
connections.py Add licensing header to python scripts 2020-05-26 07:33:12 -07:00
db.py prjxray: Update scripts to access fabric data 2021-01-12 22:36:58 +01:00
fasm_assembler.py virtex7: open-source FASM-path now produces a Y1-mixed-IOB bitstream 2026-06-02 09:36:57 +01:00
fasm_disassembler.py disassembler: sort remaining unknown bits 2021-01-05 18:14:17 +01:00
grid.py Add licensing header to python scripts 2020-05-26 07:33:12 -07:00
grid_types.py Add licensing header to python scripts 2020-05-26 07:33:12 -07:00
lib.py scripts: use open safe file class 2022-03-17 10:04:19 +01:00
lms_solver.py scripts: use open safe file class 2022-03-17 10:04:19 +01:00
lut_maker.py Add licensing header to python scripts 2020-05-26 07:33:12 -07:00
math_models.py Add licensing header to python scripts 2020-05-26 07:33:12 -07:00
node_lookup.py scripts: use open safe file class 2022-03-17 10:04:19 +01:00
node_model.py Addresses review comments. 2020-11-30 14:09:17 -05:00
overlay.py Remove grid argument and fix formatting 2020-07-15 15:54:27 -04:00
roi.py Add licensing header to python scripts 2020-05-26 07:33:12 -07:00
segmaker.py virtex7: off-edge ROI + graceful handling of unsolvable edge tiles 2026-05-24 16:29:42 +01:00
segment_map.py Add licensing header to python scripts 2020-05-26 07:33:12 -07:00
site_type.py Fix formatting after updating license headers 2020-05-26 07:33:12 -07:00
state_gen.py Fix formatting after updating license headers 2020-05-26 07:33:12 -07:00
tile.py scripts: use open safe file class 2022-03-17 10:04:19 +01:00
tile_segbits.py scripts: use open safe file class 2022-03-17 10:04:19 +01:00
tile_segbits_alias.py scripts: use open safe file class 2022-03-17 10:04:19 +01:00
timing.py Fix formatting after updating license headers 2020-05-26 07:33:12 -07:00
util.py add support for the kintex high performance banks 2022-11-24 01:37:46 +07:00
verilog.py Add licensing header to python scripts 2020-05-26 07:33:12 -07:00
xjson.py Add licensing header to python scripts 2020-05-26 07:33:12 -07:00