// Copyright (2019-2023) Paul Scherrer Institute #include "hls_jfjoch.h" void mask_missing(STREAM_512 &data_in, STREAM_512 &data_out, hls::stream &s_axis_completion, hls::stream &m_axis_completion) { #pragma HLS INTERFACE ap_ctrl_none port=return #pragma HLS INTERFACE register both axis port=data_in #pragma HLS INTERFACE register both axis port=data_out #pragma HLS INTERFACE register both axis port=m_axis_completion #pragma HLS INTERFACE register both axis port=s_axis_completion packet_512_t packet; data_in >> packet; data_out << packet; axis_completion cmpl; s_axis_completion >> cmpl; while (!cmpl.last) { m_axis_completion << cmpl; for (int i = 0; i < RAW_MODULE_SIZE * sizeof(uint16_t) / 64; i++) { #pragma HLS PIPELINE II=1 data_in >> packet; if (!cmpl.packet_mask[i / 128]) { for (int j = 0; j < 512; j++) packet.data[j] = 1; } data_out << packet; } s_axis_completion >> cmpl; } m_axis_completion << cmpl; data_in >> packet; data_out << packet; }