After transferring tcl and bitstream to pynq how to use it

I have transferred the pynq lstm tcl and bit files to the pynq repo via network.
Then i loaded the bit file by the following lines:
from pynq import Overlay
overlay=Overlay(‘path to bit file/top_lstm.bit’)

Then if i run the inference its not able to find the .so files in the library of the pynq repo.
Even if i copy the .so files to the jupyter notebook , it doesnt get copied.

How to run the inference after transferring the overlay to the pynq folder of the board.
there must be some way of using this overlay to get the inference. Please help

It would be helpful if you could describe in detail what you did, and post full error messages.


I am using a zedboard. The pynq/lstm repo is supported for pynq-z1 and z2.
I have rebuilt the pynq lstm hardware design which created the ip for me along with the bit-stream and the tcl file.
I transferred the tcl file and bitstream to the pynq directory in my board via network on ubuntu 16.04
i also copied the pynq lstm directory to the jupyternotebooks folder of the board again via the network.
The repo on github is having several folders like the lstm, notebooks.
I created this ipynb file inside the notebooks folder on jupyter.

Then i have written the code shown in the pic with the error messages.
Please guide as to how should i perform my inference

Inspite of copying the full repo to the jupyter notebook, the .so files present in the library are not getting copied, which might cause the error.

Any idea what the error might be?

Looks like you are missing the .so files mentioned in the error message. Do they exist in the locations specified in the error message?

I think the problem is you have just copied the whole repository or directory over. When you use the overlay, it is usually installed using pip (pip3 command) which installs the shared libraries to the board.

Have you tried install it first, and then copying the new bit/tcl to the board?

If i try to install the repo to the board , it fails since the mentions that the board must be either a pynq z1 or pynq z2. can i install the .so files seperately?
i tried removing that line from the where it checks if the board is a pynq z1 ,z2 or not , but still it gives errors like no pynq module found .

I tried installing the repo to the board by removing the lines from which says stop the installation for any other boards other than pynq z1 or z2. still the same error results.
cant find the .so files.
error is : OSError: cannot load library ‘/usr/local/lib/python3.6/dist-packages/lstm/libraries/plain/W2A4/’: cannot open shared object file: No such file or directory. Additionally, ctypes.util.find_library() did not manage to locate a library called '/usr/local/lib/python3.6/dist-packages/lstm/libraries/plain/W2A4/’

I dont find any python 3.6 on my computer. where should this directory exactly be ?

Ok there is a problem with pynq v2.4 probably which goes away if we create a symbolic link from with the both in usr/lib

That solves the error.

i try to implement the LSTM to an ULTRA96 Board.

my steps where:

  1. Rewrite all Sythesis scripts and tcl to Ultra96

  2. copied the *.so file, the tcl, and the bitstream file to the board

  3. now i get the same error:

    OSError: cannot load library ‘/usr/local/lib/python3.6/dist-packages/lstm/libraries/plain/W2A2/’: /usr/local/lib/python3.6/dist-packages/lstm/libraries/plain/W2A2/ cannot open shared object file: No such file or directory. Additionally, ctypes.util.find_library() did not manage to locate a library called ‘/usr/local/lib/python3.6/dist-packages/lstm/libraries/plain/W2A2/’

do you know what do to?
or what do you mean to creat a symbolic link?

There are several tips. You can have a look at the example repo here:

First thing is you need to compile pynqlib along with your source code when generating .so file:

Second thing is you need to set library path:

You can also have a look at the example notebooks in boards folder.

i am a beginner with FPGA do you may have me some more tips?

may important for you:
i changed some .tcl and the make-hw script to execute everything on the ultra96:

and now i get the error:

I think the error comes from the incompatibility of the so files. You cannot simply take their so files since they are probably built against pynq-z1 or pynq-z2 boards. For ultra96 you need to rebuild those so files (ultra96 is aarch64, as opposed to armv7l on pynq-z1/z2).