diff --git a/libraries/base/dp/src/vhdl/dp_block_validate_err.vhd b/libraries/base/dp/src/vhdl/dp_block_validate_err.vhd index 8ec87e33d5e660fcffebb90920322adf73704d99..f661fdbf53d60631f26d0328690dd4269fcf177e 100644 --- a/libraries/base/dp/src/vhdl/dp_block_validate_err.vhd +++ b/libraries/base/dp/src/vhdl/dp_block_validate_err.vhd @@ -39,6 +39,10 @@ -- a gap between blocks the dp_fifo_fill_eop needs 1 cycle to process a block. -- Streaming without gaps may cause the fifo to overflow. Bursts of blocks -- can be handled by increasing g_fifo_size. +-- . g_max/min_block_size indicate the minimum / maximum length of incoming blocks. +-- The ratio of max / min is used to determine a fifo size for the outgoing +-- sosi.valid signals. To minimize logic the g_min_block_size can be set to +-- the expected minimum block size. ------------------------------------------------------------------------------- -- REGMAP ------------------------------------------------------------------------------- diff --git a/libraries/base/ring/src/vhdl/ring_rx.vhd b/libraries/base/ring/src/vhdl/ring_rx.vhd index 58a4fd3bbc6d023e79d9aec43acfa46879316f6d..969f00100f0444e5f6ba503ea0f8ce8906203c06 100644 --- a/libraries/base/ring/src/vhdl/ring_rx.vhd +++ b/libraries/base/ring/src/vhdl/ring_rx.vhd @@ -152,39 +152,37 @@ BEGIN hdr_fields_out_arr(0) => hdr_fields_out ); - p_set_meta: PROCESS(offload_rx_sosi, hdr_fields_out) - BEGIN - decoded_sosi <= offload_rx_sosi; - IF c_use_dp_layer THEN + -- Use dp layer + gen_dp_layer : IF c_use_dp_layer GENERATE + p_set_meta: PROCESS(offload_rx_sosi, hdr_fields_out) + BEGIN + decoded_sosi <= offload_rx_sosi; decoded_sosi.sync <= hdr_fields_out(field_hi(c_hdr_field_arr, "dp_sync" ) DOWNTO field_lo(c_hdr_field_arr, "dp_sync" ))(0); decoded_sosi.channel <= RESIZE_DP_CHANNEL(hdr_fields_out(field_hi(c_hdr_field_arr, "dp_channel" ) DOWNTO field_lo(c_hdr_field_arr, "dp_channel" ))); decoded_sosi.bsn <= RESIZE_DP_BSN( hdr_fields_out(field_hi(c_hdr_field_arr, "dp_bsn" ) DOWNTO field_lo(c_hdr_field_arr, "dp_bsn" ))); - END IF; - END PROCESS; - - -- Validate bsn at sync - u_dp_block_validate_bsn_at_sync : ENTITY dp_lib.dp_block_validate_bsn_at_sync - GENERIC MAP ( - g_check_channel => g_check_channel - ) - PORT MAP ( - dp_rst => dp_rst, - dp_clk => dp_clk, + END PROCESS; - in_sosi => decoded_sosi, - bs_sosi => bs_sosi, - out_sosi => from_lane_sosi, + -- Validate bsn at sync + u_dp_block_validate_bsn_at_sync : ENTITY dp_lib.dp_block_validate_bsn_at_sync + GENERIC MAP ( + g_check_channel => g_check_channel + ) + PORT MAP ( + dp_rst => dp_rst, + dp_clk => dp_clk, - mm_rst => mm_rst, - mm_clk => mm_clk, + in_sosi => decoded_sosi, + bs_sosi => bs_sosi, + out_sosi => from_lane_sosi, - reg_mosi => reg_dp_block_validate_bsn_at_sync_copi, - reg_miso => reg_dp_block_validate_bsn_at_sync_cipo - ); + mm_rst => mm_rst, + mm_clk => mm_clk, + reg_mosi => reg_dp_block_validate_bsn_at_sync_copi, + reg_miso => reg_dp_block_validate_bsn_at_sync_cipo + ); -- BSN Monitors - gen_bsn_monitors : IF c_use_dp_layer GENERATE -- Convert nof_hops to source RN p_hop_to_src_rn: PROCESS(validated_sosi, this_rn, N_rn) BEGIN @@ -222,4 +220,9 @@ BEGIN END GENERATE; + -- Do not use dp layer + gen_no_dp_layer : IF NOT c_use_dp_layer GENERATE + from_lane_sosi <= offload_rx_sosi; + END GENERATE; + END str;