I am running pynq-z2 with pynq version 2.7. I created a very simple bitstream to blink the LED. After I load the overlay, the board lost the network connection. The button/LED appears to behave as designed in my FPGA.
The following is the block design:
Here is the code for blink.v:
input [3:0] btn,
output [3:0] led
assign led = btn;
I load the overlay with:
from pynq import Overlay
ol = Overlay("/home/xilinx/blink.bit")
I attached the bitstream and hwh file.
blink.bit (3.9 MB)
blink.hwh (1.6 KB)
I upgrade my pynq to 3.01. Now I get an error:
File /usr/local/share/pynq-venv/lib/python3.10/site-packages/pynq/pl_server/embedded_device.py:254, in BitstreamHandler.get_parser(self, partial)
252 parser = self._get_cache()
253 except CacheMetadataError:
--> 254 parser = RuntimeMetadataParser(Metadata(input=self._filepath.with_suffix(".hwh")))
256 raise RuntimeError(f"Unable to parse metadata")
File /usr/local/share/pynq-venv/lib/python3.10/site-packages/pynq/metadata/runtime_metadata_parser.py:52, in RuntimeMetadataParser.__init__(self, md)
50 self.dtbo_data = None
51 self.systemgraph = self.md
---> 52 self.ps_name = list(md.get_processing_systems().keys())
53 self.ps = md.get_processing_systems()[self.ps_name]
54 self.family_ps = self.ps.ps_name
IndexError: list index out of range
I did not include the PS in my design. So I added the PS to my design. When I load the overlay, the board still loses the network connection.
Welcome to the community!
When you added your PS did you run “Run Block Automation” in your Vivado block design? Can you reshare your hwh file after adding the PS?
Also, I think the way that you are assigning the LED directly from the buttons in a combinatorial assignment might be a bit of a problem. In our base overlay we have some examples of connecting to the onboard LEDs which might be helpful as a starting point: PYNQ_Workshop/4_Programming_onboard_peripherals.ipynb at master · Xilinx/PYNQ_Workshop · GitHub
The files for building the base overlay for the Z2 can be found here: PYNQ/boards/Pynq-Z2/base at master · Xilinx/PYNQ · GitHub
All the best,
Is this really the root cause?
If the MIO connect is not connect, I think Vivado will not even synthesis.
I have tried empty overlay aka only PS clock and MIO before and nothing else and still network is working normally.
Correct me if this is not the case.
Yeah not totally sure what the root cause is – I have seen some similar problems before when an overlay is loaded with a badly configured PS so It would be good to see the hwh file and bit file with the PS added. But I completely agree that it might not be the issue.
@Li_Chen, when you load the overlay do you notice any messages appearing over UART?
All the best,
I connected the UART. When I load the overlay, the Linux system crashed as the UART is not responding; no messages. The PL part is still working as the LED is responding to buttons.
Yes, I did run “block automation”.
Attached please find the .hwh file.
blink.hwh (83.7 KB)
I figured out the problem. After I added the PS, I forgot the step to add the HDL wrapper. After I added it and regenerated the bitstream, loading overlay no longer crashes Linux.
Glad to hear you were able to fix the problem