-- TX: Corresponding storage of c_udp_offload_hdr_field_arr in MM register words
-- . Note: It appears that the tx_hdr_word read values are the MM write values, so read of value from logic fields (with MM override '0', e.g. dp_bsn, eth_src_mac) is not supported.
CONSTANTc_expected_tx_hdr_word_arr:t_slv_32_arr(0TOc_udp_offload_nof_hdr_words-1):=(-- word address
CONSTANTc_expected_tx_hdr_word_arr_default:t_slv_32_arr(0TOc_udp_offload_nof_hdr_words_default-1):=(-- word address
X"00000000",-- 0 = dp_bsn[31:0] -- readback is MM value, not the logic value
X"00000000",-- 1 = dp_bsn[63:32]
X"00000000",-- 1 = dp_bsn[c_bsn_w-1:32]
X"00000000",-- 2 = dp_sync
X"03040506",-- 3 = dp_reserved[31:0]
X"00000102",-- 4 = dp_reserved[47:32]
...
...
@@ -155,10 +189,37 @@ ARCHITECTURE tb OF tb_dp_offload_tx_v3 IS
X"214368AC",-- 24 = eth_dst_mac[31:0]
X"0000001B");-- 25 = eth_dst_mac[47:32]
CONSTANTc_expected_tx_hdr_word_arr_shortened:t_slv_32_arr(0TOc_udp_offload_nof_hdr_words_shortened-1):=(-- word address
X"00000000",-- 0 = dp_bsn[31:0] -- readback is MM value, not the logic value
X"00000000",-- 1 = dp_sync
X"03040506",-- 2 = dp_reserved[31:0]
X"00000102",-- 3 = dp_reserved[47:32]
X"00000000",-- 4 = udp_checksum
X"00000596",-- 5 = udp_total_length
X"00000000",-- 6 = udp_dst_port
X"00000000",-- 7 = udp_src_port -- readback is MM value, not the logic value
X"C0A80001",-- 8 = ip_dst_addr
X"C0A80009",-- 9 = ip_src_addr
X"000074E8",-- 10 = ip_header_checksum
X"00000011",-- 11 = ip_protocol
X"0000007F",-- 12 = ip_time_to_live
X"00000000",-- 13 = ip_fragment_offset
X"00000002",-- 14 = ip_flags
X"00000000",-- 15 = ip_identification
X"000005AA",-- 16 = ip_total_length
X"00000000",-- 17 = ip_services
X"00000005",-- 18 = ip_header_length
X"00000004",-- 19 = ip_version
X"00000800",-- 20 = eth_type[15:0]
X"456789AB",-- 21 = eth_src_mac[31:0] -- readback is MM value, not the logic value
X"00000123",-- 22 = eth_src_mac[47:32]
X"214368AC",-- 23 = eth_dst_mac[31:0]
X"0000001B");-- 24 = eth_dst_mac[47:32]
-- RX: Corresponding storage of c_udp_offload_hdr_field_arr in MM register words
CONSTANTc_expected_rx_hdr_word_arr:t_slv_32_arr(0TOc_udp_offload_nof_hdr_words-1):=(-- word address
CONSTANTc_expected_rx_hdr_word_arr_default:t_slv_32_arr(0TOc_udp_offload_nof_hdr_words_default-1):=(-- word address
X"00000002",-- 0 = dp_bsn[31:0] -- dynamic value obtained from simulation
X"00000000",-- 1 = dp_bsn[63:32]
X"00000000",-- 1 = dp_bsn[c_bsn_w-1:32]
X"00000001",-- 2 = dp_sync -- dynamic value obtained from simulation
X"03040506",-- 3 = dp_reserved[31:0]
X"00000102",-- 4 = dp_reserved[47:32]
...
...
@@ -184,6 +245,33 @@ ARCHITECTURE tb OF tb_dp_offload_tx_v3 IS
X"214368AC",-- 24 = eth_dst_mac[31:0]
X"0000001B");-- 25 = eth_dst_mac[47:32]
CONSTANTc_expected_rx_hdr_word_arr_shortened:t_slv_32_arr(0TOc_udp_offload_nof_hdr_words_shortened-1):=(-- word address
X"00000002",-- 0 = dp_bsn[31:0] -- dynamic value obtained from simulation
X"00000001",-- 1 = dp_sync -- dynamic value obtained from simulation
X"03040506",-- 2 = dp_reserved[31:0]
X"00000102",-- 3 = dp_reserved[47:32]
X"00000000",-- 4 = udp_checksum
X"00000596",-- 5 = udp_total_length
X"00000000",-- 6 = udp_dst_port
X"00000000",-- 7 = udp_src_port
X"C0A80001",-- 8 = ip_dst_addr
X"C0A80009",-- 9 = ip_src_addr
X"000074E8",-- 10 = ip_header_checksum
X"00000011",-- 11 = ip_protocol
X"0000007F",-- 12 = ip_time_to_live
X"00000000",-- 13 = ip_fragment_offset
X"00000002",-- 14 = ip_flags
X"00000000",-- 15 = ip_identification
X"000005AA",-- 16 = ip_total_length
X"00000000",-- 17 = ip_services
X"00000005",-- 18 = ip_header_length
X"00000004",-- 19 = ip_version
X"00000800",-- 20 = eth_type[15:0]
X"86080000",-- 21 = eth_src_mac[31:0] -- readback is the logic value x"00228608" & id_backplane = 0 & id_chip = 0 (c_NODE_ID = 0)
X"00000022",-- 22 = eth_src_mac[47:32]
X"214368AC",-- 23 = eth_dst_mac[31:0]
X"0000001B");-- 24 = eth_dst_mac[47:32]
-- From apertif_unb1_fn_beamformer_udp_offload.vhd: 221 111111111000 0000 000
-- Override ('1') only the Ethernet fields so we can use MM defaults there. 109 876543210987 6543 210