PYNQ vs Custom board, AXI GPIO and AXI IIC

We have been using PYNQ for a while and it works as expected. Recently we built a custom board around one of Trenz’s SoM using Zynq 7000.

Using a simple BD with a PS7 + reset + interconnect + AXI GPIO + AXI IIC, we cannot get the GPIO to change direction using .setdirection(). However, we can manually set it using MMIO and writing to the register directly.

IIC send() and receive() also fail.

/usr/local/lib/python3.6/dist-packages/pynq/lib/iic.py in receive(self, address, data, length, option)
    124             self._virtaddr, address, data, length, option)
    125         if received == 0:
--> 126             raise RuntimeError("Could not receive I2C data")
    127         return received
    128 

RuntimeError: Could not receive I2C data

We are running using PYNQ 2.4

I am wondering if there is a problem with the PS configuration, because it is unlikely that 2 Python drivers fail at the same time. Since you are using a customized board, maybe you want to check if the AXI port width is set properly / consistent across boot files and overlay BD. It would be easier to paste TCL or block diagrams so we can look into it.

where does one set AXI port width across boot files? which tcl you want to the look at? the one used for sdbuild or the overlay one?

Hi, I mean the tcl files for (1) fsbl / bsp generation and (2) overlay block design. Can you clarify that: you have the old design works on a board like Z1, then you ported the same design to the new board, it does not work; is this correct?