From 166215f4e63a2a10fab6e2a83e343ff9a9c296e8 Mon Sep 17 00:00:00 2001
From: Reinier van der Walle <walle@astron.nl>
Date: Fri, 7 May 2021 18:06:07 +0200
Subject: [PATCH] enabled 1GbE UDP offload

---
 .../tb_lofar2_unb2b_sdp_station_fsub.vhd      |   7 ++
 .../src/vhdl/lofar2_unb2b_sdp_station.vhd     | 103 +++++++++---------
 2 files changed, 59 insertions(+), 51 deletions(-)

diff --git a/applications/lofar2/designs/lofar2_unb2b_sdp_station/revisions/lofar2_unb2b_sdp_station_fsub/tb_lofar2_unb2b_sdp_station_fsub.vhd b/applications/lofar2/designs/lofar2_unb2b_sdp_station/revisions/lofar2_unb2b_sdp_station_fsub/tb_lofar2_unb2b_sdp_station_fsub.vhd
index 1a467b6b49..71bdc1825f 100644
--- a/applications/lofar2/designs/lofar2_unb2b_sdp_station/revisions/lofar2_unb2b_sdp_station_fsub/tb_lofar2_unb2b_sdp_station_fsub.vhd
+++ b/applications/lofar2/designs/lofar2_unb2b_sdp_station/revisions/lofar2_unb2b_sdp_station_fsub/tb_lofar2_unb2b_sdp_station_fsub.vhd
@@ -112,6 +112,8 @@ ARCHITECTURE tb OF tb_lofar2_unb2b_sdp_station_fsub IS
   CONSTANT c_mm_file_reg_bsn_scheduler_wg : STRING := mmf_unb_file_prefix(c_unb_nr, c_node_nr) & "REG_BSN_SCHEDULER";
   CONSTANT c_mm_file_reg_diag_wg          : STRING := mmf_unb_file_prefix(c_unb_nr, c_node_nr) & "REG_WG";
   CONSTANT c_mm_file_ram_st_sst           : STRING := mmf_unb_file_prefix(c_unb_nr, c_node_nr) & "RAM_ST_SST";
+  CONSTANT c_mm_file_reg_stat_enable      : STRING := mmf_unb_file_prefix(c_unb_nr, c_node_nr) & "REG_STAT_ENABLE";
+  CONSTANT c_mm_file_reg_stat_hdr_info    : STRING := mmf_unb_file_prefix(c_unb_nr, c_node_nr) & "REG_STAT_HDR_INFO";
 
   -- Tb
   SIGNAL tb_end              : STD_LOGIC := '0';
@@ -287,6 +289,11 @@ BEGIN
                             "UNSIGNED", rd_data, ">=", c_nof_block_per_sync*3,   -- this is the wait until condition
                             c_sdp_T_sub, tb_clk);
 
+    ----------------------------------------------------------------------------
+    -- Offload enable
+    ----------------------------------------------------------------------------
+    mmf_mm_bus_wr(c_mm_file_reg_stat_enable, 0, 1, tb_clk);
+
     ---------------------------------------------------------------------------
     -- Read subband statistics
     ---------------------------------------------------------------------------
diff --git a/applications/lofar2/designs/lofar2_unb2b_sdp_station/src/vhdl/lofar2_unb2b_sdp_station.vhd b/applications/lofar2/designs/lofar2_unb2b_sdp_station/src/vhdl/lofar2_unb2b_sdp_station.vhd
index ae170dbba8..57018b560b 100644
--- a/applications/lofar2/designs/lofar2_unb2b_sdp_station/src/vhdl/lofar2_unb2b_sdp_station.vhd
+++ b/applications/lofar2/designs/lofar2_unb2b_sdp_station/src/vhdl/lofar2_unb2b_sdp_station.vhd
@@ -345,8 +345,8 @@ ARCHITECTURE str OF lofar2_unb2b_sdp_station IS
   SIGNAL reg_stat_hdr_dat_miso      : t_mem_miso;
 
   -- Statistics
