Files
Jungfraujoch/fpga/hls/add_multipixel_tb.cpp

67 lines
1.8 KiB
C++

// Copyright (2019-2023) Paul Scherrer Institute
#include "hls_jfjoch.h"
#include "../../common/RawToConvertedGeometryCore.h"
int main() {
int ret = 0;
STREAM_512 input;
STREAM_512 output;
std::vector<int16_t> input_frame(RAW_MODULE_SIZE), input_frame_transformed(CONVERTED_MODULE_SIZE),
output_frame(257 * 64 * 32);
for (int i = 0; i < RAW_MODULE_SIZE; i++)
input_frame[i] = i % INT16_MAX;
TransferModuleAdjustMultipixels<int16_t, int16_t>(input_frame_transformed.data(), input_frame.data(),
CONVERTED_MODULE_COLS, INT16_MIN, INT16_MAX);
auto input_frame_512 = (ap_uint<512>*) input_frame.data();
auto output_frame_512 = (ap_uint<512>*) output_frame.data();
ap_uint<512> action_control = 0;
ACT_REG_MODE(action_control) = MODE_ADD_MULTIPIXEL;
input << packet_512_t { .data = action_control, .user = 0 };
for (int i = 0; i < RAW_MODULE_SIZE * sizeof(uint16_t) / 64; i++)
input << packet_512_t { .data = input_frame_512[i], .user = 0 };
input << packet_512_t { .user = 1 };
add_multipixel(input, output);
if (input.size() != 0)
ret = 1;
if (output.size() != (257 * 64) + 2)
ret = 1;
output.read();
for (int i = 0; i < 257 * 64 ; i++)
output_frame_512[i] = output.read().data;
output.read();
size_t diff = 0;
for (int line = 0; line < 512; line++) {
for (int col = 0; col < 1027; col++) {
if (output_frame[line * 1028 + col] != input_frame_transformed[(line + 1) * 1030 + (col+1)])
diff++;
}
}
if (diff > 0) {
ret = 1;
std::cout << diff << std::endl;
}
if (ret != 0) {
printf("Test failed !!!\n");
ret = 1;
} else {
printf("Test passed !\n");
}
return ret;
}