GTX support, Preliminary Virtex7 support, SERDES/HDMI fixes, and many more
nextpnr-xilinx 0.9.0
68 non-merge commits since 0.8.2 (net +2366/−648 lines across 27 files).
GTX Transceiver
Full GTX transceiver support for Kintex-7, including PCIe over GTX.
- GTXE2_COMMON + GTXE2_CHANNEL implementation
- GTX channel driven by IBUFDS (CPLL mode)
- PCIe verified working on Kintex-7
- QPLL_COARSE_FREQ_OVRD bitwidth fix
- gtx_common default magic values
- GTX channel clock port error messages improved
- Submodules bumped to latest openXC7
SerDes / HDMI
- Cascaded OSERDESE2 master/slave support, demonstrated for HDMI
- TMDS_33:
IN_ONLY+IN_TERM.NONEfor HDMI on Spartan-7 / Zynq-7 - ISERDESE2: disconnect hardwired CLKDIVP + D/SHIFTIN1/2 ports when DDLY used (match Vivado behavior)
- DDR data widths 10 and 14 in prjxray-db
Preliminary Virtex-7 Support
Initial Virtex-7 (xc7v) device family support, merged from the virtex7-support branch.
- BUFR cell packer + site-type meta bump
- HP-bank glue + phantom-BUFGCTRL filter + LIOB18 placement
- RAM128/256X1S distributed-RAM packing + INT-tile constant-net bridge
- Atomic CARRY4 packer preserving Vivado-compatible names
- Global-buffer placement: layer-BFS + deterministic tie-break
- BUFGCTRL default I-mux assignments for unused slots
- IBUFDS_GTE2 X-coordinate from chipdb (was hardcoded to X0)
- Numeric-aware site-name sort to fix IBUF wire-index swap
- Guard
tileStatus[dst.tile]in PIP_CONST_DRIVER branch
I/O & Packing
- BUFGMUX support added
- IODELAY_GROUP fix: attributes are strings, not numbers
- SHIFTIN checks fixed for constant-net connections
- IDDR / ODDR pack port bug fixed
- OSERDESE pack bug fixed
- I/OSERDESE2 constid tidy-up
DSP / PCIe
- DSP: disconnect MULTSIGNIN + CARRYCASCIN tied to GND
- PCIE_2_1 support + GTP CHANNEL/COMMON configuration updates
Cell Primitives
- LDCE / LDPE flip-flop support for Artix-7
- BRAM36 odd port width feature emission for RAMB36E1
- RAM32M / RAM64M INIT interleaving fix +
INIT_{A,B,C,D}parameter support
Build & Portability
- Boost 1.90+ and C++17 build compatibility
- Python 3.13 / 3.14 support
- GCC 14 fix (
constonmax_elems_) cmake_minimum_requiredset to 3.10boost::filesystem::basenamereplaced for future Boost compatibilitypath.normalize()→path.lexically_normal()(C++17)- json11 missing
<cstdint>header fix - Eigen3 CMake requirement fix
- Nix flake devshell for reproducible cross-distribution builds
Frontend
- Ignore
$scopeinfoin Yosys output - Preserve net merge history for imported nets
Miscellaneous Fixes
- XDC file parsing quality-of-life update
- prjxray-db submodule switched to OpenXC7
- Default router option fix
- PLL/MMCM compensation error message made user-readable
- BBA compiler warnings fixed
- DSP cascade output missing port → downgraded to warning
- XADC pins used as regular IO → proper error message
- Unsupported LUTRAM → log error instead of crash
- RAM256X1D on XC7 → error instead of silent failure
- GUI disabled by default (not fully working)
- Python regex
SyntaxWarningfix - Typo fixes, code cosmetics, flake.nix improvements
What's Changed
- gui/quadtree.h: drop const on max_elems_ by @hansemro in #31
- xilinx/pack_dram: log error when packing RAM256X1D on XC7 by @hansemro in #30
- Fix RAM32M/RAM64M initialization with INIT_{A,B,C,D} parameters by @hansemro in #29
- xilinx/pack_dram: log error on unsupported LUTRAM by @hansemro in #32
- fix iddr and oddr pack port bug by @AdamLee7 in #45
- boost::filesystem::basename no longer exists by @yufrice in #47
- Artix PCIE_2_1 support by @regymm in #61
- Added IN_ONLY and IN_TERM.NONE for TMDS_33, enabling HDMI, tested on Spartan 7 and Zynq 7 by @regymm in #72
- Support for cascaded OSERDESE2 by @regymm in #80
- frontend: Ignore $scopeinfo by @trabucayre in #82
- Added BUFGMUX support by @regymm in #81
- frontend: keep net merge history for imported nets by @RCoeurjoly in #83
- Fix build with recent GNU/Linux & compiler by @trabucayre in #85
- Fix build with Boost 1.90+ and C++17 by @drewbabel in #84
- fix: python SyntaxWarning with unescaped regex by @parker-research in #86
- GTX channel driven by IBUFDS (CPLL mode) support, with PCIe working on Kintex 7 by @regymm in #88
- XDC file parsing QoL update by @regymm in #89
- DSP: disconnect MULTSIGNIN and CARRYCASCIN tied to GND by @regymm in #90
- feat: add LDCE/LDPE support for Artix 7 based FPGAs by @IAmMarcelJung in #93
- xilinx: emit BRAM36 width features for RAMB36E1 odd port widths by @drewbabel in #95
New Contributors
- @AdamLee7 made his first contribution in #45
- @yufrice made their first contribution in #47
- @regymm made his first contribution in #61
- @trabucayre made his first contribution in #82
- @RCoeurjoly made his first contribution in #83
- @drewbabel made his first contribution in #84
- @parker-research made his first contribution in #86
- @IAmMarcelJung made his first contribution in #93
Full Changelog: 0.8.2...0.9.0