Skip to content
Snippets Groups Projects
Commit 8122d07a authored by Eric Kooistra's avatar Eric Kooistra
Browse files

Support g_total_nof_packets_w <= 64 for g_blk_cnt_w of total nof packets in dp_block_validate_err.

parent 8a9c05f3
No related branches found
No related tags found
1 merge request!282Increase total_block_count in dp_block_validate_err from 32b to 64b MM field.
Pipeline #36646 passed
......@@ -407,6 +407,12 @@ ARCHITECTURE str OF sdp_station IS
CONSTANT c_lane_payload_nof_longwords_max : NATURAL := largest(c_lane_payload_nof_longwords_xst, c_lane_payload_nof_longwords_bf);
CONSTANT c_lane_packet_nof_longwords_max : NATURAL := c_lane_payload_nof_longwords_max + c_ring_dp_hdr_field_size; -- = 549 + 3 = 552
-- Use large enough c_lane_total_nof_packets_w, so that lane total nof packets count will not overflow:
-- . For low band XST crosslets on ring : L_packet = (P_sq - 1) * f_sub = 8 * 195312.5 = 1.5625 M packets/s,
-- so 2**48 / (1.5625e6 * 3600 * 24 *365.25) = 5.7 years.
-- . Use same value for BF beamlets on ring.
CONSTANT c_lane_total_nof_packets_w : NATURAL := 48; -- <= c_longword_w = 64
CONSTANT c_err_bi : NATURAL := 0;
CONSTANT c_nof_err_counts : NATURAL := 8;
CONSTANT c_bsn_at_sync_check_channel : NATURAL := 1;
......@@ -1172,6 +1178,7 @@ BEGIN
g_lane_direction => 1, -- transport in positive direction.
g_lane_data_w => c_longword_w,
g_lane_packet_length => c_lane_payload_nof_longwords_xst,
g_lane_total_nof_packets_w => c_lane_total_nof_packets_w,
g_use_dp_layer => TRUE,
g_nof_rx_monitors => c_sdp_N_pn_max,
g_nof_tx_monitors => c_sdp_N_pn_max,
......@@ -1223,6 +1230,7 @@ BEGIN
g_lane_direction => 1, -- transport in positive direction.
g_lane_data_w => c_longword_w,
g_lane_packet_length => c_lane_payload_nof_longwords_bf,
g_lane_total_nof_packets_w => c_lane_total_nof_packets_w,
g_use_dp_layer => TRUE,
g_nof_rx_monitors => 1,
g_nof_tx_monitors => 1,
......
......@@ -45,6 +45,7 @@ ENTITY ring_lane IS
g_lane_direction : NATURAL := 1;
g_lane_data_w : NATURAL := 64;
g_lane_packet_length : NATURAL := 1024;
g_lane_total_nof_packets_w : NATURAL := c_longword_w; -- <= c_longword_w = 64
g_use_dp_layer : BOOLEAN := TRUE;
g_nof_rx_monitors : NATURAL := 0;
g_nof_tx_monitors : NATURAL := 1;
......@@ -114,15 +115,16 @@ BEGIN
u_ring_rx : ENTITY work.ring_rx
GENERIC MAP (
g_use_dp_layer => g_use_dp_layer,
g_lane_direction => g_lane_direction,
g_data_w => g_lane_data_w,
g_nof_rx_monitors => g_nof_rx_monitors,
g_err_bi => g_err_bi,
g_block_size => g_lane_packet_length,
g_nof_err_counts => g_nof_err_counts,
g_check_channel => g_bsn_at_sync_check_channel,
g_sync_timeout => g_sync_timeout
g_use_dp_layer => g_use_dp_layer,
g_lane_direction => g_lane_direction,
g_total_nof_packets_w => g_lane_total_nof_packets_w,
g_data_w => g_lane_data_w,
g_nof_rx_monitors => g_nof_rx_monitors,
g_err_bi => g_err_bi,
g_block_size => g_lane_packet_length,
g_nof_err_counts => g_nof_err_counts,
g_check_channel => g_bsn_at_sync_check_channel,
g_sync_timeout => g_sync_timeout
)
PORT MAP (
mm_rst => mm_rst,
......
......@@ -37,15 +37,16 @@ USE work.ring_pkg.ALL;
ENTITY ring_rx IS
GENERIC (
g_use_dp_layer : BOOLEAN := TRUE;
g_lane_direction : NATURAL := 1;
g_data_w : NATURAL := 64;
g_nof_rx_monitors : NATURAL := 1;
g_err_bi : NATURAL := 0;
g_block_size : NATURAL := 1024;
g_nof_err_counts : NATURAL := 1;
g_check_channel : NATURAL := 1;
g_sync_timeout : NATURAL := 220*10**6 -- 10% margin
g_use_dp_layer : BOOLEAN := TRUE;
g_lane_direction : NATURAL := 1;
g_total_nof_packets_w : NATURAL := 48; -- <= c_longword_w = 64
g_data_w : NATURAL := 64;
g_nof_rx_monitors : NATURAL := 1;
g_err_bi : NATURAL := 0;
g_block_size : NATURAL := 1024;
g_nof_err_counts : NATURAL := 1;
g_check_channel : NATURAL := 1;
g_sync_timeout : NATURAL := 220*10**6 -- 10% margin
);
PORT (
-- Clocks and reset
......@@ -116,6 +117,8 @@ BEGIN
-- Validate error field
u_dp_block_validate_err : ENTITY dp_lib.dp_block_validate_err
GENERIC MAP (
g_cnt_w => c_word_w, -- <= c_word_w = 32
g_blk_cnt_w => g_total_nof_packets_w, -- <= c_longword_w = 64
g_max_block_size => c_packet_size,
g_min_block_size => c_packet_size,
g_nof_err_counts => g_nof_err_counts,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment