Hello
I created a custom overlay with 2 different IPs and generated the bitstream with no problem. when I run the first IP, get the correct results. However, When I run my second IP the results are 0s (knowing that I testbench the HLS IP successfully). please check the block design below
And when I check the list of IPs in the overlay I get the following:
from pynq import allocate, Overlay
import numpy as np
ol = Overlay('ns_accel.bit')
for i in ol.ip_dict:
print(I)
# dual_gap_0
# ns_kernel_0
# zynq_ultra_ps_e_0
ns_ip = ol.ns_kernel_0
M = 144
N = 32400
At_buffer = allocate(shape=(N,M), dtype=np.float64)
Z_buffer = allocate(shape=(M), dtype=np.float64)
X_buffer = allocate(shape=(N), dtype=np.float64)
diagxtx_buffer = allocate(shape=(N), dtype=np.float64)
Pin_b = allocate(shape=(6), dtype=np.float64)
G_buffer = allocate(shape=(N), dtype=np.float64)
PRB_buffer = allocate(shape=(N), dtype=np.float64)
D1_buffer = allocate(shape=(N), dtype=np.float64)
Pout_b = allocate(shape=(2), dtype=np.float64)
def run_ns():
ns_ip.write(0x10, At_buffer.physical_address)
ns_ip.write(0x18, Z_buffer.physical_address)
ns_ip.write(0x20, X_buffer.physical_address)
ns_ip.write(0x28, diagxtx_buffer.physical_address)
ns_ip.write(0x30, Pin_b.physical_address)
ns_ip.write(0x38, G_buffer.physical_address)
ns_ip.write(0x40, D1_buffer.physical_address)
ns_ip.write(0x48, PRB_buffer.physical_address)
ns_ip.write(0x50, Pout_b.physical_address)
ns_ip.write(0x00, 1)
A = np.arange(0.0,M*N,1, dtype=np.float64).reshape(N,M)
Z = np.ones(M,dtype=np.float64)*2
X = np.ones(N,dtype=np.float64)*3
dgxtx = np.ones(N,dtype=np.float64)*0.2
s = 1
t = 0.2
MU = 4
lmbda = 1.4
eta = 0.5
gap = 2.6
Pi = np.array([s, t, MU, lmbda, eta, gap],dtype=np.float64)
At_buffer[:] = A
Z_buffer[:] = Z
X_buffer[:] = X
diagxtx_buffer[:] = dgxtx
Pin_b[:] = Pi
run_ns()
for i in range(N):
print(D1_buffer[I])
# 0.0
# 0.0
# 0.0
# 0.0 ....
What could be the problem?