Hello.
I just try the blog axi4, which use axi burst to transfer data for “sqrt” operation.
This blog use Vivado HLS, rather than Vitis HLS as the axilit case they give in axilite.
I just try to redo this axi brust project by Vitis HLS (2021.2). I can export IP and use thin in Vivado (same 2021.2 version as HLS) but there would be one more port in Vivado compared to project in the blog axi4.
-
I find one place different between Vitis HLS (I do) and Vivado HLS (in blog) in the step of automatic connection:
-
After synthesis and generate bitstream. I find the hardware IP is different as the previous Vivado HLS one in blog axi4 on Pynq:
-
I use the Python code (change the IP name by select the second “s_axi_sqrt”), the hardware IP will generate ‘0.0’, which is not same as the software result:
I guess it comes from the added port in Vitis HLS (2021.2) compared to the Vivado version.
Assume the HW development is right, I guess the Python code need to be rewritten.
This issue has bothered me a long time, I want to ask help for it. Thanks.
At last, let me thanks for the authors in website: Parallel Programming for FPGAs: Projects and Labs — pp4fpgas 0.0.1 documentation
They provide many detailed tutorial and help me a lot. : )
By the way, May I ask how can I improve my understanding on Pynq and use it well. I want to know how it is, rather than repeat and modify the tutorial.
If someone know where I can find the explanation on why we do it, it would be pretty valuable to me. Thanks in advance.
I upload the project I do (the source files, should come from axi blog axi4):
info{
script.tcl for HLS
design_1.tcl for Vivado (I follow the blog as well.)
Vivado HLS 2021.2, Vivado 2021.2.
OS; Win 10.
}
axi4_burst_self.zip (4.5 KB)
I added two lines in the text provide in axi4 but not in the provided zip file\ axi4_burst.zip :
#pragma HLS INTERFACE s_axilite port=in
#pragma HLS INTERFACE s_axilite port=out
and rerun the project in Vitis HLS and use the IP in the instruction of axi4. Unfortunately, the hardware interface still cannot work.
I zip all files of the project of HLS (axi4_sqrt), and Vivado (project_1) onto Google Drive axi_burst_all.zip.
The third time edition:
Now I found why it cannot work: The 2021.2 (Vivado, HLS) will generate two channels and is not same as the address as 2019.1 (Vivado, HLS):
2019.1:
2021.2:
It means the IP address for 2019.1 should not be used for 2021.2.
Now the problem become how to use these address for data transfer?:
AXI Burst is fundamental function on Pynq, hope this blog can benefits more people with same confusion as me.