When udp_checksum_gen_64 is outputing a long packet (on m_udp_payload_axis_t...) , and enough 1-word packets are entering into this module (on s_udp_payload_axis_t...) so it fills up the header memory, the last short packet is written into FIFO but it's header is never being written into the header_mem because it's full.
Header_fifo_full (and so header_fifo_ready) is updated one cycle too late.
When udp_checksum_gen_64 is outputing a long packet (on m_udp_payload_axis_t...) , and enough 1-word packets are entering into this module (on s_udp_payload_axis_t...) so it fills up the header memory, the last short packet is written into FIFO but it's header is never being written into the header_mem because it's full.
Header_fifo_full (and so header_fifo_ready) is updated one cycle too late.