Hi guys! I am new for PYNQ and design my own IP via Vitis HLS. My board is ZCU104 and according PYNQ version.
But all my IPs using AXIS interface for output would hang on, typically stuck at dma.recvchannel.wait() forever. For this simple official example:
#include “ap_axi_sdata.h”
#include “hls_stream.h”
#define DWIDTH 32
#define type ap_int
typedef hls::axis<type, 0, 0, 0> pkt;
void example(hls::stream &A,
hls::stream &B)
{
#pragma HLS INTERFACE axis port=A
#pragma HLS INTERFACE axis port=B
pkt tmp;
pkt t1;
A.read(tmp);
t1.data = tmp.data + 5;
B.write(t1);
}
Part of host python code and error report show below:
I was suspecting that is because TLAST was not set correctly. So I revised the above C++ code:
#include “ap_axi_sdata.h”
#include “hls_stream.h”
#define DWIDTH 32
#define type ap_int
typedef hls::axis<type, 0, 0, 0> pkt;
void example(hls::stream &A,
hls::stream &B)
{
#pragma HLS INTERFACE axis port=A
#pragma HLS INTERFACE axis port=B
#pragma HLS INTERFACE mode=s_axilite port=return
pkt tmp;
pkt t1;
A.read(tmp);
t1.data = tmp.data + 5;
t1.last = 1;
B.write(t1);
}
And also I tried that pass the TLAST from input signal to outputs. But the error still happens. BTW the DMA IP is set as the tutorial with max Width of Buffer Length Register(26).
I’ve been struggling for this a few days. Any suggestions would be appreciated.