Loading .bit files on ZCU-216

We are using PYNQ v3.01. The ZCU-216 was not included by default but we followed the procedure for adding our own board and it appears to work just fine. The procedure for building Pynq v3.01 required using Vivado version 2022.1. However, our customer requires Vivado 2021.2, not 2022.1.

Question: Can you use.bit and .hwh files created with Vivado 2021.2 on PYNQ v3.01 which was built using Vivado 2022.1?

We created a simple design which used GPIO to control the blue LEDs. We preloaded an output value of 0x55 to force a specific pattern. Here is the block diagram:

The first time we tried to execute Overlay(‘blink216.bit’), we got an error that the XRT environment was missing. So we added this line to ZCU216.spec:

            STAGE4_PACKAGES := xrt

Question: We got errors building if we included all the packages in Pynq-Z2.spec. What else is required beyond xrt?

After doing this, when we execute:

Overlay(‘blink216.bit’)

The blue LEDs change which means it worked! But then we get the following errors:

root@pynq:/# python3
Python 3.10.4 (main, Apr 2 2022, 09:04:19) [GCC 11.2.0] on linux
Type “help”, “copyright”, “credits” or “license” for more information.

from pynq import Overlay
Overlay(‘blink216.bit’)
Load Xclbin Failed
Traceback (most recent call last):
File “”, line 1, in
File “/usr/local/share/pynq-venv/lib/python3.10/site-packages/pynq/overlay.py”, line 348, in init
self.download()
File “/usr/local/share/pynq-venv/lib/python3.10/site-packages/pynq/overlay.py”, line 428, in download
super().download(self.parser)
File “/usr/local/share/pynq-venv/lib/python3.10/site-packages/pynq/bitstream.py”, line 168, in download
self.device.download(self, parser)
File “/usr/local/share/pynq-venv/lib/python3.10/site-packages/pynq/pl_server/embedded_device.py”, line 686, in download
self._xrt_download(parser.xclbin_data)
File “/usr/local/share/pynq-venv/lib/python3.10/site-packages/pynq/pl_server/xrt_device.py”, line 529, in _xrt_download
raise RuntimeError(
RuntimeError: Programming Device failed: ENODEV (19) No such device

Hope someone can explain what this means.

Thank you!

Hi dnaddor,

Your problem does seem to be with xrt. While on the board, can you tell me what the output of the following commands are:

echo $XILINX_XRT`
sudo find /usr/lib -iname "*libxrt*"
sudo find /usr/lib -iname "*zocl*"
sudo xbutil examine

Josh

Here is the output:

root@pynq:/# echo $XILINX_XRT
/usr
root@pynq:/# find /usr/lib -iname “libxrt
/usr/lib/libxrt_core.so
/usr/lib/libxrt++_static.a
/usr/lib/libxrt_hwemu.so
/usr/lib/libxrt_hwemu.so.2
/usr/lib/libxrt_swemu.so.2
/usr/lib/libxrt++.so.2.13.0
/usr/lib/libxrt++.so.2
/usr/lib/libxrt_coreutil_static.a
/usr/lib/libxrt_hwemu.so.2.13.0
/usr/lib/libxrt_coreutil.so.2.13.0
/usr/lib/libxrt_coreutil.so
/usr/lib/libxrt_coreutil.so.2
/usr/lib/libxrt++.so
/usr/lib/libxrt_core.so.2
/usr/lib/libxrt_swemu.so
/usr/lib/libxrt_swemu.so.2.13.0
/usr/lib/libxrt_core.so.2.13.0
root@pynq:/# find /usr/lib -iname “zocl
/usr/lib/modules/5.15.19-xilinx-v2022.1/extra/zocl.ko
root@pynq:/# xbutil examine
System Configuration
OS Name : Linux
Release : 5.15.19-xilinx-v2022.1
Version : #1 SMP Mon Apr 11 17:52:14 UTC 2022
Machine : aarch64
CPU Cores : 4
Memory : 3931 MB
Distribution : PynqLinux, based on Ubuntu 22.04
GLIBC : 2.35
Model : ZynqMP ZCU216 RevA

XRT
Version : 2.13.0
Branch : temp
Hash : f5505e402c2ca1ffe45eb6d3a9399b23a0dc8776
Hash Date : 2022-10-21 17:40:17
ZOCL : 2.13.0, f5505e402c2ca1ffe45eb6d3a9399b23a0dc8776

Devices present
0 devices found
BDF : Shell Platform UUID Device ID Device Ready*

  • Devices that are not ready will have reduced functionality when using XRT tools
    root@pynq:/#

See anything useful?

Thanks,
Dave

It looks like you have the correct libraries installed and the XRT environment variable is set correctly. However, you’ll see from the output of xbutil examine that no devices are found.

This might be a device tree issue. In particular, the zocl device tree snippet is needed for XRT to detect devices. This should be appended to the device tree during the sdbuild process (as shown here).

I’d maybe investigate the device tree on the board to make sure that is present.

Josh