-  SIGNAL udp_tx_sosi_arr            : t_dp_sosi_arr(c_udp_offload_nof_streams-1 DOWNTO 0) := (OTHERS=>c_dp_sosi_rst);
-  SIGNAL udp_tx_siso_arr            : t_dp_siso_arr(c_udp_offload_nof_streams-1 DOWNTO 0);  
+  SIGNAL udp_tx_sosi_arr            : t_dp_sosi_arr(c_udp_offload_nof_streams-1 DOWNTO 0) := (OTHERS => c_dp_sosi_rst);
+  SIGNAL udp_tx_siso_arr            : t_dp_siso_arr(c_udp_offload_nof_streams-1 DOWNTO 0) := (OTHERS => c_dp_siso_rdy);  
 
   ----------------------------------------------
   -- 10 GbE 
@@ -414,21 +414,22 @@ BEGIN
   -----------------------------------------------------------------------------
   u_ctrl : ENTITY unb2b_board_lib.ctrl_unb2b_board
   GENERIC MAP (
-    g_sim                => g_sim,
-    g_technology         => g_technology,
-    g_design_name        => g_design_name,
-    g_design_note        => g_design_note,
-    g_stamp_date         => g_stamp_date,
-    g_stamp_time         => g_stamp_time, 
-    g_revision_id        => g_revision_id, 
-    g_fw_version         => c_fw_version,
-    g_mm_clk_freq        => c_mm_clk_freq,
-    g_eth_clk_freq       => c_unb2b_board_eth_clk_freq_125M,
-    g_aux                => c_unb2b_board_aux,
-    g_factory_image      => g_factory_image,
-    g_protect_addr_range => g_protect_addr_range,
-    g_dp_clk_freq        => c_unb2b_board_ext_clk_freq_200M,
-    g_dp_clk_use_pll     => FALSE,
+    g_sim                     => g_sim,
+    g_technology              => g_technology,
+    g_design_name             => g_design_name,
+    g_design_note             => g_design_note,
+    g_stamp_date              => g_stamp_date,
+    g_stamp_time              => g_stamp_time, 
+    g_revision_id             => g_revision_id, 
+    g_fw_version              => c_fw_version,
+    g_mm_clk_freq             => c_mm_clk_freq,
+    g_eth_clk_freq            => c_unb2b_board_eth_clk_freq_125M,
+    g_aux                     => c_unb2b_board_aux,
+    g_factory_image           => g_factory_image,
+    g_protect_addr_range      => g_protect_addr_range,
+    g_dp_clk_freq             => c_unb2b_board_ext_clk_freq_200M,
+    g_dp_clk_use_pll          => FALSE,
+    g_udp_offload             => TRUE,
     g_udp_offload_nof_streams => c_eth_nof_udp_ports
   )
   PORT MAP (
@@ -560,42 +561,42 @@ BEGIN
     pout_wdi                 => pout_wdi,
 
     -- mm interfaces for control
-    reg_wdi_mosi             => reg_wdi_mosi,
-    reg_wdi_miso             => reg_wdi_miso,
-    reg_unb_system_info_mosi => reg_unb_system_info_mosi,
-    reg_unb_system_info_miso => reg_unb_system_info_miso,
-    rom_unb_system_info_mosi => rom_unb_system_info_mosi,
-    rom_unb_system_info_miso => rom_unb_system_info_miso, 
-    reg_unb_sens_mosi        => reg_unb_sens_mosi,
-    reg_unb_sens_miso        => reg_unb_sens_miso, 
-    reg_unb_pmbus_mosi       => reg_unb_pmbus_mosi,
-    reg_unb_pmbus_miso       => reg_unb_pmbus_miso,
-    reg_fpga_temp_sens_mosi  => reg_fpga_temp_sens_mosi,
-    reg_fpga_temp_sens_miso  => reg_fpga_temp_sens_miso,
+    reg_wdi_mosi                => reg_wdi_mosi,
+    reg_wdi_miso                => reg_wdi_miso,
+    reg_unb_system_info_mosi    => reg_unb_system_info_mosi,
+    reg_unb_system_info_miso    => reg_unb_system_info_miso,
+    rom_unb_system_info_mosi    => rom_unb_system_info_mosi,
+    rom_unb_system_info_miso    => rom_unb_system_info_miso, 
+    reg_unb_sens_mosi           => reg_unb_sens_mosi,
+    reg_unb_sens_miso           => reg_unb_sens_miso, 
+    reg_unb_pmbus_mosi          => reg_unb_pmbus_mosi,
+    reg_unb_pmbus_miso          => reg_unb_pmbus_miso,
+    reg_fpga_temp_sens_mosi     => reg_fpga_temp_sens_mosi,
+    reg_fpga_temp_sens_miso     => reg_fpga_temp_sens_miso,
     reg_fpga_voltage_sens_mosi  => reg_fpga_voltage_sens_mosi,
     reg_fpga_voltage_sens_miso  => reg_fpga_voltage_sens_miso,
-    reg_ppsh_mosi            => reg_ppsh_mosi,
-    reg_ppsh_miso            => reg_ppsh_miso, 
-    eth1g_mm_rst             => eth1g_mm_rst,
-    eth1g_tse_mosi           => eth1g_tse_mosi,
-    eth1g_tse_miso           => eth1g_tse_miso,
-    eth1g_reg_mosi           => eth1g_reg_mosi,
-    eth1g_reg_miso           => eth1g_reg_miso,
-    eth1g_reg_interrupt      => eth1g_reg_interrupt,
-    eth1g_ram_mosi           => eth1g_ram_mosi,
-    eth1g_ram_miso           => eth1g_ram_miso,
-    reg_dpmm_data_mosi       => reg_dpmm_data_mosi,
-    reg_dpmm_data_miso       => reg_dpmm_data_miso,
-    reg_dpmm_ctrl_mosi       => reg_dpmm_ctrl_mosi,
-    reg_dpmm_ctrl_miso       => reg_dpmm_ctrl_miso,
-    reg_mmdp_data_mosi       => reg_mmdp_data_mosi,
-    reg_mmdp_data_miso       => reg_mmdp_data_miso,
-    reg_mmdp_ctrl_mosi       => reg_mmdp_ctrl_mosi,
-    reg_mmdp_ctrl_miso       => reg_mmdp_ctrl_miso,
-    reg_epcs_mosi            => reg_epcs_mosi,
-    reg_epcs_miso            => reg_epcs_miso,
-    reg_remu_mosi            => reg_remu_mosi,
-    reg_remu_miso            => reg_remu_miso,
+    reg_ppsh_mosi               => reg_ppsh_mosi,
+    reg_ppsh_miso               => reg_ppsh_miso, 
+    eth1g_mm_rst                => eth1g_mm_rst,
+    eth1g_tse_mosi              => eth1g_tse_mosi,
+    eth1g_tse_miso              => eth1g_tse_miso,
+    eth1g_reg_mosi              => eth1g_reg_mosi,
+    eth1g_reg_miso              => eth1g_reg_miso,
+    eth1g_reg_interrupt         => eth1g_reg_interrupt,
+    eth1g_ram_mosi              => eth1g_ram_mosi,
+    eth1g_ram_miso              => eth1g_ram_miso,
+    reg_dpmm_data_mosi          => reg_dpmm_data_mosi,
+    reg_dpmm_data_miso          => reg_dpmm_data_miso,
+    reg_dpmm_ctrl_mosi          => reg_dpmm_ctrl_mosi,
+    reg_dpmm_ctrl_miso          => reg_dpmm_ctrl_miso,
+    reg_mmdp_data_mosi          => reg_mmdp_data_mosi,
+    reg_mmdp_data_miso          => reg_mmdp_data_miso,
+    reg_mmdp_ctrl_mosi          => reg_mmdp_ctrl_mosi,
+    reg_mmdp_ctrl_miso          => reg_mmdp_ctrl_miso,
+    reg_epcs_mosi               => reg_epcs_mosi,
+    reg_epcs_miso               => reg_epcs_miso,
+    reg_remu_mosi               => reg_remu_mosi,
+    reg_remu_miso               => reg_remu_miso,
 
     -- mm buses for signal flow blocks
     -- Jesd ip status/control
-- 
GitLab