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 9bc9bba4ed461ba4dfe3e59f007b5baf62a3a071..7d608d02cd8553f297e9d6e792c2dfd38f7204e5 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-10-13 13:10:02
+# Last update: 2020-11-07 09:14:14
 #
 ##################################################################################
 
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 a54cdbdbb40cad756113644bafcd723035b46089..b8f05723478981732e586ee9cfe6583b77802317 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-10-13 13:10:02
+# Last update: 2020-11-07 09:14:14
 #
 ##################################################################################
 
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 2e61ff48014c713df71ccd053dfb1c45bf3b8e5e..76733a1ea5f1cc584c47ea1d1aa9f849ee03b0f2 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-10-13 13:10:02
+# Last update: 2020-11-07 09:14:14
 #
 ##################################################################################
 
@@ -65,15 +65,21 @@ if {$PRJ_TYPE == "DESIGN_PRJ_TYPE"} {
 	# add the constraints file (XDC)
 	add_files -fileset constrs_1 -norecurse $src_dir/constrs/debug.xdc
 	set_property is_enabled true [get_files $src_dir/constrs/debug.xdc]
-	add_files -fileset constrs_1 -norecurse  $src_dir/constrs/ibert_constraints.xdc
+add_files -fileset constrs_1 -norecurse  $src_dir/constrs/ibert_constraints.xdc
 	set_property is_enabled false [get_files $src_dir/constrs/ibert_constraints.xdc]
-	add_files -fileset constrs_1 -norecurse $src_dir/constrs/timing_constraints.xdc
+add_files -fileset constrs_1 -norecurse $src_dir/constrs/timing_constraints.xdc
 	set_property is_enabled true [get_files $src_dir/constrs/timing_constraints.xdc]
-	add_files -fileset constrs_1 -norecurse $src_dir/constrs/scalp_firmware.xdc
+add_files -fileset constrs_1 -norecurse $src_dir/constrs/scalp_firmware.xdc
 	set_property is_enabled true [get_files $src_dir/constrs/scalp_firmware.xdc]
 
-	#add_files -fileset constrs_1 -norecurse  $src_dir/constrs/${prj_name}.xdc
 	# add IPs source file
+	set vhdl_ips_file_list [findFiles ${ip_dir}/scalp_aurora_phy_rx_fifo/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 {
@@ -81,6 +87,7 @@ if {$PRJ_TYPE == "DESIGN_PRJ_TYPE"} {
 		print_status "VHDL 2008 mode configured for the file $j" "OK"
 		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_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
@@ -153,29 +160,6 @@ foreach j $vhdl_sim_file_list {
 print_status "VHDL 2008 mode configured for testbench sources" "OK"
 
 # Add packages sources
-if {$PRJ_TYPE == "DESIGN_PRJ_TYPE"} {
-	set vhdl_pkg_file_list [findFiles ${PRJ_DIR}/../../../../../packages/hw/aurora_drp_pkg/src/hdl *.vhd]
-	add_files -norecurse $vhdl_pkg_file_list
-	foreach j $vhdl_pkg_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_pkg_file_list [findFiles ${PRJ_DIR}/../../../../../packages/hw/aurora_status_pkg/src/hdl *.vhd]
-	add_files -norecurse $vhdl_pkg_file_list
-	foreach j $vhdl_pkg_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_pkg_file_list [findFiles ${PRJ_DIR}/../../../../../packages/hw/axi4_pkg/src/hdl *.vhd]
-	add_files -norecurse $vhdl_pkg_file_list
-	foreach j $vhdl_pkg_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]
-	}
-} elseif {$PRJ_TYPE == "COMP_PRJ_TYPE"} {
 	set vhdl_pkg_file_list [findFiles ${PRJ_DIR}/../../../../../packages/hw/aurora_drp_pkg/src/hdl *.vhd]
 	add_files -norecurse $vhdl_pkg_file_list
 	foreach j $vhdl_pkg_file_list {
@@ -197,20 +181,10 @@ if {$PRJ_TYPE == "DESIGN_PRJ_TYPE"} {
 		print_status "VHDL 2008 mode configured for the file $j" "OK"
 		set_property is_enabled true [get_files $j]
 	}
-}
 print_status "Add packages sources" "OK"
 print_status "VHDL 2008 mode configured for packages sources" "OK"
 
 # Add SoC wrapper sources files
-if {$PRJ_TYPE == "DESIGN_PRJ_TYPE"} {
-	set vhdl_soc_file_list [findFiles ${PRJ_DIR}/../../../../../soc/hw/scalp_zynqps/src/hdl *.vhd]
-	add_files -norecurse $vhdl_soc_file_list
-	foreach j $vhdl_soc_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]
-	}
-} elseif {$PRJ_TYPE == "COMP_PRJ_TYPE"} {
 	set vhdl_soc_file_list [findFiles ${PRJ_DIR}/../../../../../soc/hw/scalp_zynqps/src/hdl *.vhd]
 	add_files -norecurse $vhdl_soc_file_list
 	foreach j $vhdl_soc_file_list {
@@ -218,7 +192,6 @@ if {$PRJ_TYPE == "DESIGN_PRJ_TYPE"} {
 		print_status "VHDL 2008 mode configured for the file $j" "OK"
 		set_property is_enabled true [get_files $j]
 	}
-}
 print_status "Add SoC wrapper sources" "OK"
 print_status "VHDL 2008 mode configured for SoC wrapper sources" "OK"
 
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 c603ed6d669e53b4f776e867f4fd2441a956ab0f..909d5734b09ed25be42158f1d480839ac8d6e256 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-10-13 13:10:02
+# Last update: 2020-11-07 09:14:14
 #
 ##################################################################################
 
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 aa1d99c074dbfe6391a0fe82a542811956f017cd..a6d1f8bf6c29e7a61bbb57c90c4aca542245f4ad 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-10-13 13:10:02
+# Last update: 2020-11-07 09:14:14
 #
 ##################################################################################
 
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 cea75de4d34d5ca84e7bad16182fc3f597b21450..378e1567c9eb8e4db2daba31a2c6658fe9d0a287 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-10-13 13:10:02
+# Last update: 2020-11-07 09:14:14
 #
 ##################################################################################
 
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 bd726a00e30087802e09ac7704dc5f5d0af135ab..0b38b88c289475ae015e91839c496df2ee2ddc6a 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-10-13 13:10:02
+# Last update: 2020-11-07 09:14:14
 #
 ##################################################################################
 
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 10bf21bc64dbbf764fffa4ece6918cd4070ae6c2..2160b2fdc8e8396bca50286d4ab9658040ac9dbb 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-10-13 13:10:02
+# Last update: 2020-11-07 09:14:14
 #
 ##################################################################################
 
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 0c4f3b4fd7cd790125b522907389d94fb5b7a422..99251d420e50a1f21b00ed6b48e786fac914e8c7 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-10-13 13:10:02
+# Last update: 2020-11-07 09:14:14
 #
 ##################################################################################
 
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 442fe094a95c29872b8a754f91d011267f309992..577b49ef88e7b1c99eefff20ec04d577ce7e1b8f 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-10-13 13:10:02
+# Last update: 2020-11-07 09:14:14
 #
 ##################################################################################
 
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 a31e59d3b1b86ad0762eff4058be900c39843527..28e9e47a4d761d134400956118b6db5891ff5a91 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-10-13 13:10:02
+# Last update: 2020-11-07 09:14:14
 #
 ##################################################################################
 
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 adc47441de30f13d4c3b8b3353ee50e84f364b60..07e5eb037e7f5420f53c67ba75df53f352a0bf22 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-10-13 13:10:02
+# Last update: 2020-11-07 09:14:14
 #
 ##################################################################################
 
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 40aeca5cdfc0ff81cf0e9f6751f3520f752f4a38..82206c5eaceec41fadfcf9d83276045e128d1758 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-10-13 13:10:02
+# Last update: 2020-11-07 09:14:14
 #
 ##################################################################################
 
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 80625ab9d17456394f305d9baa4e1c7540ca80e2..98c24899530d27f9eb0390725486c6a77367a398 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-10-13 13:10:02
+# Last update: 2020-11-07 09:14:14
 #
 ##################################################################################
 
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 42d656f60e0c7f452f552bc14b02844d05982140..e6fb3e933f51f8681f077232529865e2fbd06ee8 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-10-13 13:10:02
+# Last update: 2020-11-07 09:14:14
 #
 ##################################################################################
 
diff --git a/designs/vivado/scalp_firmware/2019.2/lin64/setup.sh b/designs/vivado/scalp_firmware/2019.2/lin64/setup.sh
index b7677afbcad154801e4d09e5283939611374c93e..ac7f44dd6a0c7607282ddd094a73f0d0924ec635 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-10-13 13:10:02
+# Last update: 2020-11-07 09:14:14
 #
 ##################################################################################
 
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 115fb1259c5070990163399c19260aa2a0f8d5b0..eeb0b8388dbcf2fba8aa515c005f858227e87c78 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
@@ -15,7 +15,7 @@
 -- Tool version: 2019.2
 -- Description: scalp_firmware
 --
--- Last update: 2020-10-13
+-- Last update: 2020-11-07
 --
 ---------------------------------------------------------------------------------
 
@@ -316,6 +316,18 @@ architecture arch of scalp_firmware is
             WestRXUFCM2SxDO  : out t_axi4ufcm2s_rx;
             WestTXUFCM2SxDI  : in  t_axi4ufcm2s_tx;
             WestTXUFCS2MxDO  : out t_axi4ufcs2m_tx;
+            NorthRXNFCM2SxDO : out t_axi4nfcm2s;
+            NorthTXNFCM2SxDI : in  t_axi4nfcm2s;
+            NorthTXNFCS2MxDO : out t_axi4nfcs2m;
+            EastRXNFCM2SxDO  : out t_axi4nfcm2s;
+            EastTXNFCM2SxDI  : in  t_axi4nfcm2s;
+            EastTXNFCS2MxDO  : out t_axi4nfcs2m;
+            SouthRXNFCM2SxDO : out t_axi4nfcm2s;
+            SouthTXNFCM2SxDI : in  t_axi4nfcm2s;
+            SouthTXNFCS2mxDO : out t_axi4nfcs2m;
+            WestRXNFCM2SxDO  : out t_axi4nfcm2s;
+            WestTXNFCM2SxDI  : in  t_axi4nfcm2s;
+            WestTXNFCS2MxDO  : out t_axi4nfcs2m;
             AuroraCtrlxDI    : in  t_aurora_control;
             AuroraStatusxDO  : out t_aurora_status;
             AuroraDRPM2SxDI  : in  t_drpm2s_vector((C_NB_GTP_CORE - 1) downto 0);
@@ -325,58 +337,86 @@ 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 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 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 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;
 
     -- Attributes
     attribute mark_debug                            : string;
@@ -596,6 +636,23 @@ begin
                     WestRXUFCM2SxDO  => WestRXUFCM2SxD,
                     WestTXUFCM2SxDI  => WestTXUFCM2SxD,
                     WestTXUFCS2MxDO  => WestTXUFCS2MxD,
+                    -- Axi4 Framing NFC Interface
+                    -- North
+                    NorthRXNFCM2SxDO => NorthRXNFCM2SxD,
+                    NorthTXNFCM2SxDI => NorthTXNFCM2SxD,
+                    NorthTXNFCS2MxDO => NorthTXNFCS2MxD,
+                    -- East
+                    EastRXNFCM2SxDO  => EastRXNFCM2SxD,
+                    EastTXNFCM2SxDI  => EastTXNFCM2SxD,
+                    EastTXNFCS2MxDO  => EastTXNFCS2MxD,
+                    -- South
+                    SouthRXNFCM2SxDO => SouthRXNFCM2SxD,
+                    SouthTXNFCM2SxDI => SouthTXNFCM2SxD,
+                    SouthTXNFCS2mxDO => SouthTXNFCS2mxD,
+                    -- West
+                    WestRXNFCM2SxDO  => WestRXNFCM2SxD,
+                    WestTXNFCM2SxDI  => WestTXNFCM2SxD,
+                    WestTXNFCS2MxDO  => WestTXNFCS2MxD,
                     -- Aurora Ctrl + Status
                     AuroraCtrlxDI    => AuroraCtrlxD,
                     AuroraStatusxDO  => AuroraStatusxD,
@@ -603,6 +660,340 @@ begin
                     AuroraDRPM2SxDI  => (others => C_NO_DRP_M2S),
                     AuroraDRPS2MxDO  => open);
 
+            RXFifoxB : block is
+
+                signal RXFifoRstxRAN : std_ulogic := '0';
+
+            begin  -- block RXFifoxB
+
+                RXFifoRstxAS : RXFifoRstxRAN <= not AuroraClkMasterxC.PllNotLockedxS;
+
+                ScalpAuroraPhyRXFifoxI : entity work.scalp_aurora_phy_rx_fifo
+                    port map (
+                        -- Clocks and reset
+                        RXClkxCI           => AuroraClkMasterxC.UserClkxC,
+                        TXClkxCI           => AuroraClkMasterxC.UserClkxC,
+                        RXRstxRANI         => RXFifoRstxRAN,
+                        -- North
+                        -- Fifo RX Side
+                        NorthRXM2SxDI      => NorthRXM2SxD,
+                        NorthRXS2MxDO      => NorthRXFromFifoS2MxD,
+                        -- Fifo TX Side
+                        NorthTXM2SxDO      => NorthRXfromPhyTXfromFifoM2SxD,
+                        NorthTXS2MxDI      => NorthRXfromPhyTXfromFifoS2MxD,
+                        NorthFifoStatusxDO => NorthFifoStatusxD,
+                        -- East
+                        -- Fifo RX Side
+                        EastRXM2SxDI       => EastRXM2SxD,
+                        EastRXS2MxDO       => EastRXFromFifoS2MxD,
+                        -- Fifo TX Side
+                        EastTXM2SxDO       => EastRXfromPhyTXfromFifoM2SxD,
+                        EastTXS2MxDI       => EastRXfromPhyTXfromFifoS2MxD,
+                        EastFifoStatusxDO  => EastFifoStatusxD,
+                        -- South
+                        -- Fifo RX Side
+                        SouthRXM2SxDI      => SouthRXM2SxD,
+                        SouthRXS2MxDO      => SouthRXFromFifoS2MxD,
+                        -- Fifo TX Side
+                        SouthTXM2SxDO      => SouthRXfromPhyTXfromFifoM2SxD,
+                        SouthTXS2MxDI      => SouthRXfromPhyTXfromFifoS2MxD,
+                        SouthFifoStatusxDO => SouthFifoStatusxD,
+                        -- West
+                        -- Fifo RX Side
+                        WestRXM2SxDI       => WestRXM2SxD,
+                        WestRXS2MxDO       => WestRXFromFifoS2MxD,
+                        -- Fifo TX Side
+                        WestTXM2SxDO       => WestRXfromPhyTXfromFifoM2SxD,
+                        WestTXS2MxDI       => WestRXfromPhyTXfromFifoS2MxD,
+                        WestFifoStatusxDO  => WestFifoStatusxD);
+
+            end block RXFifoxB;
+
+            BackPressurexB : block is
+
+                signal NorthSendXOFFxSN : std_ulogic                                             := '0';
+                signal NorthSendXOFFxSP : std_ulogic                                             := '0';
+                signal EastSendXOFFxSN  : std_ulogic                                             := '0';
+                signal EastSendXOFFxSP  : std_ulogic                                             := '0';
+                signal SouthSendXOFFxSN : std_ulogic                                             := '0';
+                signal SouthSendXOFFxSP : std_ulogic                                             := '0';
+                signal WestSendXOFFxSN  : std_ulogic                                             := '0';
+                signal WestSendXOFFxSP  : std_ulogic                                             := '0';
+                -- North
+                signal NorthNFCStatexDN : t_nfc_states                                           := C_NFC_IDLE;
+                signal NorthNFCStatexDP : t_nfc_states                                           := C_NFC_IDLE;
+                signal NorthNFCDataxDN  : std_ulogic_vector((C_AXI4_NFC_DATA_SIZE - 1) downto 0) := (others => '0');
+                signal NorthNFCDataxDP  : std_ulogic_vector((C_AXI4_NFC_DATA_SIZE - 1) downto 0) := (others => '0');
+                signal NorthNFCValidxSN : std_ulogic                                             := '0';
+                signal NorthNFCValidxSP : std_ulogic                                             := '0';
+                -- East
+                signal EastNFCStatexDN  : t_nfc_states                                           := C_NFC_IDLE;
+                signal EastNFCStatexDP  : t_nfc_states                                           := C_NFC_IDLE;
+                signal EastNFCDataxDN   : std_ulogic_vector((C_AXI4_NFC_DATA_SIZE - 1) downto 0) := (others => '0');
+                signal EastNFCDataxDP   : std_ulogic_vector((C_AXI4_NFC_DATA_SIZE - 1) downto 0) := (others => '0');
+                signal EastNFCValidxSN  : std_ulogic                                             := '0';
+                signal EastNFCValidxSP  : std_ulogic                                             := '0';
+                -- South
+                signal SouthNFCStatexDN : t_nfc_states                                           := C_NFC_IDLE;
+                signal SouthNFCStatexDP : t_nfc_states                                           := C_NFC_IDLE;
+                signal SouthNFCDataxDN  : std_ulogic_vector((C_AXI4_NFC_DATA_SIZE - 1) downto 0) := (others => '0');
+                signal SouthNFCDataxDP  : std_ulogic_vector((C_AXI4_NFC_DATA_SIZE - 1) downto 0) := (others => '0');
+                signal SouthNFCValidxSN : std_ulogic                                             := '0';
+                signal SouthNFCValidxSP : std_ulogic                                             := '0';
+                -- West
+                signal WestNFCStatexDN  : t_nfc_states                                           := C_NFC_IDLE;
+                signal WestNFCStatexDP  : t_nfc_states                                           := C_NFC_IDLE;
+                signal WestNFCDataxDN   : std_ulogic_vector((C_AXI4_NFC_DATA_SIZE - 1) downto 0) := (others => '0');
+                signal WestNFCDataxDP   : std_ulogic_vector((C_AXI4_NFC_DATA_SIZE - 1) downto 0) := (others => '0');
+                signal WestNFCValidxSN  : std_ulogic                                             := '0';
+                signal WestNFCValidxSP  : std_ulogic                                             := '0';
+
+            begin  -- block BackPressurexB
+
+                NorthSendXONxAS : NorthSendXOFFxSN <= '1' when
+                                                      (NorthRXFromFifoS2MxD.ReadyxS = '0') or
+                                                      (NorthFifoStatusxD.ProgFullxS = '1') else
+                                                      '0';
+                EastSendXONxAS : EastSendXOFFxSN <= '1' when
+                                                    (EastRXFromFifoS2MxD.ReadyxS = '0') or
+                                                    (EastFifoStatusxD.ProgFullxS = '1') else
+                                                    '0';
+                SouthSendXONxAS : SouthSendXOFFxSN <= '1' when
+                                                      (SouthRXFromFifoS2MxD.ReadyxS = '0') or
+                                                      (SouthFifoStatusxD.ProgFullxS = '1') else
+                                                      '0';
+                WestSendXONxAS : WestSendXOFFxSN <= '1' when
+                                                    (WestRXFromFifoS2MxD.ReadyxS = '0') or
+                                                    (WestFifoStatusxD.ProgFullxS = '1') else
+                                                    '0';
+                -- NFC Data and valid signals
+                NorthNFCDataxAS  : NorthTXNFCM2SxD.DataxD  <= NorthNFCDataxDP;
+                NorthNFCValidxAS : NorthTXNFCM2SxD.ValidxS <= NorthNFCValidxSP;
+                EastNFCDataxAS   : EastTXNFCM2SxD.DataxD   <= EastNFCDataxDP;
+                EastNFCValidxAS  : EastTXNFCM2SxD.ValidxS  <= EastNFCValidxSP;
+                SouthNFCDataxAS  : SouthTXNFCM2SxD.DataxD  <= SouthNFCDataxDP;
+                SouthNFCValidxAS : SouthTXNFCM2SxD.ValidxS <= SouthNFCValidxSP;
+                WestNFCDataxAS   : WestTXNFCM2SxD.DataxD   <= WestNFCDataxDP;
+                WestNFCValidxAS  : WestTXNFCM2SxD.ValidxS  <= WestNFCValidxSP;
+
+                UpdateRegxP : process (AuroraClkMasterxC.PllNotLockedxS,
+                                       AuroraClkMasterxC.UserClkxC) is
+                begin  -- process UpdateRegxP
+                    if not AuroraClkMasterxC.PllNotLockedxS then
+                        NorthSendXOFFxSP <= '0';
+                        EastSendXOFFxSP  <= '0';
+                        SouthSendXOFFxSP <= '0';
+                        WestSendXOFFxSP  <= '0';
+                        NorthNFCStatexDP <= C_NFC_IDLE;
+                        NorthNFCDataxDP  <= (others => '0');
+                        NorthNFCValidxSP <= '0';
+                        EastNFCStatexDP  <= C_NFC_IDLE;
+                        EastNFCDataxDP   <= (others => '0');
+                        EastNFCValidxSP  <= '0';
+                        SouthNFCStatexDP <= C_NFC_IDLE;
+                        SouthNFCDataxDP  <= (others => '0');
+                        SouthNFCValidxSP <= '0';
+                        WestNFCStatexDP  <= C_NFC_IDLE;
+                        WestNFCDataxDP   <= (others => '0');
+                        WestNFCValidxSP  <= '0';
+                    elsif rising_edge(AuroraClkMasterxC.UserClkxC) then
+                        NorthSendXOFFxSP <= NorthSendXOFFxSN;
+                        EastSendXOFFxSP  <= EastSendXOFFxSN;
+                        SouthSendXOFFxSP <= SouthSendXOFFxSN;
+                        WestSendXOFFxSP  <= WestSendXOFFxSN;
+                        NorthNFCStatexDP <= NorthNFCStatexDN;
+                        NorthNFCDataxDP  <= NorthNFCDataxDN;
+                        NorthNFCValidxSP <= NorthNFCValidxSN;
+                        EastNFCStatexDP  <= EastNFCStatexDN;
+                        EastNFCDataxDP   <= EastNFCDataxDN;
+                        EastNFCValidxSP  <= EastNFCValidxSN;
+                        SouthNFCStatexDP <= SouthNFCStatexDN;
+                        SouthNFCDataxDP  <= SouthNFCDataxDN;
+                        SouthNFCValidxSP <= SouthNFCValidxSN;
+                        WestNFCStatexDP  <= WestNFCStatexDN;
+                        WestNFCDataxDP   <= WestNFCDataxDN;
+                        WestNFCValidxSP  <= WestNFCValidxSN;
+                    end if;
+                end process UpdateRegxP;
+
+                NorthNFCStatexP : process (NorthNFCDataxDP, NorthNFCStatexDP,
+                                           NorthNFCValidxSP, NorthSendXOFFxSN,
+                                           NorthSendXOFFxSP,
+                                           NorthTXUFCS2MxD.ReadyxS) is
+                begin  -- process NorthNFCStatexP
+                    -- Default values
+                    NorthNFCStatexDN <= NorthNFCStatexDP;
+                    NorthNFCDataxDN  <= NorthNFCDataxDP;
+                    NorthNFCValidxSN <= NorthNFCValidxSP;
+
+                    case NorthNFCStatexDP is
+                        when C_NFC_IDLE =>
+                                NorthNFCStatexDN <= C_NFC_IS_XON;
+                        when C_NFC_IS_XON =>
+                                if NorthSendXOFFxSP = '0' and NorthSendXOFFxSN = '1' then
+                                    NorthNFCDataxDN  <= C_NFC_XOFF;
+                                    NorthNFCValidxSN <= '1';
+                                    NorthNFCStatexDN <= C_NFC_SEND_XOFF;
+                                end if;
+
+                        when C_NFC_IS_XOFF =>
+                                if NorthSendXOFFxSP = '1' and NorthSendXOFFxSN = '0' then
+                                    NorthNFCDataxDN  <= C_NFC_XON;
+                                    NorthNFCValidxSN <= '1';
+                                    NorthNFCStatexDN <= C_NFC_SEND_XON;
+                                end if;
+
+                        when C_NFC_SEND_XON =>
+                                if NorthTXUFCS2MxD.ReadyxS = '1' then
+                                    NorthNFCValidxSN <= '0';
+                                    NorthNFCStatexDN <= C_NFC_IS_XON;
+                                end if;
+
+                        when C_NFC_SEND_XOFF =>
+                                if NorthTXUFCS2MxD.ReadyxS = '1' then
+                                    NorthNFCValidxSN <= '0';
+                                    NorthNFCStatexDN <= C_NFC_IS_XOFF;
+                                end if;
+
+                        when others => null;
+                    end case;
+
+                end process NorthNFCStatexP;
+
+                EastNFCStatexP : process (EastNFCDataxDP, EastNFCStatexDP,
+                                          EastNFCValidxSP, EastSendXOFFxSN,
+                                          EastSendXOFFxSP,
+                                          EastTXUFCS2MxD.ReadyxS) is
+                begin  -- process EastNFCStatexP
+                    -- Default values
+                    EastNFCStatexDN <= EastNFCStatexDP;
+                    EastNFCDataxDN  <= EastNFCDataxDP;
+                    EastNFCValidxSN <= EastNFCValidxSP;
+
+                    case EastNFCStatexDP is
+                        when C_NFC_IDLE =>
+                                EastNFCStatexDN <= C_NFC_IS_XON;
+                        when C_NFC_IS_XON =>
+                                if EastSendXOFFxSP = '0' and EastSendXOFFxSN = '1' then
+                                    EastNFCDataxDN  <= C_NFC_XOFF;
+                                    EastNFCValidxSN <= '1';
+                                    EastNFCStatexDN <= C_NFC_SEND_XOFF;
+                                end if;
+
+                        when C_NFC_IS_XOFF =>
+                                if EastSendXOFFxSP = '1' and EastSendXOFFxSN = '0' then
+                                    EastNFCDataxDN  <= C_NFC_XON;
+                                    EastNFCValidxSN <= '1';
+                                    EastNFCStatexDN <= C_NFC_SEND_XON;
+                                end if;
+
+                        when C_NFC_SEND_XON =>
+                                if EastTXUFCS2MxD.ReadyxS = '1' then
+                                    EastNFCValidxSN <= '0';
+                                    EastNFCStatexDN <= C_NFC_IS_XON;
+                                end if;
+
+                        when C_NFC_SEND_XOFF =>
+                                if EastTXUFCS2MxD.ReadyxS = '1' then
+                                    EastNFCValidxSN <= '0';
+                                    EastNFCStatexDN <= C_NFC_IS_XOFF;
+                                end if;
+
+                        when others => null;
+                    end case;
+
+                end process EastNFCStatexP;
+
+                SouthNFCStatexP : process (SouthNFCDataxDP, SouthNFCStatexDP,
+                                           SouthNFCValidxSP, SouthSendXOFFxSN,
+                                           SouthSendXOFFxSP,
+                                           SouthTXUFCS2MxD.ReadyxS) is
+                begin  -- process SouthNFCStatexP
+                    -- Default values
+                    SouthNFCStatexDN <= SouthNFCStatexDP;
+                    SouthNFCDataxDN  <= SouthNFCDataxDP;
+                    SouthNFCValidxSN <= SouthNFCValidxSP;
+
+                    case SouthNFCStatexDP is
+                        when C_NFC_IDLE =>
+                                SouthNFCStatexDN <= C_NFC_IS_XON;
+                        when C_NFC_IS_XON =>
+                                if SouthSendXOFFxSP = '0' and SouthSendXOFFxSN = '1' then
+                                    SouthNFCDataxDN  <= C_NFC_XOFF;
+                                    SouthNFCValidxSN <= '1';
+                                    SouthNFCStatexDN <= C_NFC_SEND_XOFF;
+                                end if;
+
+                        when C_NFC_IS_XOFF =>
+                                if SouthSendXOFFxSP = '1' and SouthSendXOFFxSN = '0' then
+                                    SouthNFCDataxDN  <= C_NFC_XON;
+                                    SouthNFCValidxSN <= '1';
+                                    SouthNFCStatexDN <= C_NFC_SEND_XON;
+                                end if;
+
+                        when C_NFC_SEND_XON =>
+                                if SouthTXUFCS2MxD.ReadyxS = '1' then
+                                    SouthNFCValidxSN <= '0';
+                                    SouthNFCStatexDN <= C_NFC_IS_XON;
+                                end if;
+
+                        when C_NFC_SEND_XOFF =>
+                                if SouthTXUFCS2MxD.ReadyxS = '1' then
+                                    SouthNFCValidxSN <= '0';
+                                    SouthNFCStatexDN <= C_NFC_IS_XOFF;
+                                end if;
+
+                        when others => null;
+                    end case;
+
+                end process SouthNFCStatexP;
+
+                WestNFCStatexP : process (WestNFCDataxDP, WestNFCStatexDP,
+                                          WestNFCValidxSP, WestSendXOFFxSN,
+                                          WestSendXOFFxSP,
+                                          WestTXUFCS2MxD.ReadyxS) is
+                begin  -- process WestNFCStatexP
+                    -- Default values
+                    WestNFCStatexDN <= WestNFCStatexDP;
+                    WestNFCDataxDN  <= WestNFCDataxDP;
+                    WestNFCValidxSN <= WestNFCValidxSP;
+
+                    case WestNFCStatexDP is
+                        when C_NFC_IDLE =>
+                                WestNFCStatexDN <= C_NFC_IS_XON;
+                        when C_NFC_IS_XON =>
+                                if WestSendXOFFxSP = '0' and WestSendXOFFxSN = '1' then
+                                    WestNFCDataxDN  <= C_NFC_XOFF;
+                                    WestNFCValidxSN <= '1';
+                                    WestNFCStatexDN <= C_NFC_SEND_XOFF;
+                                end if;
+
+                        when C_NFC_IS_XOFF =>
+                                if WestSendXOFFxSP = '1' and WestSendXOFFxSN = '0' then
+                                    WestNFCDataxDN  <= C_NFC_XON;
+                                    WestNFCValidxSN <= '1';
+                                    WestNFCStatexDN <= C_NFC_SEND_XON;
+                                end if;
+
+                        when C_NFC_SEND_XON =>
+                                if WestTXUFCS2MxD.ReadyxS = '1' then
+                                    WestNFCValidxSN <= '0';
+                                    WestNFCStatexDN <= C_NFC_IS_XON;
+                                end if;
+
+                        when C_NFC_SEND_XOFF =>
+                                if WestTXUFCS2MxD.ReadyxS = '1' then
+                                    WestNFCValidxSN <= '0';
+                                    WestNFCStatexDN <= C_NFC_IS_XOFF;
+                                end if;
+
+                        when others => null;
+                    end case;
+
+                end process WestNFCStatexP;
+
+            end block BackPressurexB;
+
         end block GTPhyxB;
 
         DebugxB : block is
@@ -646,20 +1037,20 @@ begin
                 port map (
                     clk           => AuroraClkMasterxC.UserClkxC,
                     -- North
-                    probe_in0     => NorthRXM2SxD.DataxD,  -- 32 bits
-                    probe_in1(0)  => NorthRXM2SxD.ValidxS,
+                    probe_in0     => NorthRXfromPhyTXfromFifoM2SxD.DataxD,  -- 32 bits
+                    probe_in1(0)  => NorthRXfromPhyTXfromFifoM2SxD.ValidxS,
                     probe_in2(0)  => NorthTXS2MxD.ReadyxS,
                     -- East
-                    probe_in3     => EastRXM2SxD.DataxD,   -- 32 bits
-                    probe_in4(0)  => EastRXM2SxD.ValidxS,
+                    probe_in3     => EastRXfromPhyTXfromFifoM2SxD.DataxD,  -- 32 bits
+                    probe_in4(0)  => EastRXfromPhyTXfromFifoM2SxD.ValidxS,
                     probe_in5(0)  => EastTXS2MxD.ReadyxS,
                     -- South
-                    probe_in6     => SouthRXM2SxD.DataxD,  -- 32 bits
-                    probe_in7(0)  => SouthRXM2SxD.ValidxS,
+                    probe_in6     => SouthRXfromPhyTXfromFifoM2SxD.DataxD,  -- 32 bits
+                    probe_in7(0)  => SouthRXfromPhyTXfromFifoM2SxD.ValidxS,
                     probe_in8(0)  => SouthTXS2MxD.ReadyxS,
                     -- West
-                    probe_in9     => WestRXM2SxD.DataxD,   -- 32 bits
-                    probe_in10(0) => WestRXM2SxD.ValidxS,
+                    probe_in9     => WestRXfromPhyTXfromFifoM2SxD.DataxD,  -- 32 bits
+                    probe_in10(0) => WestRXfromPhyTXfromFifoM2SxD.ValidxS,
                     probe_in11(0) => WestTXS2MxD.ReadyxS,
                     probe_out0(0) => CntRstxR);
 
diff --git a/designs/vivado/scalp_firmware/2019.2/src/sim/tb_scalp_firmware.vhd b/designs/vivado/scalp_firmware/2019.2/src/sim/tb_scalp_firmware.vhd
index 4ea6692de409321a3372c3ac4f257a163ddb7da9..47f1aa0e7ea7841a73e7249594d8876f055bc2b5 100644
--- a/designs/vivado/scalp_firmware/2019.2/src/sim/tb_scalp_firmware.vhd
+++ b/designs/vivado/scalp_firmware/2019.2/src/sim/tb_scalp_firmware.vhd
@@ -15,7 +15,7 @@
 -- Tool version: 2019.2
 -- Description: Testbench for scalp_firmware
 --
--- Last update: 2020-10-13 13:10:02
+-- Last update: 2020-11-07 09:14:14
 --
 ---------------------------------------------------------------------------------