diff --git a/designs/vivado/scalp_firmware/2019.2/lin64/.scripts/.prompt_colors.tcl b/designs/vivado/scalp_firmware/2019.2/lin64/.scripts/.prompt_colors.tcl
index aa57ef71a9c85ae01de679ec54c34efde9e50ffb..99d4bf8ad2e493cc1af8930d388d81ca3dc390bd 100644
--- a/designs/vivado/scalp_firmware/2019.2/lin64/.scripts/.prompt_colors.tcl
+++ b/designs/vivado/scalp_firmware/2019.2/lin64/.scripts/.prompt_colors.tcl
@@ -15,7 +15,7 @@
 # Tool version: 2019.2
 # Description: Console color print utility
 #
-# Last update: 2020-10-13 13:10:02
+# Last update: 2020-11-08 11:36:32
 #
 ##################################################################################
 
diff --git a/designs/vivado/scalp_firmware/2019.2/lin64/.scripts/clean_prj_scalp_firmware.sh b/designs/vivado/scalp_firmware/2019.2/lin64/.scripts/clean_prj_scalp_firmware.sh
index 7d608d02cd8553f297e9d6e792c2dfd38f7204e5..d3dfb2adf41884cf259d19e1f04ee3cb5544c5a3 100755
--- a/designs/vivado/scalp_firmware/2019.2/lin64/.scripts/clean_prj_scalp_firmware.sh
+++ b/designs/vivado/scalp_firmware/2019.2/lin64/.scripts/clean_prj_scalp_firmware.sh
@@ -17,7 +17,7 @@
 # Tool version: 2019.2
 # Description: Cleanup project directory
 #
-# Last update: 2020-11-07 09:14:14
+# Last update: 2020-11-08 11:36:32
 #
 ##################################################################################
 
diff --git a/designs/vivado/scalp_firmware/2019.2/lin64/.scripts/create_prj_scalp_firmware.sh b/designs/vivado/scalp_firmware/2019.2/lin64/.scripts/create_prj_scalp_firmware.sh
index b8f05723478981732e586ee9cfe6583b77802317..a6717d0952fb9c4b68368ceb8b233d197acdee6d 100755
--- a/designs/vivado/scalp_firmware/2019.2/lin64/.scripts/create_prj_scalp_firmware.sh
+++ b/designs/vivado/scalp_firmware/2019.2/lin64/.scripts/create_prj_scalp_firmware.sh
@@ -17,7 +17,7 @@
 # Tool version: 2019.2
 # Description: Create Vivado project
 #
-# Last update: 2020-11-07 09:14:14
+# Last update: 2020-11-08 11:36:32
 #
 ##################################################################################
 
diff --git a/designs/vivado/scalp_firmware/2019.2/lin64/.scripts/create_prj_scalp_firmware.tcl b/designs/vivado/scalp_firmware/2019.2/lin64/.scripts/create_prj_scalp_firmware.tcl
index 76733a1ea5f1cc584c47ea1d1aa9f849ee03b0f2..0c01c2b93f0eccd2b8a25de0798b5ccbb598414f 100644
--- a/designs/vivado/scalp_firmware/2019.2/lin64/.scripts/create_prj_scalp_firmware.tcl
+++ b/designs/vivado/scalp_firmware/2019.2/lin64/.scripts/create_prj_scalp_firmware.tcl
@@ -15,7 +15,7 @@
 # Tool version: 2019.2
 # Description: TCL script for re-creating Vivado project 'scalp_firmware'
 #
-# Last update: 2020-11-07 09:14:14
+# Last update: 2020-11-08 11:36:32
 #
 ##################################################################################
 
@@ -80,6 +80,13 @@ add_files -fileset constrs_1 -norecurse $src_dir/constrs/scalp_firmware.xdc
 		print_status "VHDL 2008 mode configured for the file $j" "OK"
 		set_property is_enabled true [get_files $j]
 	}
+	set vhdl_ips_file_list [findFiles ${ip_dir}/scalp_packet_fifo_wrapper/src/hdl *.vhd]
+	add_files -norecurse $vhdl_ips_file_list
+	foreach j $vhdl_ips_file_list {
+		set_property file_type {VHDL 2008} [get_files  $j]
+		print_status "VHDL 2008 mode configured for the file $j" "OK"
+		set_property is_enabled true [get_files $j]
+	}
 	set vhdl_ips_file_list [findFiles ${ip_dir}/scalp_aurora_phy/src/hdl *.vhd]
 	add_files -norecurse $vhdl_ips_file_list
 	foreach j $vhdl_ips_file_list {
@@ -88,6 +95,7 @@ add_files -fileset constrs_1 -norecurse $src_dir/constrs/scalp_firmware.xdc
 		set_property is_enabled true [get_files $j]
 	}
 	read_ip ${ip_dir}/scalp_aurora_phy_rx_fifo/src/ip_core/axis_data_fifo/axis_data_fifo.xci
+	read_ip ${ip_dir}/scalp_packet_fifo_wrapper/src/ip_core/scalp_packet_fifo/scalp_packet_fifo.xci
 	read_ip ${ip_dir}/scalp_design_debug/src/ip_core/vio_status/vio_status.xci
 	read_ip ${ip_dir}/scalp_design_debug/src/ip_core/data_counter/data_counter.xci
 	read_ip ${ip_dir}/scalp_design_debug/src/ip_core/vio_axi_cnt_ctrl/vio_axi_cnt_ctrl.xci
diff --git a/designs/vivado/scalp_firmware/2019.2/lin64/.scripts/export_hw_scalp_firmware.sh b/designs/vivado/scalp_firmware/2019.2/lin64/.scripts/export_hw_scalp_firmware.sh
index 909d5734b09ed25be42158f1d480839ac8d6e256..fd74d83fb0234b0f77928a794d07dc3697735d36 100755
--- a/designs/vivado/scalp_firmware/2019.2/lin64/.scripts/export_hw_scalp_firmware.sh
+++ b/designs/vivado/scalp_firmware/2019.2/lin64/.scripts/export_hw_scalp_firmware.sh
@@ -17,7 +17,7 @@
 # Tool version: 2019.2
 # Description: Export the hardware design to SDK
 #
-# Last update: 2020-11-07 09:14:14
+# Last update: 2020-11-08 11:36:32
 #
 ##################################################################################
 
diff --git a/designs/vivado/scalp_firmware/2019.2/lin64/.scripts/export_hw_scalp_firmware.tcl b/designs/vivado/scalp_firmware/2019.2/lin64/.scripts/export_hw_scalp_firmware.tcl
index a6d1f8bf6c29e7a61bbb57c90c4aca542245f4ad..c761de294d8bd952a79e11d5d5355b5dd356ead4 100644
--- a/designs/vivado/scalp_firmware/2019.2/lin64/.scripts/export_hw_scalp_firmware.tcl
+++ b/designs/vivado/scalp_firmware/2019.2/lin64/.scripts/export_hw_scalp_firmware.tcl
@@ -15,7 +15,7 @@
 # Tool version: 2019.2
 # Description: Export the hardware design to SDK
 #
-# Last update: 2020-11-07 09:14:14
+# Last update: 2020-11-08 11:36:32
 #
 ##################################################################################
 
diff --git a/designs/vivado/scalp_firmware/2019.2/lin64/.scripts/gen_bitstream_scalp_firmware.sh b/designs/vivado/scalp_firmware/2019.2/lin64/.scripts/gen_bitstream_scalp_firmware.sh
index 378e1567c9eb8e4db2daba31a2c6658fe9d0a287..01003e2e90cf1e8c0236763e6a1ca72c8a1c9df7 100755
--- a/designs/vivado/scalp_firmware/2019.2/lin64/.scripts/gen_bitstream_scalp_firmware.sh
+++ b/designs/vivado/scalp_firmware/2019.2/lin64/.scripts/gen_bitstream_scalp_firmware.sh
@@ -17,7 +17,7 @@
 # Tool version: 2019.2
 # Description: Generate bitstream file
 #
-# Last update: 2020-11-07 09:14:14
+# Last update: 2020-11-08 11:36:32
 #
 ##################################################################################
 
diff --git a/designs/vivado/scalp_firmware/2019.2/lin64/.scripts/gen_bitstream_scalp_firmware.tcl b/designs/vivado/scalp_firmware/2019.2/lin64/.scripts/gen_bitstream_scalp_firmware.tcl
index 0b38b88c289475ae015e91839c496df2ee2ddc6a..d64b7dd793a143de21aaedd474774192d954c355 100644
--- a/designs/vivado/scalp_firmware/2019.2/lin64/.scripts/gen_bitstream_scalp_firmware.tcl
+++ b/designs/vivado/scalp_firmware/2019.2/lin64/.scripts/gen_bitstream_scalp_firmware.tcl
@@ -17,7 +17,7 @@
 # Tool version: 2019.2
 # Description: TCL script used to generate bitstream file
 #
-# Last update: 2020-11-07 09:14:14
+# Last update: 2020-11-08 11:36:32
 #
 ##################################################################################
 
diff --git a/designs/vivado/scalp_firmware/2019.2/lin64/.scripts/gen_sw_apps_scalp_firmware.sh b/designs/vivado/scalp_firmware/2019.2/lin64/.scripts/gen_sw_apps_scalp_firmware.sh
index 2160b2fdc8e8396bca50286d4ab9658040ac9dbb..02cc757dad33bfdbf45d1a7ecf6f083042027ab1 100755
--- a/designs/vivado/scalp_firmware/2019.2/lin64/.scripts/gen_sw_apps_scalp_firmware.sh
+++ b/designs/vivado/scalp_firmware/2019.2/lin64/.scripts/gen_sw_apps_scalp_firmware.sh
@@ -17,7 +17,7 @@
 # Tool version: 2019.2
 # Description: Generate software application
 #
-# Last update: 2020-11-07 09:14:14
+# Last update: 2020-11-08 11:36:32
 #
 ##################################################################################
 
diff --git a/designs/vivado/scalp_firmware/2019.2/lin64/.scripts/gen_sw_apps_scalp_firmware.tcl b/designs/vivado/scalp_firmware/2019.2/lin64/.scripts/gen_sw_apps_scalp_firmware.tcl
index 99251d420e50a1f21b00ed6b48e786fac914e8c7..f0b6768d46be9ee81c662ebd2c38bea3a27ee267 100644
--- a/designs/vivado/scalp_firmware/2019.2/lin64/.scripts/gen_sw_apps_scalp_firmware.tcl
+++ b/designs/vivado/scalp_firmware/2019.2/lin64/.scripts/gen_sw_apps_scalp_firmware.tcl
@@ -17,7 +17,7 @@
 # Tool version: 2019.2
 # Description: TCL script used to generate software application
 #
-# Last update: 2020-11-07 09:14:14
+# Last update: 2020-11-08 11:36:32
 #
 ##################################################################################
 
diff --git a/designs/vivado/scalp_firmware/2019.2/lin64/.scripts/load_bitstream_scalp_firmware.sh b/designs/vivado/scalp_firmware/2019.2/lin64/.scripts/load_bitstream_scalp_firmware.sh
index 577b49ef88e7b1c99eefff20ec04d577ce7e1b8f..ad321d5a378118edb513e0e7407288a72e37add9 100755
--- a/designs/vivado/scalp_firmware/2019.2/lin64/.scripts/load_bitstream_scalp_firmware.sh
+++ b/designs/vivado/scalp_firmware/2019.2/lin64/.scripts/load_bitstream_scalp_firmware.sh
@@ -17,7 +17,7 @@
 # Tool version: 2019.2
 # Description: Load bitstream file
 #
-# Last update: 2020-11-07 09:14:14
+# Last update: 2020-11-08 11:36:32
 #
 ##################################################################################
 
diff --git a/designs/vivado/scalp_firmware/2019.2/lin64/.scripts/load_bitstream_scalp_firmware.tcl b/designs/vivado/scalp_firmware/2019.2/lin64/.scripts/load_bitstream_scalp_firmware.tcl
index 28e9e47a4d761d134400956118b6db5891ff5a91..1b87d692b6f41e4dc37e0456ea9a4f80bbee6885 100644
--- a/designs/vivado/scalp_firmware/2019.2/lin64/.scripts/load_bitstream_scalp_firmware.tcl
+++ b/designs/vivado/scalp_firmware/2019.2/lin64/.scripts/load_bitstream_scalp_firmware.tcl
@@ -15,7 +15,7 @@
 # Tool version: 2019.2
 # Description: TCL script used to load FPGA bitstream
 #
-# Last update: 2020-11-07 09:14:14
+# Last update: 2020-11-08 11:36:32
 #
 ##################################################################################
 
diff --git a/designs/vivado/scalp_firmware/2019.2/lin64/.scripts/load_sw_app_scalp_firmware.sh b/designs/vivado/scalp_firmware/2019.2/lin64/.scripts/load_sw_app_scalp_firmware.sh
index 07e5eb037e7f5420f53c67ba75df53f352a0bf22..20a872b7776891cd5188a647c722eeb82db155ef 100755
--- a/designs/vivado/scalp_firmware/2019.2/lin64/.scripts/load_sw_app_scalp_firmware.sh
+++ b/designs/vivado/scalp_firmware/2019.2/lin64/.scripts/load_sw_app_scalp_firmware.sh
@@ -17,7 +17,7 @@
 # Tool version: 2019.2
 # Description: Load software application
 #
-# Last update: 2020-11-07 09:14:14
+# Last update: 2020-11-08 11:36:32
 #
 ##################################################################################
 
diff --git a/designs/vivado/scalp_firmware/2019.2/lin64/.scripts/load_sw_app_scalp_firmware.tcl b/designs/vivado/scalp_firmware/2019.2/lin64/.scripts/load_sw_app_scalp_firmware.tcl
index 82206c5eaceec41fadfcf9d83276045e128d1758..e0a242beabd1d470c68716b94eebd588c54c819f 100644
--- a/designs/vivado/scalp_firmware/2019.2/lin64/.scripts/load_sw_app_scalp_firmware.tcl
+++ b/designs/vivado/scalp_firmware/2019.2/lin64/.scripts/load_sw_app_scalp_firmware.tcl
@@ -15,7 +15,7 @@
 # Tool version: 2019.2
 # Description: TCL script used to load software application
 #
-# Last update: 2020-11-07 09:14:14
+# Last update: 2020-11-08 11:36:32
 #
 ##################################################################################
 
diff --git a/designs/vivado/scalp_firmware/2019.2/lin64/.scripts/open_prj_scalp_firmware.sh b/designs/vivado/scalp_firmware/2019.2/lin64/.scripts/open_prj_scalp_firmware.sh
index 98c24899530d27f9eb0390725486c6a77367a398..35cbfa11adc950f745f1ef43400d6c64712a7195 100755
--- a/designs/vivado/scalp_firmware/2019.2/lin64/.scripts/open_prj_scalp_firmware.sh
+++ b/designs/vivado/scalp_firmware/2019.2/lin64/.scripts/open_prj_scalp_firmware.sh
@@ -17,7 +17,7 @@
 # Tool version: 2019.2
 # Description: Create Vivado project
 #
-# Last update: 2020-11-07 09:14:14
+# Last update: 2020-11-08 11:36:32
 #
 ##################################################################################
 
diff --git a/designs/vivado/scalp_firmware/2019.2/lin64/.scripts/utils.tcl b/designs/vivado/scalp_firmware/2019.2/lin64/.scripts/utils.tcl
index e6fb3e933f51f8681f077232529865e2fbd06ee8..23dd03332c88dcf55fc70a23dba76b9a98e838cd 100644
--- a/designs/vivado/scalp_firmware/2019.2/lin64/.scripts/utils.tcl
+++ b/designs/vivado/scalp_firmware/2019.2/lin64/.scripts/utils.tcl
@@ -15,7 +15,7 @@
 # Tool version: 2019.2
 # Description: Project management utilities
 #
-# Last update: 2020-11-07 09:14:14
+# Last update: 2020-11-08 11:36:32
 #
 ##################################################################################
 
diff --git a/designs/vivado/scalp_firmware/2019.2/lin64/setup.sh b/designs/vivado/scalp_firmware/2019.2/lin64/setup.sh
index ac7f44dd6a0c7607282ddd094a73f0d0924ec635..c704bc4e98245ef380625b3014af296cd479b173 100755
--- a/designs/vivado/scalp_firmware/2019.2/lin64/setup.sh
+++ b/designs/vivado/scalp_firmware/2019.2/lin64/setup.sh
@@ -15,7 +15,7 @@
 # Tool version: 2019.2
 # Description: TCL script creating aliases for Vivado project management scripts
 #
-# Last update: 2020-11-07 09:14:14
+# Last update: 2020-11-08 11:36:32
 #
 ##################################################################################
 
diff --git a/designs/vivado/scalp_firmware/2019.2/src/hdl/scalp_firmware.vhd b/designs/vivado/scalp_firmware/2019.2/src/hdl/scalp_firmware.vhd
index aceb82ea9b974f12f2f29d36bd3d5deb9f2ef210..e49a1019180576010563b2b90c6ea286e4c5ed49 100644
--- a/designs/vivado/scalp_firmware/2019.2/src/hdl/scalp_firmware.vhd
+++ b/designs/vivado/scalp_firmware/2019.2/src/hdl/scalp_firmware.vhd
@@ -274,6 +274,7 @@ architecture arch of scalp_firmware is
 
     -- Constantes
     -- constant C_PS_SYS_RESET_SIZE : integer range 0 to 7 := 1;
+    constant C_AXI_ADDR_SIZE : integer range 0 to 32 := 12;
 
     component scalp_aurora_phy is
         generic (
@@ -337,86 +338,145 @@ architecture arch of scalp_firmware is
     -- Signals
     -- Clocks
     -- Processing system clock
-    signal PSSysClkxC                    : std_logic                                     := '0';
+    signal PSSysClkxC                    : std_logic                                          := '0';
     -- GTP Clocks
     -- signal GTPRefClk0xC : std_logic := '0';
     -- signal GTPRefClk1xC : std_logic := '0';
-    signal GTRefClk0DiffxC               : t_gtp_diff_ref_clk                            := C_NO_GTP_DIFF_REF_CLK;
-    signal GTRefClk1DiffxC               : t_gtp_diff_ref_clk                            := C_NO_GTP_DIFF_REF_CLK;
+    signal GTRefClk0DiffxC               : t_gtp_diff_ref_clk                                 := C_NO_GTP_DIFF_REF_CLK;
+    signal GTRefClk1DiffxC               : t_gtp_diff_ref_clk                                 := C_NO_GTP_DIFF_REF_CLK;
     -- Resets
     -- Processing system reset
-    signal PSSysResetxR                  : std_logic                                     := '0';
+    signal PSSysResetxR                  : std_logic                                          := '0';
     -- Scalp Aurora Phy
-    signal GTRefClk0xC                   : t_gt_ref_slave_clk                            := C_GT_REF_NO_SLAVE_CLK;
-    signal GTRefClk1xC                   : t_gt_ref_slave_clk                            := C_GT_REF_NO_SLAVE_CLK;
-    signal AuroraClkSlavexC              : t_aurora_slave_clk                            := C_AURORA_NO_SLAVE_CLK;
-    signal AuroraClkMasterxC             : t_aurora_master_clk                           := C_AURORA_NO_MASTER_CLK;
-    signal AuroraResetSlavexR            : t_aurora_slave_reset                          := C_AURORA_NO_SLAVE_RESET;
-    signal AuroraResetMasterLinkxR       : t_aurora_master_link_reset                    := C_AURORA_NO_MASTER_LINK_RESET;
-    signal GTPFromNorthxD                : t_aurora_gtp_diff_io_rx                       := C_AURORA_NO_GTP_DIFF_IO_RX;
-    signal GTPToNorthxD                  : t_aurora_gtp_diff_io_tx                       := C_AURORA_NO_GTP_DIFF_IO_TX;
-    signal GTPFromEastxD                 : t_aurora_gtp_diff_io_rx                       := C_AURORA_NO_GTP_DIFF_IO_RX;
-    signal GTPToEastxD                   : t_aurora_gtp_diff_io_tx                       := C_AURORA_NO_GTP_DIFF_IO_TX;
-    signal GTPFromSouthxD                : t_aurora_gtp_diff_io_rx                       := C_AURORA_NO_GTP_DIFF_IO_RX;
-    signal GTPToSouthxD                  : t_aurora_gtp_diff_io_tx                       := C_AURORA_NO_GTP_DIFF_IO_TX;
-    signal GTPFromWestxD                 : t_aurora_gtp_diff_io_rx                       := C_AURORA_NO_GTP_DIFF_IO_RX;
-    signal GTPToWestxD                   : t_aurora_gtp_diff_io_tx                       := C_AURORA_NO_GTP_DIFF_IO_TX;
-    signal NorthRXM2SxD                  : t_axi4m2s                                     := C_NO_AXI4_M2S;
-    signal NorthTXM2SxD                  : t_axi4m2s                                     := C_NO_AXI4_M2S;
-    signal NorthTXS2MxD                  : t_axi4s2m                                     := C_NO_AXI4_S2M;
-    signal EastRXM2SxD                   : t_axi4m2s                                     := C_NO_AXI4_M2S;
-    signal EastTXM2SxD                   : t_axi4m2s                                     := C_NO_AXI4_M2S;
-    signal EastTXS2MxD                   : t_axi4s2m                                     := C_NO_AXI4_S2M;
-    signal SouthRXM2SxD                  : t_axi4m2s                                     := C_NO_AXI4_M2S;
-    signal SouthTXM2SxD                  : t_axi4m2s                                     := C_NO_AXI4_M2S;
-    signal SouthTXS2MxD                  : t_axi4s2m                                     := C_NO_AXI4_S2M;
-    signal WestRXM2SxD                   : t_axi4m2s                                     := C_NO_AXI4_M2S;
-    signal WestTXM2SxD                   : t_axi4m2s                                     := C_NO_AXI4_M2S;
-    signal WestTXS2MxD                   : t_axi4s2m                                     := C_NO_AXI4_S2M;
-    signal NorthRXfromPhyTXfromFifoM2SxD : t_axi4m2s                                     := C_NO_AXI4_M2S;
-    signal NorthRXfromPhyTXfromFifoS2MxD : t_axi4s2m                                     := C_NO_AXI4_S2M;
-    signal EastRXfromPhyTXfromFifoM2SxD  : t_axi4m2s                                     := C_NO_AXI4_M2S;
-    signal EastRXfromPhyTXfromFifoS2MxD  : t_axi4s2m                                     := C_NO_AXI4_S2M;
-    signal SouthRXfromPhyTXfromFifoM2SxD : t_axi4m2s                                     := C_NO_AXI4_M2S;
-    signal SouthRXfromPhyTXfromFifoS2MxD : t_axi4s2m                                     := C_NO_AXI4_S2M;
-    signal WestRXfromPhyTXfromFifoM2SxD  : t_axi4m2s                                     := C_NO_AXI4_M2S;
-    signal WestRXfromPhyTXfromFifoS2MxD  : t_axi4s2m                                     := C_NO_AXI4_S2M;
-    signal NorthRXFromFifoS2MxD          : t_axi4s2m                                     := C_NO_AXI4_S2M;
-    signal EastRXFromFifoS2MxD           : t_axi4s2m                                     := C_NO_AXI4_S2M;
-    signal SouthRXFromFifoS2MxD          : t_axi4s2m                                     := C_NO_AXI4_S2M;
-    signal WestRXFromFifoS2MxD           : t_axi4s2m                                     := C_NO_AXI4_S2M;
-    signal NorthRXUFCM2SxD               : t_axi4ufcm2s_rx                               := C_NO_AXI4_UFC_M2S_RX;
-    signal NorthTXUFCM2SxD               : t_axi4ufcm2s_tx                               := C_NO_AXI4_UFC_M2S_TX;
-    signal NorthTXUFCS2MxD               : t_axi4ufcs2m_tx                               := C_NO_AXI4_UFC_S2M_TX;
-    signal EastRXUFCM2SxD                : t_axi4ufcm2s_rx                               := C_NO_AXI4_UFC_M2S_RX;
-    signal EastTXUFCM2SxD                : t_axi4ufcm2s_tx                               := C_NO_AXI4_UFC_M2S_TX;
-    signal EastTXUFCS2MxD                : t_axi4ufcs2m_tx                               := C_NO_AXI4_UFC_S2M_TX;
-    signal SouthRXUFCM2SxD               : t_axi4ufcm2s_rx                               := C_NO_AXI4_UFC_M2S_RX;
-    signal SouthTXUFCM2SxD               : t_axi4ufcm2s_tx                               := C_NO_AXI4_UFC_M2S_TX;
-    signal SouthTXUFCS2MxD               : t_axi4ufcs2m_tx                               := C_NO_AXI4_UFC_S2M_TX;
-    signal WestRXUFCM2SxD                : t_axi4ufcm2s_rx                               := C_NO_AXI4_UFC_M2S_RX;
-    signal WestTXUFCM2SxD                : t_axi4ufcm2s_tx                               := C_NO_AXI4_UFC_M2S_TX;
-    signal WestTXUFCS2MxD                : t_axi4ufcs2m_tx                               := C_NO_AXI4_UFC_S2M_TX;
-    signal NorthRXNFCM2SxD               : t_axi4nfcm2s                                  := C_NO_AXI4_NFC_M2S;
-    signal NorthTXNFCM2SxD               : t_axi4nfcm2s                                  := C_NO_AXI4_NFC_M2S;
-    signal NorthTXNFCS2MxD               : t_axi4nfcs2m                                  := C_NO_AXI4_NFC_S2M;
-    signal EastRXNFCM2SxD                : t_axi4nfcm2s                                  := C_NO_AXI4_NFC_M2S;
-    signal EastTXNFCM2SxD                : t_axi4nfcm2s                                  := C_NO_AXI4_NFC_M2S;
-    signal EastTXNFCS2MxD                : t_axi4nfcs2m                                  := C_NO_AXI4_NFC_S2M;
-    signal SouthRXNFCM2SxD               : t_axi4nfcm2s                                  := C_NO_AXI4_NFC_M2S;
-    signal SouthTXNFCM2SxD               : t_axi4nfcm2s                                  := C_NO_AXI4_NFC_M2S;
-    signal SouthTXNFCS2MxD               : t_axi4nfcs2m                                  := C_NO_AXI4_NFC_S2M;
-    signal WestRXNFCM2SxD                : t_axi4nfcm2s                                  := C_NO_AXI4_NFC_M2S;
-    signal WestTXNFCM2SxD                : t_axi4nfcm2s                                  := C_NO_AXI4_NFC_M2S;
-    signal WestTXNFCS2MxD                : t_axi4nfcs2m                                  := C_NO_AXI4_NFC_S2M;
-    signal AuroraCtrlxD                  : t_aurora_control                              := C_AURORA_NO_CONTROL;
-    signal AuroraStatusxD                : t_aurora_status                               := C_AURORA_NO_STATUS;
-    signal AuroraDRPM2SxD                : t_drpm2s_vector((C_NB_GTP_CORE - 1) downto 0) := (others => C_NO_DRP_M2S);
-    signal AuroraDRPS2MxD                : t_drps2m_vector((C_NB_GTP_CORE - 1) downto 0) := (others => C_NO_DRP_S2M);
-    signal NorthFifoStatusxD             : t_axi4fifo_status                             := C_NO_AXI4_FIFO_STATUS;
-    signal EastFifoStatusxD              : t_axi4fifo_status                             := C_NO_AXI4_FIFO_STATUS;
-    signal SouthFifoStatusxD             : t_axi4fifo_status                             := C_NO_AXI4_FIFO_STATUS;
-    signal WestFifoStatusxD              : t_axi4fifo_status                             := C_NO_AXI4_FIFO_STATUS;
+    signal GTRefClk0xC                   : t_gt_ref_slave_clk                                 := C_GT_REF_NO_SLAVE_CLK;
+    signal GTRefClk1xC                   : t_gt_ref_slave_clk                                 := C_GT_REF_NO_SLAVE_CLK;
+    signal AuroraClkSlavexC              : t_aurora_slave_clk                                 := C_AURORA_NO_SLAVE_CLK;
+    signal AuroraClkMasterxC             : t_aurora_master_clk                                := C_AURORA_NO_MASTER_CLK;
+    signal AuroraResetSlavexR            : t_aurora_slave_reset                               := C_AURORA_NO_SLAVE_RESET;
+    signal AuroraResetMasterLinkxR       : t_aurora_master_link_reset                         := C_AURORA_NO_MASTER_LINK_RESET;
+    signal GTPFromNorthxD                : t_aurora_gtp_diff_io_rx                            := C_AURORA_NO_GTP_DIFF_IO_RX;
+    signal GTPToNorthxD                  : t_aurora_gtp_diff_io_tx                            := C_AURORA_NO_GTP_DIFF_IO_TX;
+    signal GTPFromEastxD                 : t_aurora_gtp_diff_io_rx                            := C_AURORA_NO_GTP_DIFF_IO_RX;
+    signal GTPToEastxD                   : t_aurora_gtp_diff_io_tx                            := C_AURORA_NO_GTP_DIFF_IO_TX;
+    signal GTPFromSouthxD                : t_aurora_gtp_diff_io_rx                            := C_AURORA_NO_GTP_DIFF_IO_RX;
+    signal GTPToSouthxD                  : t_aurora_gtp_diff_io_tx                            := C_AURORA_NO_GTP_DIFF_IO_TX;
+    signal GTPFromWestxD                 : t_aurora_gtp_diff_io_rx                            := C_AURORA_NO_GTP_DIFF_IO_RX;
+    signal GTPToWestxD                   : t_aurora_gtp_diff_io_tx                            := C_AURORA_NO_GTP_DIFF_IO_TX;
+    signal NorthRXM2SxD                  : t_axi4m2s                                          := C_NO_AXI4_M2S;
+    signal NorthTXM2SxD                  : t_axi4m2s                                          := C_NO_AXI4_M2S;
+    signal NorthTXS2MxD                  : t_axi4s2m                                          := C_NO_AXI4_S2M;
+    signal EastRXM2SxD                   : t_axi4m2s                                          := C_NO_AXI4_M2S;
+    signal EastTXM2SxD                   : t_axi4m2s                                          := C_NO_AXI4_M2S;
+    signal EastTXS2MxD                   : t_axi4s2m                                          := C_NO_AXI4_S2M;
+    signal SouthRXM2SxD                  : t_axi4m2s                                          := C_NO_AXI4_M2S;
+    signal SouthTXM2SxD                  : t_axi4m2s                                          := C_NO_AXI4_M2S;
+    signal SouthTXS2MxD                  : t_axi4s2m                                          := C_NO_AXI4_S2M;
+    signal WestRXM2SxD                   : t_axi4m2s                                          := C_NO_AXI4_M2S;
+    signal WestTXM2SxD                   : t_axi4m2s                                          := C_NO_AXI4_M2S;
+    signal WestTXS2MxD                   : t_axi4s2m                                          := C_NO_AXI4_S2M;
+    signal NorthRXfromPhyTXfromFifoM2SxD : t_axi4m2s                                          := C_NO_AXI4_M2S;
+    signal NorthRXfromPhyTXfromFifoS2MxD : t_axi4s2m                                          := C_NO_AXI4_S2M;
+    signal EastRXfromPhyTXfromFifoM2SxD  : t_axi4m2s                                          := C_NO_AXI4_M2S;
+    signal EastRXfromPhyTXfromFifoS2MxD  : t_axi4s2m                                          := C_NO_AXI4_S2M;
+    signal SouthRXfromPhyTXfromFifoM2SxD : t_axi4m2s                                          := C_NO_AXI4_M2S;
+    signal SouthRXfromPhyTXfromFifoS2MxD : t_axi4s2m                                          := C_NO_AXI4_S2M;
+    signal WestRXfromPhyTXfromFifoM2SxD  : t_axi4m2s                                          := C_NO_AXI4_M2S;
+    signal WestRXfromPhyTXfromFifoS2MxD  : t_axi4s2m                                          := C_NO_AXI4_S2M;
+    signal NorthRXFromFifoS2MxD          : t_axi4s2m                                          := C_NO_AXI4_S2M;
+    signal EastRXFromFifoS2MxD           : t_axi4s2m                                          := C_NO_AXI4_S2M;
+    signal SouthRXFromFifoS2MxD          : t_axi4s2m                                          := C_NO_AXI4_S2M;
+    signal WestRXFromFifoS2MxD           : t_axi4s2m                                          := C_NO_AXI4_S2M;
+    signal NorthRXUFCM2SxD               : t_axi4ufcm2s_rx                                    := C_NO_AXI4_UFC_M2S_RX;
+    signal NorthTXUFCM2SxD               : t_axi4ufcm2s_tx                                    := C_NO_AXI4_UFC_M2S_TX;
+    signal NorthTXUFCS2MxD               : t_axi4ufcs2m_tx                                    := C_NO_AXI4_UFC_S2M_TX;
+    signal EastRXUFCM2SxD                : t_axi4ufcm2s_rx                                    := C_NO_AXI4_UFC_M2S_RX;
+    signal EastTXUFCM2SxD                : t_axi4ufcm2s_tx                                    := C_NO_AXI4_UFC_M2S_TX;
+    signal EastTXUFCS2MxD                : t_axi4ufcs2m_tx                                    := C_NO_AXI4_UFC_S2M_TX;
+    signal SouthRXUFCM2SxD               : t_axi4ufcm2s_rx                                    := C_NO_AXI4_UFC_M2S_RX;
+    signal SouthTXUFCM2SxD               : t_axi4ufcm2s_tx                                    := C_NO_AXI4_UFC_M2S_TX;
+    signal SouthTXUFCS2MxD               : t_axi4ufcs2m_tx                                    := C_NO_AXI4_UFC_S2M_TX;
+    signal WestRXUFCM2SxD                : t_axi4ufcm2s_rx                                    := C_NO_AXI4_UFC_M2S_RX;
+    signal WestTXUFCM2SxD                : t_axi4ufcm2s_tx                                    := C_NO_AXI4_UFC_M2S_TX;
+    signal WestTXUFCS2MxD                : t_axi4ufcs2m_tx                                    := C_NO_AXI4_UFC_S2M_TX;
+    signal NorthRXNFCM2SxD               : t_axi4nfcm2s                                       := C_NO_AXI4_NFC_M2S;
+    signal NorthTXNFCM2SxD               : t_axi4nfcm2s                                       := C_NO_AXI4_NFC_M2S;
+    signal NorthTXNFCS2MxD               : t_axi4nfcs2m                                       := C_NO_AXI4_NFC_S2M;
+    signal EastRXNFCM2SxD                : t_axi4nfcm2s                                       := C_NO_AXI4_NFC_M2S;
+    signal EastTXNFCM2SxD                : t_axi4nfcm2s                                       := C_NO_AXI4_NFC_M2S;
+    signal EastTXNFCS2MxD                : t_axi4nfcs2m                                       := C_NO_AXI4_NFC_S2M;
+    signal SouthRXNFCM2SxD               : t_axi4nfcm2s                                       := C_NO_AXI4_NFC_M2S;
+    signal SouthTXNFCM2SxD               : t_axi4nfcm2s                                       := C_NO_AXI4_NFC_M2S;
+    signal SouthTXNFCS2MxD               : t_axi4nfcs2m                                       := C_NO_AXI4_NFC_S2M;
+    signal WestRXNFCM2SxD                : t_axi4nfcm2s                                       := C_NO_AXI4_NFC_M2S;
+    signal WestTXNFCM2SxD                : t_axi4nfcm2s                                       := C_NO_AXI4_NFC_M2S;
+    signal WestTXNFCS2MxD                : t_axi4nfcs2m                                       := C_NO_AXI4_NFC_S2M;
+    signal AuroraCtrlxD                  : t_aurora_control                                   := C_AURORA_NO_CONTROL;
+    signal AuroraStatusxD                : t_aurora_status                                    := C_AURORA_NO_STATUS;
+    signal AuroraDRPM2SxD                : t_drpm2s_vector((C_NB_GTP_CORE - 1) downto 0)      := (others => C_NO_DRP_M2S);
+    signal AuroraDRPS2MxD                : t_drps2m_vector((C_NB_GTP_CORE - 1) downto 0)      := (others => C_NO_DRP_S2M);
+    signal NorthFifoStatusxD             : t_axi4fifo_status                                  := C_NO_AXI4_FIFO_STATUS;
+    signal EastFifoStatusxD              : t_axi4fifo_status                                  := C_NO_AXI4_FIFO_STATUS;
+    signal SouthFifoStatusxD             : t_axi4fifo_status                                  := C_NO_AXI4_FIFO_STATUS;
+    signal WestFifoStatusxD              : t_axi4fifo_status                                  := C_NO_AXI4_FIFO_STATUS;
+    -- Scalp Axi Lite interface and IRQ
+    signal InterruptxS                   : std_ulogic                                         := '0';
+    signal RdAddrxD                      : std_ulogic_vector((C_AXI_ADDR_SIZE - 1) downto 0)  := (others => '0');
+    signal RdDataxD                      : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0');
+    signal RdValidxS                     : std_ulogic                                         := '0';
+    signal WrAddrxD                      : std_ulogic_vector((C_AXI_ADDR_SIZE - 1) downto 0)  := (others => '0');
+    signal WrDataxD                      : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0');
+    signal WrValidxS                     : std_ulogic                                         := '0';
+    -- Zynq Reg Bank
+    type t_status_send_word is (E_IDLE, E_SEND);
+
+    signal NorthStatusSendWordxDN : t_status_send_word                                 := E_IDLE;
+    signal NorthStatusSendWordxDP : t_status_send_word                                 := E_IDLE;
+    signal EastStatusSendWordxDN  : t_status_send_word                                 := E_IDLE;
+    signal EastStatusSendWordxDP  : t_status_send_word                                 := E_IDLE;
+    signal SouthStatusSendWordxDN : t_status_send_word                                 := E_IDLE;
+    signal SouthStatusSendWordxDP : t_status_send_word                                 := E_IDLE;
+    signal WestStatusSendWordxDN  : t_status_send_word                                 := E_IDLE;
+    signal WestStatusSendWordxDP  : t_status_send_word                                 := E_IDLE;
+    --
+    signal NorthNativeSlavexD     : t_native_fifo_slave;
+    signal NorthNativeMasterxD    : t_native_fifo_master;
+    signal EastNativeSlavexD      : t_native_fifo_slave;
+    signal EastNativeMasterxD     : t_native_fifo_master;
+    signal SouthNativeSlavexD     : t_native_fifo_slave;
+    signal SouthNativeMasterxD    : t_native_fifo_master;
+    signal WestNativeSlavexD      : t_native_fifo_slave;
+    signal WestNativeMasterxD     : t_native_fifo_master;
+    --
+    -- signal InterruptRegPortxDN    : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0');
+    -- signal InterruptRegPortxDP    : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0');
+    -- North
+    signal NorthStatusRegPortxDN  : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0');
+    signal NorthStatusRegPortxDP  : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0');
+    signal NorthCtrlRegPortxDN    : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0');
+    signal NorthCtrlRegPortxDP    : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0');
+    signal NorthWrDataRegPortxDN  : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0');
+    signal NorthWrDataRegPortxDP  : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0');
+    -- East
+    signal EastStatusRegPortxDN   : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0');
+    signal EastStatusRegPortxDP   : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0');
+    signal EastCtrlRegPortxDN     : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0');
+    signal EastCtrlRegPortxDP     : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0');
+    signal EastWrDataRegPortxDN   : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0');
+    signal EastWrDataRegPortxDP   : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0');
+    -- South
+    signal SouthStatusRegPortxDN  : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0');
+    signal SouthStatusRegPortxDP  : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0');
+    signal SouthCtrlRegPortxDN    : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0');
+    signal SouthCtrlRegPortxDP    : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0');
+    signal SouthWrDataRegPortxDN  : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0');
+    signal SouthWrDataRegPortxDP  : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0');
+    -- West
+    signal WestStatusRegPortxDN   : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0');
+    signal WestStatusRegPortxDP   : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0');
+    signal WestCtrlRegPortxDN     : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0');
+    signal WestCtrlRegPortxDP     : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0');
+    signal WestWrDataRegPortxDN   : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0');
+    signal WestWrDataRegPortxDP   : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0');
 
     -- Attributes
     attribute mark_debug                            : string;
@@ -474,7 +534,15 @@ begin
                 Spi1SSxSO           => Pll2V5LEuWirexSO,
                 Spi1SclkxCO         => Pll2V5ClkuWirexCO,
                 -- MIO
-                FIXED_IO_mio        => MIOxDIO);
+                FIXED_IO_mio        => MIOxDIO,
+                -- Scalp Axi Lite interface and IRQ
+                InterruptxSI        => InterruptxS,
+                RdAddrxDO           => RdAddrxD,
+                RdDataxDI           => RdDataxD,
+                RdValidxSO          => RdValidxS,
+                WrAddrxDO           => WrAddrxD,
+                WrDataxDO           => WrDataxD,
+                WrValidxSO          => WrValidxS);
 
     end block ProcessingSystemxB;
 
@@ -1014,6 +1082,353 @@ begin
 
         end block GTPhyxB;
 
+        ZynqRegBankxB : block is
+        begin  -- block ZynqRegBankxB
+
+
+            RegBankxB : block is
+            begin  -- block RegBankxB
+
+                WriteRegPortxP : process (EastCtrlRegPortxDP,
+                                          EastWrDataRegPortxDP,
+                                          NorthCtrlRegPortxDP,
+                                          NorthWrDataRegPortxDP,
+                                          SouthCtrlRegPortxDP,
+                                          SouthWrDataRegPortxDP,
+                                          WestCtrlRegPortxDP,
+                                          WestWrDataRegPortxDP, WrAddrxD,
+                                          WrDataxD, WrValidxS) is
+                begin  -- process WriteRegPortxP
+                    -- North                    
+                    NorthCtrlRegPortxDN   <= NorthCtrlRegPortxDP;
+                    NorthWrDataRegPortxDN <= NorthWrDataRegPortxDP;
+                    -- East
+                    EastCtrlRegPortxDN    <= EastCtrlRegPortxDP;
+                    EastWrDataRegPortxDN  <= EastWrDataRegPortxDP;
+                    -- South
+                    SouthCtrlRegPortxDN   <= SouthCtrlRegPortxDP;
+                    SouthWrDataRegPortxDN <= SouthWrDataRegPortxDP;
+                    -- West
+                    WestCtrlRegPortxDN    <= WestCtrlRegPortxDP;
+                    WestWrDataRegPortxDN  <= WestWrDataRegPortxDP;
+
+                    if WrValidxS = '1' then
+                        case WrAddrxD is
+                            -- Ctrl
+                            -- North
+                            when x"000" => NorthCtrlRegPortxDN   <= WrDataxD;
+                            when x"004" => NorthCtrlRegPortxDN   <= NorthCtrlRegPortxDP or WrDataxD;
+                            when x"008" => NorthCtrlRegPortxDN   <= NorthCtrlRegPortxDP and not WrDataxD;
+                            -- East
+                            when x"00c" => EastCtrlRegPortxDN    <= WrDataxD;
+                            when x"010" => EastCtrlRegPortxDN    <= EastCtrlRegPortxDP or WrDataxD;
+                            when x"014" => EastCtrlRegPortxDN    <= EastCtrlRegPortxDP and not WrDataxD;
+                            -- South
+                            when x"018" => SouthCtrlRegPortxDN   <= WrDataxD;
+                            when x"01c" => SouthCtrlRegPortxDN   <= SouthCtrlRegPortxDP or WrDataxD;
+                            when x"020" => SouthCtrlRegPortxDN   <= SouthCtrlRegPortxDP and not WrDataxD;
+                            -- East
+                            when x"024" => WestCtrlRegPortxDN    <= WrDataxD;
+                            when x"028" => WestCtrlRegPortxDN    <= WestCtrlRegPortxDP or WrDataxD;
+                            when x"02c" => WestCtrlRegPortxDN    <= WestCtrlRegPortxDP and not WrDataxD;
+                            -- Data
+                            -- North
+                            when x"030" => NorthWrDataRegPortxDN <= WrDataxD;
+                            -- East
+                            when x"034" => EastWrDataRegPortxDN  <= WrDataxD;
+                            -- South
+                            when x"038" => SouthWrDataRegPortxDN <= WrDataxD;
+                            -- West
+                            when x"03c" => WestWrDataRegPortxDN  <= WrDataxD;
+                            when others => null;
+                        end case;
+                    end if;
+                end process WriteRegPortxP;
+
+                ReadRegPortxP : process (PSSysClkxC, PSSysResetxR) is
+                begin  -- process ReadRegPortxP
+                    if PSSysResetxR = '1' then
+                        RdDataxD <= (others => '0');
+                    elsif rising_edge(PSSysClkxC) then
+                        RdDataxD <= (others => '0');
+
+                        if RdValidxS = '1' then
+                            case RdAddrxD is
+                                when x"000" => RdDataxD <= NorthCtrlRegPortxDP;
+                                when x"00C" => RdDataxD <= EastCtrlRegPortxDP;
+                                when x"018" => RdDataxD <= SouthCtrlRegPortxDP;
+                                when x"024" => RdDataxD <= WestCtrlRegPortxDP;
+                                when x"030" => RdDataxD <= NorthWrDataRegPortxDP;
+                                when x"034" => RdDataxD <= EastWrDataRegPortxDP;
+                                when x"038" => RdDataxD <= SouthWrDataRegPortxDP;
+                                when x"03c" => RdDataxD <= WestWrDataRegPortxDP;
+                                when x"040" => RdDataxD <= NorthStatusRegPortxDP;
+                                when x"044" => RdDataxD <= EastStatusRegPortxDP;
+                                when x"048" => RdDataxD <= SouthStatusRegPortxDP;
+                                when x"04c" => RdDataxD <= WestStatusRegPortxDP;
+                                when others => RdDataxD <= (others => '0');
+                            end case;
+                        end if;
+                    end if;
+                end process ReadRegPortxP;
+
+                RegBankxP : process (PSSysClkxC, PSSysResetxR) is
+                begin  -- process RegBankxP
+                    if PSSysResetxR = '1' then
+                        -- North
+                        NorthStatusRegPortxDP <= (others => '0');
+                        NorthCtrlRegPortxDP   <= (others => '0');
+                        NorthWrDataRegPortxDP <= (others => '0');
+                        -- East
+                        EastStatusRegPortxDP  <= (others => '0');
+                        EastCtrlRegPortxDP    <= (others => '0');
+                        EastWrDataRegPortxDP  <= (others => '0');
+                        -- South
+                        SouthStatusRegPortxDP <= (others => '0');
+                        SouthCtrlRegPortxDP   <= (others => '0');
+                        SouthWrDataRegPortxDP <= (others => '0');
+                        -- West
+                        WestStatusRegPortxDP  <= (others => '0');
+                        WestCtrlRegPortxDP    <= (others => '0');
+                        WestWrDataRegPortxDP  <= (others => '0');
+                    elsif rising_edge(PSSysClkxC) then
+                        -- North
+                        NorthStatusRegPortxDP <= NorthStatusRegPortxDN;
+                        NorthCtrlRegPortxDP   <= NorthCtrlRegPortxDN;
+                        NorthWrDataRegPortxDP <= NorthWrDataRegPortxDN;
+                        -- East
+                        EastStatusRegPortxDP  <= EastStatusRegPortxDN;
+                        EastCtrlRegPortxDP    <= EastCtrlRegPortxDN;
+                        EastWrDataRegPortxDP  <= EastWrDataRegPortxDN;
+                        -- South
+                        SouthStatusRegPortxDP <= SouthStatusRegPortxDN;
+                        SouthCtrlRegPortxDP   <= SouthCtrlRegPortxDN;
+                        SouthWrDataRegPortxDP <= SouthWrDataRegPortxDN;
+                        -- West
+                        WestStatusRegPortxDP  <= WestStatusRegPortxDN;
+                        WestCtrlRegPortxDP    <= WestCtrlRegPortxDN;
+                        WestWrDataRegPortxDP  <= WestWrDataRegPortxDN;
+                    end if;
+                end process RegBankxP;
+
+            end block RegBankxB;
+
+            TxFifoxB : block is
+            begin  -- block TxFifoxB
+
+                NorthWrDataxAS   : NorthNativeSlavexD.DataxD <= NorthWrDataRegPortxDP;
+                EastWrDataxAS    : EastNativeSlavexD.DataxD  <= EastWrDataRegPortxDP;
+                SouthWrDataxAS   : SouthNativeSlavexD.DataxD <= SouthWrDataRegPortxDN;
+                WestWrDataRegxAS : WestNativeSlavexD.DataxD  <= WestWrDataRegPortxDN;
+                NorthWrEnxAS     : NorthNativeSlavexD.WrEnxS <= NorthCtrlRegPortxDP(0);
+                EastWrEnxAS      : EastNativeSlavexD.WrEnxS  <= EastCtrlRegPortxDP(0);
+                SouthWrEnxAS     : SouthNativeSlavexD.WrEnxS <= SouthCtrlRegPortxDP(0);
+                WestWrEnxAS      : EastNativeSlavexD.WrEnxS  <= EastCtrlRegPortxDP(0);
+                NorthStatusRegPortxAS : NorthStatusRegPortxDN <= (0      => NorthNativeMasterxD.FullxS,
+                                                                  1      => NorthNativeMasterxD.EmptyxS,
+                                                                  2      => NorthNativeMasterxD.AlmostFullxS,
+                                                                  3      => NorthNativeMasterxD.AlmostEmptyxS,
+                                                                  4      => NorthNativeMasterxD.WrRstBusyxS,
+                                                                  5      => NorthNativeMasterxD.RdRstBusyxS,
+                                                                  others => '0');
+                EastStatusRegPortxAS : EastStatusRegPortxDN <= (0      => EastNativeMasterxD.FullxS,
+                                                                1      => EastNativeMasterxD.EmptyxS,
+                                                                2      => EastNativeMasterxD.AlmostFullxS,
+                                                                3      => EastNativeMasterxD.AlmostEmptyxS,
+                                                                4      => EastNativeMasterxD.WrRstBusyxS,
+                                                                5      => EastNativeMasterxD.RdRstBusyxS,
+                                                                others => '0');
+                SouthStatusRegPortxAS : SouthStatusRegPortxDN <= (0      => SouthNativeMasterxD.FullxS,
+                                                                  1      => SouthNativeMasterxD.EmptyxS,
+                                                                  2      => SouthNativeMasterxD.AlmostFullxS,
+                                                                  3      => SouthNativeMasterxD.AlmostEmptyxS,
+                                                                  4      => SouthNativeMasterxD.WrRstBusyxS,
+                                                                  5      => SouthNativeMasterxD.RdRstBusyxS,
+                                                                  others => '0');
+                WestStatusRegPortxAS : WestStatusRegPortxDN <= (0      => WestNativeMasterxD.FullxS,
+                                                                1      => WestNativeMasterxD.EmptyxS,
+                                                                2      => WestNativeMasterxD.AlmostFullxS,
+                                                                3      => WestNativeMasterxD.AlmostEmptyxS,
+                                                                4      => WestNativeMasterxD.WrRstBusyxS,
+                                                                5      => WestNativeMasterxD.RdRstBusyxS,
+                                                                others => '0');
+
+                UpdateRegxP : process (AuroraClkMasterxC.PllNotLockedxS,
+                                       AuroraClkMasterxC.UserClkxC) is
+                begin  -- process UpdateRegxP
+                    if not AuroraClkMasterxC.PllNotLockedxS then
+                        NorthStatusSendWordxDP <= E_IDLE;
+                        EastStatusSendWordxDP  <= E_IDLE;
+                        SouthStatusSendWordxDP <= E_IDLE;
+                        WestStatusSendWordxDP  <= E_IDLE;
+                    elsif rising_edge(AuroraClkMasterxC.UserClkxC) then
+                        NorthStatusSendWordxDP <= NorthStatusSendWordxDN;
+                        EastStatusSendWordxDP  <= EastStatusSendWordxDN;
+                        SouthStatusSendWordxDP <= SouthStatusSendWordxDN;
+                        WestStatusSendWordxDP  <= WestStatusSendWordxDN;
+                    end if;
+                end process UpdateRegxP;
+
+                NorthSendWordxP : process (NorthNativeMasterxD.DataxD,
+                                           NorthNativeMasterxD.EmptyxS,
+                                           NorthStatusSendWordxDP,
+                                           NorthTXS2MxD.ReadyxS) is
+                begin  -- process NorthSendWordxP
+                    NorthTXM2SxD.DataxD       <= (others => '0');
+                    NorthTXM2SxD.KeepxD       <= (others => '1');
+                    NorthTXM2SxD.LastxS       <= '0';
+                    NorthTXM2SxD.ValidxS      <= '0';
+                    NorthNativeSlavexD.RdEnxS <= '0';
+                    NorthStatusSendWordxDN    <= NorthStatusSendWordxDP;
+
+                    case NorthStatusSendWordxDP is
+                        when E_IDLE =>
+
+                                if (NorthNativeMasterxD.EmptyxS = '0') and
+                                    (NorthTXS2MxD.ReadyxS = '1') then
+                                    NorthTXM2SxD.DataxD       <= NorthNativeMasterxD.DataxD;
+                                    NorthTXM2SxD.LastxS       <= '1';
+                                    NorthTXM2SxD.ValidxS      <= '1';
+                                    NorthNativeSlavexD.RdEnxS <= '1';
+                                    NorthStatusSendWordxDN    <= E_SEND;
+                                end if;
+
+                        when E_SEND =>
+                                NorthStatusSendWordxDN <= E_IDLE;
+
+                        when others => null;
+                    end case;
+                end process NorthSendWordxP;
+
+                EastSendWordxP : process (EastNativeMasterxD.DataxD,
+                                          EastNativeMasterxD.EmptyxS,
+                                          EastStatusSendWordxDP,
+                                          EastTXS2MxD.ReadyxS) is
+                begin  -- process EastSendWordxP
+                    EastTXM2SxD.DataxD       <= (others => '0');
+                    EastTXM2SxD.KeepxD       <= (others => '1');
+                    EastTXM2SxD.LastxS       <= '0';
+                    EastTXM2SxD.ValidxS      <= '0';
+                    EastNativeSlavexD.RdEnxS <= '0';
+                    EastStatusSendWordxDN    <= EastStatusSendWordxDP;
+
+                    case EastStatusSendWordxDP is
+                        when E_IDLE =>
+
+                                if (EastNativeMasterxD.EmptyxS = '0') and
+                                    (EastTXS2MxD.ReadyxS = '1') then
+                                    EastTXM2SxD.DataxD       <= EastNativeMasterxD.DataxD;
+                                    EastTXM2SxD.LastxS       <= '1';
+                                    EastTXM2SxD.ValidxS      <= '1';
+                                    EastNativeSlavexD.RdEnxS <= '1';
+                                    EastStatusSendWordxDN    <= E_SEND;
+                                end if;
+
+                        when E_SEND =>
+                                EastStatusSendWordxDN <= E_IDLE;
+
+                        when others => null;
+                    end case;
+                end process EastSendWordxP;
+
+                SouthSendWordxP : process (SouthNativeMasterxD.DataxD,
+                                           SouthNativeMasterxD.EmptyxS,
+                                           SouthStatusSendWordxDP,
+                                           SouthTXS2MxD.ReadyxS) is
+                begin  -- process SouthSendWordxP
+                    SouthTXM2SxD.DataxD       <= (others => '0');
+                    SouthTXM2SxD.KeepxD       <= (others => '1');
+                    SouthTXM2SxD.LastxS       <= '0';
+                    SouthTXM2SxD.ValidxS      <= '0';
+                    SouthNativeSlavexD.RdEnxS <= '0';
+                    SouthStatusSendWordxDN    <= SouthStatusSendWordxDP;
+
+                    case SouthStatusSendWordxDP is
+                        when E_IDLE =>
+
+                                if (SouthNativeMasterxD.EmptyxS = '0') and
+                                    (SouthTXS2MxD.ReadyxS = '1') then
+                                    SouthTXM2SxD.DataxD       <= SouthNativeMasterxD.DataxD;
+                                    SouthTXM2SxD.LastxS       <= '1';
+                                    SouthTXM2SxD.ValidxS      <= '1';
+                                    SouthNativeSlavexD.RdEnxS <= '1';
+                                    SouthStatusSendWordxDN    <= E_SEND;
+                                end if;
+
+                        when E_SEND =>
+                                SouthStatusSendWordxDN <= E_IDLE;
+
+                        when others => null;
+                    end case;
+                end process SouthSendWordxP;
+
+                WestSendWordxP : process (WestNativeMasterxD.DataxD,
+                                          WestNativeMasterxD.EmptyxS,
+                                          WestStatusSendWordxDP,
+                                          WestTXS2MxD.ReadyxS) is
+                begin  -- process WestSendWordxP
+                    WestTXM2SxD.DataxD       <= (others => '0');
+                    WestTXM2SxD.KeepxD       <= (others => '1');
+                    WestTXM2SxD.LastxS       <= '0';
+                    WestTXM2SxD.ValidxS      <= '0';
+                    WestNativeSlavexD.RdEnxS <= '0';
+                    WestStatusSendWordxDN    <= WestStatusSendWordxDP;
+
+                    case WestStatusSendWordxDP is
+                        when E_IDLE =>
+
+                                if (WestNativeMasterxD.EmptyxS = '0') and
+                                    (WestTXS2MxD.ReadyxS = '1') then
+                                    WestTXM2SxD.DataxD       <= WestNativeMasterxD.DataxD;
+                                    WestTXM2SxD.LastxS       <= '1';
+                                    WestTXM2SxD.ValidxS      <= '1';
+                                    WestNativeSlavexD.RdEnxS <= '1';
+                                    WestStatusSendWordxDN    <= E_SEND;
+                                end if;
+
+                        when E_SEND =>
+                                WestStatusSendWordxDN <= E_IDLE;
+
+                        when others => null;
+                    end case;
+                end process WestSendWordxP;
+
+                NorthFifoxI : entity work.scalp_packet_fifo_wrapper
+                    port map (
+                        RdClkxCI        => AuroraClkMasterxC.UserClkxC,
+                        WrClkxCI        => PSSysClkxC,
+                        ResetxRI        => PSSysResetxR,
+                        NativeSlavexDI  => NorthNativeSlavexD,
+                        NativeMasterxDO => NorthNativeMasterxD);
+
+                EastFifoxI : entity work.scalp_packet_fifo_wrapper
+                    port map (
+                        RdClkxCI        => AuroraClkMasterxC.UserClkxC,
+                        WrClkxCI        => PSSysClkxC,
+                        ResetxRI        => PSSysResetxR,
+                        NativeSlavexDI  => EastNativeSlavexD,
+                        NativeMasterxDO => EastNativeMasterxD);
+
+                SouthFifoxI : entity work.scalp_packet_fifo_wrapper
+                    port map (
+                        RdClkxCI        => AuroraClkMasterxC.UserClkxC,
+                        WrClkxCI        => PSSysClkxC,
+                        ResetxRI        => PSSysResetxR,
+                        NativeSlavexDI  => SouthNativeSlavexD,
+                        NativeMasterxDO => SouthNativeMasterxD);
+
+                WestFifoxI : entity work.scalp_packet_fifo_wrapper
+                    port map (
+                        RdClkxCI        => AuroraClkMasterxC.UserClkxC,
+                        WrClkxCI        => PSSysClkxC,
+                        ResetxRI        => PSSysResetxR,
+                        NativeSlavexDI  => WestNativeSlavexD,
+                        NativeMasterxDO => WestNativeMasterxD);
+
+            end block TxFifoxB;
+
+        end block ZynqRegBankxB;
+
         DebugxB : block is
 
             signal CntRstxR      : std_ulogic                     := '0';
@@ -1022,34 +1437,34 @@ begin
 
         begin  -- block DebugxB
 
-            ClkEnxAS        : ClkEnxS              <= not AuroraClkMasterxC.PllNotLockedxS;
-            -- North
-            NorthTXDataxAS  : NorthTXM2SxD.DataxD  <= DataCounterxD;
-            NorthTXKeepxAS  : NorthTXM2SxD.KeepxD  <= (others => '1');
-            NorthTXLastxAS  : NorthTXM2SxD.LastxS  <= '0';
-            NorthTXValidxAS : NorthTXM2SxD.ValidxS <= not CntRstxR;
-            -- East            
-            EastTXDataxAS   : EastTXM2SxD.DataxD   <= DataCounterxD;
-            EastTXKeepxAS   : EastTXM2SxD.KeepxD   <= (others => '1');
-            EastTXLastxAS   : EastTXM2SxD.LastxS   <= '0';
-            EastTXValidxAS  : EastTXM2SxD.ValidxS  <= not CntRstxR;
-            -- South
-            SouthTXDataxAS  : SouthTXM2SxD.DataxD  <= DataCounterxD;
-            SouthTXKeepxAS  : SouthTXM2SxD.KeepxD  <= (others => '1');
-            SouthTXLastxAS  : SouthTXM2SxD.LastxS  <= '0';
-            SouthTXValidxAS : SouthTXM2SxD.ValidxS <= not CntRstxR;
-            -- West
-            WestTXDataxAS   : WestTXM2SxD.DataxD   <= DataCounterxD;
-            WestTXKeepxAS   : WestTXM2SxD.KeepxD   <= (others => '1');
-            WestTXLastxAS   : WestTXM2SxD.LastxS   <= '0';
-            WestTXValidxAS  : WestTXM2SxD.ValidxS  <= not CntRstxR;
-
-            DataCounterxI : entity work.data_counter
-                port map (
-                    clk  => AuroraClkMasterxC.UserClkxC,
-                    ce   => ClkEnxS,
-                    sclr => CntRstxR,
-                    q    => DataCounterxD);
+            -- ClkEnxAS        : ClkEnxS              <= not AuroraClkMasterxC.PllNotLockedxS;
+            -- -- North
+            -- NorthTXDataxAS  : NorthTXM2SxD.DataxD  <= DataCounterxD;
+            -- NorthTXKeepxAS  : NorthTXM2SxD.KeepxD  <= (others => '1');
+            -- NorthTXLastxAS  : NorthTXM2SxD.LastxS  <= '0';
+            -- NorthTXValidxAS : NorthTXM2SxD.ValidxS <= not CntRstxR;
+            -- -- East            
+            -- EastTXDataxAS   : EastTXM2SxD.DataxD   <= DataCounterxD;
+            -- EastTXKeepxAS   : EastTXM2SxD.KeepxD   <= (others => '1');
+            -- EastTXLastxAS   : EastTXM2SxD.LastxS   <= '0';
+            -- EastTXValidxAS  : EastTXM2SxD.ValidxS  <= not CntRstxR;
+            -- -- South
+            -- SouthTXDataxAS  : SouthTXM2SxD.DataxD  <= DataCounterxD;
+            -- SouthTXKeepxAS  : SouthTXM2SxD.KeepxD  <= (others => '1');
+            -- SouthTXLastxAS  : SouthTXM2SxD.LastxS  <= '0';
+            -- SouthTXValidxAS : SouthTXM2SxD.ValidxS <= not CntRstxR;
+            -- -- West
+            -- WestTXDataxAS   : WestTXM2SxD.DataxD   <= DataCounterxD;
+            -- WestTXKeepxAS   : WestTXM2SxD.KeepxD   <= (others => '1');
+            -- WestTXLastxAS   : WestTXM2SxD.LastxS   <= '0';
+            -- WestTXValidxAS  : WestTXM2SxD.ValidxS  <= not CntRstxR;
+
+            -- DataCounterxI : entity work.data_counter
+            --     port map (
+            --         clk  => AuroraClkMasterxC.UserClkxC,
+            --         ce   => ClkEnxS,
+            --         sclr => CntRstxR,
+            --         q    => DataCounterxD);
 
             VioAxiCntCtrlxI : entity work.vio_axi_cnt_ctrl
                 port map (