Closed hansemro closed 5 months ago
@hansemro Hi, thanks for this perfect report. That made understanding, reproducing and fixing the problem really easy. I implemented a fix here: https://github.com/openXC7/nextpnr-xilinx/commit/46c781f64e638a6fdb1f2f10486ba4e50b5e4648 it is in the pack-bscan branch. Please test it on your hardware, and let me know if it works, then I will merge it.
Please test it on your hardware, and let me know if it works, then I will merge it.
Currently away, but will test soon. Thanks!
@hansfbaier pack-bscan branch resolves this issue. Thanks!
OK this is merged. Thanks for the great report!
Issue Description
NextPNR's placer may place BSCANE2 BELs at a different location than expected, and thus require a different USERx instruction to access.
Steps to Reproduce
jtag_led
demo withright-shift-fail
branch:Modify USER_PORT/JTAG_CHAIN parameter in
src/rtl/jtag_led.sv
with any value between 1-4 (inclusive).Build with
make
using openXC7 toolchain:NEXTPNR_BEL
attribute forbscane
cell is valid or not insidejtag_led.place.json
.Expected placement:
JTAG_CHAIN
NEXTPNR_BEL
BSCAN_X0Y0/BSCAN
BSCAN_X0Y1/BSCAN
BSCAN_X0Y2/BSCAN
BSCAN_X0Y3/BSCAN
If still valid, try rebuilding with
make YOSYS_OPTS=-DLS clean all
. For some reasons, changing howjtag_tdi
gets shifted into a shift register can affect placement.Workaround
As a workaround, you can manually correct placement in
jtag_led.place.json
and let nextpnr route with the corrected json: