Loading overlay causes the board to lose network connectivity

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:

Screenshot_20230116_105754

Here is the code for blink.v:

module blink(
    input [3:0] btn,
    output [3:0] led
    );
    assign led = btn;
endmodule

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)

1 Like

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")))
    255 except:
    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())[0]
     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.

Hi @Li_Chen,

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,
Shane

@stf

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.

Thank you

Hi @briansune,

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,
Shane

Hi @stf,

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)

Li

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.

2 Likes

Glad to hear you were able to fix the problem :slight_smile: