Skip to content

Commit 56ef2c2

Browse files
committed
remove the additional pipline
1 parent f1fa089 commit 56ef2c2

File tree

2 files changed

+31
-41
lines changed

2 files changed

+31
-41
lines changed

src/test/csrc/fpga/xdma.h

Lines changed: 27 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -17,26 +17,21 @@
1717
#define __XDMA_H__
1818

1919
#include "common.h"
20-
#include "diffstate.h"
2120
#include "mpool.h"
2221
#include <atomic>
2322
#include <queue>
24-
#include <signal.h>
2523
#include <stdbool.h>
2624
#include <stdio.h>
2725
#include <stdlib.h>
2826
#include <sys/shm.h>
2927
#include <thread>
30-
#include <unistd.h>
3128
#include <vector>
3229
#ifdef FPGA_SIM
3330
#include "xdma_sim.h"
3431
#endif // FPGA_SIM
3532

36-
#define HOST_IO_RESET 0x0
37-
#define HOST_IO_DIFFTEST_ENABLE 0x4
38-
3933
#define DMA_PACKGE_NUM 8
34+
4035
// DMA_PADDING (packge_idx(1) + difftest_data) send width to be calculated by mod up
4136
#define DMA_PACKGE_LEN (CONFIG_DIFFTEST_BATCH_BYTELEN + 1)
4237
#define DMA_PACKGE_ALIGNED ((DMA_PACKGE_LEN + 63) / 64 * 64)
@@ -58,55 +53,36 @@ class FpgaXdma {
5853
public:
5954
FpgaXdma();
6055

61-
void start(bool enable_diff) {
56+
void start() {
6257
running = true;
63-
if (enable_diff == false) {
64-
static volatile sig_atomic_t signal_received = 0;
65-
66-
auto handler = [](int sig) {
67-
signal_received = sig;
68-
printf("\nReceived signal %d, terminating...\n", sig);
69-
exit(0);
70-
};
71-
72-
signal(SIGINT, handler);
73-
signal(SIGTERM, handler);
74-
75-
while (signal_received == 0) {
76-
usleep(10000);
77-
}
78-
} else {
7958
#ifdef USE_THREAD_MEMPOOL
80-
std::unique_lock<std::mutex> lock(thread_mtx);
81-
start_transmit_thread();
82-
while (running) {
83-
thread_cv.wait(lock); // wait notify from stop
84-
}
85-
stop_thansmit_thread();
59+
std::unique_lock<std::mutex> lock(thread_mtx);
60+
start_transmit_thread();
61+
while (running) {
62+
thread_cv.wait(lock); // wait notify from stop
63+
}
64+
stop_thansmit_thread();
8665
#else
87-
read_and_process();
66+
read_and_process();
8867
#endif // USE_THREAD_MEMPOOL
89-
}
9068
}
91-
9269
void stop() {
9370
running = false;
9471
#ifdef USE_THREAD_MEMPOOL
9572
thread_cv.notify_one();
9673
#endif // USE_THREAD_MEMPOOL
9774
}
75+
void ddr_load_workload(const char *workload) {
76+
core_reset();
77+
device_write(true, workload, 0, 0);
78+
core_restart();
79+
}
9880

99-
void fpga_io(uint64_t address, bool enable) {
81+
void fpga_reset_io(bool enable) {
10082
if (enable)
101-
device_write(false, nullptr, address, 0x1);
83+
device_write(false, nullptr, 0x0, 0x1);
10284
else
103-
device_write(false, nullptr, address, 0x0);
104-
}
105-
106-
void ddr_load_workload(const char *workload) {
107-
fpga_io(HOST_IO_RESET, true);
108-
device_write(true, workload, 0, 0);
109-
fpga_io(HOST_IO_RESET, false);
85+
device_write(false, nullptr, 0x0, 0x0);
11086
}
11187

11288
private:
@@ -117,6 +93,16 @@ class FpgaXdma {
11793
#endif
11894

11995
void device_write(bool is_bypass, const char *workload, uint64_t addr, uint64_t value);
96+
void core_reset() {
97+
device_write(false, nullptr, 0x20000, 0x1);
98+
device_write(false, nullptr, 0x100000, 0x1);
99+
device_write(false, nullptr, 0x10000, 0x8);
100+
}
101+
102+
void core_restart() {
103+
device_write(false, nullptr, 0x20000, 0);
104+
device_write(false, nullptr, 0x100000, 0);
105+
}
120106

121107
#ifdef USE_THREAD_MEMPOOL
122108
std::mutex thread_mtx;

src/test/csrc/fpga_sim/xdma_sim.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,10 @@ int xdma_sim_write(int channel, const char *buf, uint8_t tlast, size_t size) {
136136
return xsim[channel]->write(buf, tlast, size);
137137
}
138138

139+
extern "C" unsigned char v_xdma_tready() {
140+
return 1;
141+
}
142+
139143
extern "C" void v_xdma_write(uint8_t channel, const char *axi_tdata, uint8_t axi_tlast) {
140144
xdma_sim_write(channel, axi_tdata, axi_tlast, 64);
141145
}

0 commit comments

Comments
 (0)