mirror of https://github.com/openXC7/prjxray.git
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>
|
||
|---|---|---|
| .. | ||
| __init__.py | ||
| bitfilter.py | ||
| bitsmaker.py | ||
| bitstream.py | ||
| connections.py | ||
| db.py | ||
| fasm_assembler.py | ||
| fasm_disassembler.py | ||
| grid.py | ||
| grid_types.py | ||
| lib.py | ||
| lms_solver.py | ||
| lut_maker.py | ||
| math_models.py | ||
| node_lookup.py | ||
| node_model.py | ||
| overlay.py | ||
| roi.py | ||
| segmaker.py | ||
| segment_map.py | ||
| site_type.py | ||
| state_gen.py | ||
| tile.py | ||
| tile_segbits.py | ||
| tile_segbits_alias.py | ||
| timing.py | ||
| util.py | ||
| verilog.py | ||
| xjson.py | ||