From 06c17b28bc7e207a020d38ba617c700960a441f7 Mon Sep 17 00:00:00 2001 From: Eric Kooistra <kooistra@astron.nl> Date: Thu, 28 Sep 2023 11:30:55 +0200 Subject: [PATCH] Use g_nof_destinations_max <= c_sdp_bdo_mm_nof_destinations_max = 32 --- .../sdp/src/vhdl/sdp_bdo_destinations_reg.vhd | 147 +++++++++++++++--- 1 file changed, 127 insertions(+), 20 deletions(-) diff --git a/applications/lofar2/libraries/sdp/src/vhdl/sdp_bdo_destinations_reg.vhd b/applications/lofar2/libraries/sdp/src/vhdl/sdp_bdo_destinations_reg.vhd index 89a9aa97d1..8c5d010163 100644 --- a/applications/lofar2/libraries/sdp/src/vhdl/sdp_bdo_destinations_reg.vhd +++ b/applications/lofar2/libraries/sdp/src/vhdl/sdp_bdo_destinations_reg.vhd @@ -50,6 +50,9 @@ library IEEE, common_lib, mm_lib; use work.sdp_bdo_pkg.all; entity sdp_bdo_destinations_reg is + generic ( + g_nof_destinations_max : natural + ); port ( -- Clocks and reset mm_clk : in std_logic; @@ -67,11 +70,27 @@ end sdp_bdo_destinations_reg; architecture str of sdp_bdo_destinations_reg is constant c_field_arr : t_common_field_arr(c_sdp_bdo_destinations_info_nof_hdr_fields - 1 downto 0) := - ( (field_name_pad("nof_blocks_per_packet_act"), "RO", 8, field_default(c_sdp_cep_nof_blocks_per_packet)), - (field_name_pad("nof_destinations_max"), "RO", 8, field_default(1)), + ( (field_name_pad("nof_blocks_per_packet"), "RO", 8, field_default(c_sdp_cep_nof_blocks_per_packet)), + (field_name_pad("nof_destinations_max"), "RO", 8, field_default(g_nof_destinations_max)), (field_name_pad("nof_destinations_act"), "RO", 8, field_default(1)), (field_name_pad("nof_destinations"), "RW", 8, field_default(1)), + (field_name_pad("udp_destination_port_31"), "RW", 16, field_default(0)), + (field_name_pad("udp_destination_port_30"), "RW", 16, field_default(0)), + (field_name_pad("udp_destination_port_29"), "RW", 16, field_default(0)), + (field_name_pad("udp_destination_port_28"), "RW", 16, field_default(0)), + (field_name_pad("udp_destination_port_27"), "RW", 16, field_default(0)), + (field_name_pad("udp_destination_port_26"), "RW", 16, field_default(0)), + (field_name_pad("udp_destination_port_25"), "RW", 16, field_default(0)), + (field_name_pad("udp_destination_port_24"), "RW", 16, field_default(0)), + (field_name_pad("udp_destination_port_23"), "RW", 16, field_default(0)), + (field_name_pad("udp_destination_port_22"), "RW", 16, field_default(0)), + (field_name_pad("udp_destination_port_21"), "RW", 16, field_default(0)), + (field_name_pad("udp_destination_port_20"), "RW", 16, field_default(0)), + (field_name_pad("udp_destination_port_19"), "RW", 16, field_default(0)), + (field_name_pad("udp_destination_port_18"), "RW", 16, field_default(0)), + (field_name_pad("udp_destination_port_17"), "RW", 16, field_default(0)), + (field_name_pad("udp_destination_port_16"), "RW", 16, field_default(0)), (field_name_pad("udp_destination_port_15"), "RW", 16, field_default(0)), (field_name_pad("udp_destination_port_14"), "RW", 16, field_default(0)), (field_name_pad("udp_destination_port_13"), "RW", 16, field_default(0)), @@ -89,6 +108,22 @@ architecture str of sdp_bdo_destinations_reg is (field_name_pad("udp_destination_port_1"), "RW", 16, field_default(0)), (field_name_pad("udp_destination_port_0"), "RW", 16, field_default(0)), + (field_name_pad("ip_destination_address_31"), "RW", 32, field_default(0)), + (field_name_pad("ip_destination_address_30"), "RW", 32, field_default(0)), + (field_name_pad("ip_destination_address_29"), "RW", 32, field_default(0)), + (field_name_pad("ip_destination_address_28"), "RW", 32, field_default(0)), + (field_name_pad("ip_destination_address_27"), "RW", 32, field_default(0)), + (field_name_pad("ip_destination_address_26"), "RW", 32, field_default(0)), + (field_name_pad("ip_destination_address_25"), "RW", 32, field_default(0)), + (field_name_pad("ip_destination_address_24"), "RW", 32, field_default(0)), + (field_name_pad("ip_destination_address_23"), "RW", 32, field_default(0)), + (field_name_pad("ip_destination_address_22"), "RW", 32, field_default(0)), + (field_name_pad("ip_destination_address_21"), "RW", 32, field_default(0)), + (field_name_pad("ip_destination_address_20"), "RW", 32, field_default(0)), + (field_name_pad("ip_destination_address_19"), "RW", 32, field_default(0)), + (field_name_pad("ip_destination_address_18"), "RW", 32, field_default(0)), + (field_name_pad("ip_destination_address_17"), "RW", 32, field_default(0)), + (field_name_pad("ip_destination_address_16"), "RW", 32, field_default(0)), (field_name_pad("ip_destination_address_15"), "RW", 32, field_default(0)), (field_name_pad("ip_destination_address_14"), "RW", 32, field_default(0)), (field_name_pad("ip_destination_address_13"), "RW", 32, field_default(0)), @@ -106,6 +141,22 @@ architecture str of sdp_bdo_destinations_reg is (field_name_pad("ip_destination_address_1"), "RW", 32, field_default(0)), (field_name_pad("ip_destination_address_0"), "RW", 32, field_default(0)), + (field_name_pad("eth_destination_mac_31"), "RW", 48, field_default(0)), + (field_name_pad("eth_destination_mac_30"), "RW", 48, field_default(0)), + (field_name_pad("eth_destination_mac_29"), "RW", 48, field_default(0)), + (field_name_pad("eth_destination_mac_28"), "RW", 48, field_default(0)), + (field_name_pad("eth_destination_mac_27"), "RW", 48, field_default(0)), + (field_name_pad("eth_destination_mac_26"), "RW", 48, field_default(0)), + (field_name_pad("eth_destination_mac_25"), "RW", 48, field_default(0)), + (field_name_pad("eth_destination_mac_24"), "RW", 48, field_default(0)), + (field_name_pad("eth_destination_mac_23"), "RW", 48, field_default(0)), + (field_name_pad("eth_destination_mac_22"), "RW", 48, field_default(0)), + (field_name_pad("eth_destination_mac_21"), "RW", 48, field_default(0)), + (field_name_pad("eth_destination_mac_20"), "RW", 48, field_default(0)), + (field_name_pad("eth_destination_mac_19"), "RW", 48, field_default(0)), + (field_name_pad("eth_destination_mac_18"), "RW", 48, field_default(0)), + (field_name_pad("eth_destination_mac_17"), "RW", 48, field_default(0)), + (field_name_pad("eth_destination_mac_16"), "RW", 48, field_default(0)), (field_name_pad("eth_destination_mac_15"), "RW", 48, field_default(0)), (field_name_pad("eth_destination_mac_14"), "RW", 48, field_default(0)), (field_name_pad("eth_destination_mac_13"), "RW", 48, field_default(0)), @@ -126,25 +177,33 @@ architecture str of sdp_bdo_destinations_reg is signal mm_fields_in : std_logic_vector(field_slv_in_len(c_field_arr) - 1 downto 0); signal mm_fields_out : std_logic_vector(field_slv_out_len(c_field_arr) - 1 downto 0); - signal destinations_info_rd : t_sdp_bdo_destinations_info; - signal destinations_info_wr : t_sdp_bdo_destinations_info; + signal destinations_info_rd : t_sdp_bdo_destinations_info := c_sdp_bdo_destinations_info_rst; + signal destinations_info_wr : t_sdp_bdo_destinations_info := c_sdp_bdo_destinations_info_rst; - signal nof_destinations_act : natural := 1; - signal nof_blocks_per_packet_act : natural := c_sdp_cep_nof_blocks_per_packet; + signal nof_destinations_act : natural := 1; + signal nof_blocks_per_packet : natural := c_sdp_cep_nof_blocks_per_packet; begin destinations_info <= destinations_info_rd; p_destinations_info_rd : process(destinations_info_wr, nof_destinations_act, - nof_blocks_per_packet_act) + nof_blocks_per_packet) begin - -- default write assign all fields - destinations_info_rd <= destinations_info_wr; + -- read/write fields + for DI in 0 to g_nof_destinations_max - 1 loop + -- Default only read/write connect the available fields. Leave unused + -- write fields open and read fields at rst value, so they will be + -- optimized away by synthesis. + destinations_info_rd.eth_destination_mac_arr(DI) <= destinations_info_wr.eth_destination_mac_arr(DI); + destinations_info_rd.ip_destination_address_arr(DI) <= destinations_info_wr.ip_destination_address_arr(DI); + destinations_info_rd.udp_destination_port_arr(DI) <= destinations_info_wr.udp_destination_port_arr(DI); + end loop; + destinations_info_rd.nof_destinations <= destinations_info_wr.nof_destinations; - -- overrule the read only fields - destinations_info_rd.nof_destinations_act <= nof_destinations_act; - destinations_info_rd.nof_destinations_max <= c_sdp_bdo_nof_destinations_max; - destinations_info_rd.nof_blocks_per_packet_act <= nof_blocks_per_packet_act; + -- read only fields + destinations_info_rd.nof_destinations_act <= nof_destinations_act; + destinations_info_rd.nof_destinations_max <= g_nof_destinations_max; + destinations_info_rd.nof_blocks_per_packet <= nof_blocks_per_packet; end process; u_mm_fields: entity mm_lib.mm_fields @@ -169,9 +228,9 @@ begin ); -- add "RO" fields to mm_fields - mm_fields_in(field_hi(c_field_arr, "nof_destinations_act") downto field_lo(c_field_arr, "nof_destinations_act")) <= to_uvec(destinations_info_rd.nof_destinations_act, 8); - mm_fields_in(field_hi(c_field_arr, "nof_destinations_max") downto field_lo(c_field_arr, "nof_destinations_max")) <= to_uvec(destinations_info_rd.nof_destinations_max, 8); - mm_fields_in(field_hi(c_field_arr, "nof_blocks_per_packet_act") downto field_lo(c_field_arr, "nof_blocks_per_packet_act")) <= to_uvec(destinations_info_rd.nof_blocks_per_packet_act, 8); + mm_fields_in(field_hi(c_field_arr, "nof_destinations_act") downto field_lo(c_field_arr, "nof_destinations_act")) <= to_uvec(destinations_info_rd.nof_destinations_act, 8); + mm_fields_in(field_hi(c_field_arr, "nof_destinations_max") downto field_lo(c_field_arr, "nof_destinations_max")) <= to_uvec(destinations_info_rd.nof_destinations_max, 8); + mm_fields_in(field_hi(c_field_arr, "nof_blocks_per_packet") downto field_lo(c_field_arr, "nof_blocks_per_packet")) <= to_uvec(destinations_info_rd.nof_blocks_per_packet, 8); -- get "RW" fields from mm_fields destinations_info_wr.eth_destination_mac_arr(0) <= mm_fields_out(field_hi(c_field_arr, "eth_destination_mac_0") downto field_lo(c_field_arr, "eth_destination_mac_0")); @@ -190,6 +249,22 @@ begin destinations_info_wr.eth_destination_mac_arr(13) <= mm_fields_out(field_hi(c_field_arr, "eth_destination_mac_13") downto field_lo(c_field_arr, "eth_destination_mac_13")); destinations_info_wr.eth_destination_mac_arr(14) <= mm_fields_out(field_hi(c_field_arr, "eth_destination_mac_14") downto field_lo(c_field_arr, "eth_destination_mac_14")); destinations_info_wr.eth_destination_mac_arr(15) <= mm_fields_out(field_hi(c_field_arr, "eth_destination_mac_15") downto field_lo(c_field_arr, "eth_destination_mac_15")); + destinations_info_wr.eth_destination_mac_arr(16) <= mm_fields_out(field_hi(c_field_arr, "eth_destination_mac_16") downto field_lo(c_field_arr, "eth_destination_mac_16")); + destinations_info_wr.eth_destination_mac_arr(17) <= mm_fields_out(field_hi(c_field_arr, "eth_destination_mac_17") downto field_lo(c_field_arr, "eth_destination_mac_17")); + destinations_info_wr.eth_destination_mac_arr(18) <= mm_fields_out(field_hi(c_field_arr, "eth_destination_mac_18") downto field_lo(c_field_arr, "eth_destination_mac_18")); + destinations_info_wr.eth_destination_mac_arr(19) <= mm_fields_out(field_hi(c_field_arr, "eth_destination_mac_19") downto field_lo(c_field_arr, "eth_destination_mac_19")); + destinations_info_wr.eth_destination_mac_arr(20) <= mm_fields_out(field_hi(c_field_arr, "eth_destination_mac_20") downto field_lo(c_field_arr, "eth_destination_mac_20")); + destinations_info_wr.eth_destination_mac_arr(21) <= mm_fields_out(field_hi(c_field_arr, "eth_destination_mac_21") downto field_lo(c_field_arr, "eth_destination_mac_21")); + destinations_info_wr.eth_destination_mac_arr(22) <= mm_fields_out(field_hi(c_field_arr, "eth_destination_mac_22") downto field_lo(c_field_arr, "eth_destination_mac_22")); + destinations_info_wr.eth_destination_mac_arr(23) <= mm_fields_out(field_hi(c_field_arr, "eth_destination_mac_23") downto field_lo(c_field_arr, "eth_destination_mac_23")); + destinations_info_wr.eth_destination_mac_arr(24) <= mm_fields_out(field_hi(c_field_arr, "eth_destination_mac_24") downto field_lo(c_field_arr, "eth_destination_mac_24")); + destinations_info_wr.eth_destination_mac_arr(25) <= mm_fields_out(field_hi(c_field_arr, "eth_destination_mac_25") downto field_lo(c_field_arr, "eth_destination_mac_25")); + destinations_info_wr.eth_destination_mac_arr(26) <= mm_fields_out(field_hi(c_field_arr, "eth_destination_mac_26") downto field_lo(c_field_arr, "eth_destination_mac_26")); + destinations_info_wr.eth_destination_mac_arr(27) <= mm_fields_out(field_hi(c_field_arr, "eth_destination_mac_27") downto field_lo(c_field_arr, "eth_destination_mac_27")); + destinations_info_wr.eth_destination_mac_arr(28) <= mm_fields_out(field_hi(c_field_arr, "eth_destination_mac_28") downto field_lo(c_field_arr, "eth_destination_mac_28")); + destinations_info_wr.eth_destination_mac_arr(29) <= mm_fields_out(field_hi(c_field_arr, "eth_destination_mac_29") downto field_lo(c_field_arr, "eth_destination_mac_29")); + destinations_info_wr.eth_destination_mac_arr(30) <= mm_fields_out(field_hi(c_field_arr, "eth_destination_mac_30") downto field_lo(c_field_arr, "eth_destination_mac_30")); + destinations_info_wr.eth_destination_mac_arr(31) <= mm_fields_out(field_hi(c_field_arr, "eth_destination_mac_31") downto field_lo(c_field_arr, "eth_destination_mac_31")); destinations_info_wr.ip_destination_address_arr(0) <= mm_fields_out(field_hi(c_field_arr, "ip_destination_address_0") downto field_lo(c_field_arr, "ip_destination_address_0")); destinations_info_wr.ip_destination_address_arr(1) <= mm_fields_out(field_hi(c_field_arr, "ip_destination_address_1") downto field_lo(c_field_arr, "ip_destination_address_1")); @@ -207,6 +282,22 @@ begin destinations_info_wr.ip_destination_address_arr(13) <= mm_fields_out(field_hi(c_field_arr, "ip_destination_address_13") downto field_lo(c_field_arr, "ip_destination_address_13")); destinations_info_wr.ip_destination_address_arr(14) <= mm_fields_out(field_hi(c_field_arr, "ip_destination_address_14") downto field_lo(c_field_arr, "ip_destination_address_14")); destinations_info_wr.ip_destination_address_arr(15) <= mm_fields_out(field_hi(c_field_arr, "ip_destination_address_15") downto field_lo(c_field_arr, "ip_destination_address_15")); + destinations_info_wr.ip_destination_address_arr(16) <= mm_fields_out(field_hi(c_field_arr, "ip_destination_address_16") downto field_lo(c_field_arr, "ip_destination_address_16")); + destinations_info_wr.ip_destination_address_arr(17) <= mm_fields_out(field_hi(c_field_arr, "ip_destination_address_17") downto field_lo(c_field_arr, "ip_destination_address_17")); + destinations_info_wr.ip_destination_address_arr(18) <= mm_fields_out(field_hi(c_field_arr, "ip_destination_address_18") downto field_lo(c_field_arr, "ip_destination_address_18")); + destinations_info_wr.ip_destination_address_arr(19) <= mm_fields_out(field_hi(c_field_arr, "ip_destination_address_19") downto field_lo(c_field_arr, "ip_destination_address_19")); + destinations_info_wr.ip_destination_address_arr(20) <= mm_fields_out(field_hi(c_field_arr, "ip_destination_address_20") downto field_lo(c_field_arr, "ip_destination_address_20")); + destinations_info_wr.ip_destination_address_arr(21) <= mm_fields_out(field_hi(c_field_arr, "ip_destination_address_21") downto field_lo(c_field_arr, "ip_destination_address_21")); + destinations_info_wr.ip_destination_address_arr(22) <= mm_fields_out(field_hi(c_field_arr, "ip_destination_address_22") downto field_lo(c_field_arr, "ip_destination_address_22")); + destinations_info_wr.ip_destination_address_arr(23) <= mm_fields_out(field_hi(c_field_arr, "ip_destination_address_23") downto field_lo(c_field_arr, "ip_destination_address_23")); + destinations_info_wr.ip_destination_address_arr(24) <= mm_fields_out(field_hi(c_field_arr, "ip_destination_address_24") downto field_lo(c_field_arr, "ip_destination_address_24")); + destinations_info_wr.ip_destination_address_arr(25) <= mm_fields_out(field_hi(c_field_arr, "ip_destination_address_25") downto field_lo(c_field_arr, "ip_destination_address_25")); + destinations_info_wr.ip_destination_address_arr(26) <= mm_fields_out(field_hi(c_field_arr, "ip_destination_address_26") downto field_lo(c_field_arr, "ip_destination_address_26")); + destinations_info_wr.ip_destination_address_arr(27) <= mm_fields_out(field_hi(c_field_arr, "ip_destination_address_27") downto field_lo(c_field_arr, "ip_destination_address_27")); + destinations_info_wr.ip_destination_address_arr(28) <= mm_fields_out(field_hi(c_field_arr, "ip_destination_address_28") downto field_lo(c_field_arr, "ip_destination_address_28")); + destinations_info_wr.ip_destination_address_arr(29) <= mm_fields_out(field_hi(c_field_arr, "ip_destination_address_29") downto field_lo(c_field_arr, "ip_destination_address_29")); + destinations_info_wr.ip_destination_address_arr(30) <= mm_fields_out(field_hi(c_field_arr, "ip_destination_address_30") downto field_lo(c_field_arr, "ip_destination_address_30")); + destinations_info_wr.ip_destination_address_arr(31) <= mm_fields_out(field_hi(c_field_arr, "ip_destination_address_31") downto field_lo(c_field_arr, "ip_destination_address_31")); destinations_info_wr.udp_destination_port_arr(0) <= mm_fields_out(field_hi(c_field_arr, "udp_destination_port_0") downto field_lo(c_field_arr, "udp_destination_port_0")); destinations_info_wr.udp_destination_port_arr(1) <= mm_fields_out(field_hi(c_field_arr, "udp_destination_port_1") downto field_lo(c_field_arr, "udp_destination_port_1")); @@ -224,17 +315,33 @@ begin destinations_info_wr.udp_destination_port_arr(13) <= mm_fields_out(field_hi(c_field_arr, "udp_destination_port_13") downto field_lo(c_field_arr, "udp_destination_port_13")); destinations_info_wr.udp_destination_port_arr(14) <= mm_fields_out(field_hi(c_field_arr, "udp_destination_port_14") downto field_lo(c_field_arr, "udp_destination_port_14")); destinations_info_wr.udp_destination_port_arr(15) <= mm_fields_out(field_hi(c_field_arr, "udp_destination_port_15") downto field_lo(c_field_arr, "udp_destination_port_15")); + destinations_info_wr.udp_destination_port_arr(16) <= mm_fields_out(field_hi(c_field_arr, "udp_destination_port_16") downto field_lo(c_field_arr, "udp_destination_port_16")); + destinations_info_wr.udp_destination_port_arr(17) <= mm_fields_out(field_hi(c_field_arr, "udp_destination_port_17") downto field_lo(c_field_arr, "udp_destination_port_17")); + destinations_info_wr.udp_destination_port_arr(18) <= mm_fields_out(field_hi(c_field_arr, "udp_destination_port_18") downto field_lo(c_field_arr, "udp_destination_port_18")); + destinations_info_wr.udp_destination_port_arr(19) <= mm_fields_out(field_hi(c_field_arr, "udp_destination_port_19") downto field_lo(c_field_arr, "udp_destination_port_19")); + destinations_info_wr.udp_destination_port_arr(20) <= mm_fields_out(field_hi(c_field_arr, "udp_destination_port_20") downto field_lo(c_field_arr, "udp_destination_port_20")); + destinations_info_wr.udp_destination_port_arr(21) <= mm_fields_out(field_hi(c_field_arr, "udp_destination_port_21") downto field_lo(c_field_arr, "udp_destination_port_21")); + destinations_info_wr.udp_destination_port_arr(22) <= mm_fields_out(field_hi(c_field_arr, "udp_destination_port_22") downto field_lo(c_field_arr, "udp_destination_port_22")); + destinations_info_wr.udp_destination_port_arr(23) <= mm_fields_out(field_hi(c_field_arr, "udp_destination_port_23") downto field_lo(c_field_arr, "udp_destination_port_23")); + destinations_info_wr.udp_destination_port_arr(24) <= mm_fields_out(field_hi(c_field_arr, "udp_destination_port_24") downto field_lo(c_field_arr, "udp_destination_port_24")); + destinations_info_wr.udp_destination_port_arr(25) <= mm_fields_out(field_hi(c_field_arr, "udp_destination_port_25") downto field_lo(c_field_arr, "udp_destination_port_25")); + destinations_info_wr.udp_destination_port_arr(26) <= mm_fields_out(field_hi(c_field_arr, "udp_destination_port_26") downto field_lo(c_field_arr, "udp_destination_port_26")); + destinations_info_wr.udp_destination_port_arr(27) <= mm_fields_out(field_hi(c_field_arr, "udp_destination_port_27") downto field_lo(c_field_arr, "udp_destination_port_27")); + destinations_info_wr.udp_destination_port_arr(28) <= mm_fields_out(field_hi(c_field_arr, "udp_destination_port_28") downto field_lo(c_field_arr, "udp_destination_port_28")); + destinations_info_wr.udp_destination_port_arr(29) <= mm_fields_out(field_hi(c_field_arr, "udp_destination_port_29") downto field_lo(c_field_arr, "udp_destination_port_29")); + destinations_info_wr.udp_destination_port_arr(30) <= mm_fields_out(field_hi(c_field_arr, "udp_destination_port_30") downto field_lo(c_field_arr, "udp_destination_port_30")); + destinations_info_wr.udp_destination_port_arr(31) <= mm_fields_out(field_hi(c_field_arr, "udp_destination_port_31") downto field_lo(c_field_arr, "udp_destination_port_31")); destinations_info_wr.nof_destinations <= to_uint(mm_fields_out(field_hi(c_field_arr, "nof_destinations") downto field_lo(c_field_arr, "nof_destinations"))); -- Register the read only actual values, to ease timing closure p_dp_clk : process(dp_clk) - constant c_nof_blocks_per_packet_arr : t_natural_arr(1 to c_sdp_bdo_nof_destinations_max) := - func_sdp_bdo_nof_blocks_per_packet_look_up_table; + constant c_nof_blocks_per_packet_arr : t_natural_arr(1 to g_nof_destinations_max) := + func_sdp_bdo_reorder_nof_blocks_look_up_table(g_nof_destinations_max); begin if rising_edge(dp_clk) then - nof_destinations_act <= func_sdp_bdo_parse_nof_destinations(destinations_info_wr.nof_destinations); - nof_blocks_per_packet_act <= c_nof_blocks_per_packet_arr(nof_destinations_act); + nof_destinations_act <= func_sdp_bdo_parse_nof_destinations(destinations_info_wr.nof_destinations, g_nof_destinations_max); + nof_blocks_per_packet <= c_nof_blocks_per_packet_arr(nof_destinations_act); end if; end process; end str; -- GitLab