diff --git a/designs/vivado/scalp_router_firmware/2020.2/src/hdl/scalp_router_firmware.vhd b/designs/vivado/scalp_router_firmware/2020.2/src/hdl/scalp_router_firmware.vhd
index 57d0fc0d510fcd7f74878ec16f73dc4de175c3b9..f7436f2b89f949be5fa549b33f85b54fc94676db 100644
--- a/designs/vivado/scalp_router_firmware/2020.2/src/hdl/scalp_router_firmware.vhd
+++ b/designs/vivado/scalp_router_firmware/2020.2/src/hdl/scalp_router_firmware.vhd
@@ -15,7 +15,7 @@
 -- Tool version: 2020.2
 -- Description: scalp_router_firmware
 --
--- Last update: 2021-09-17
+-- Last update: 2021-09-20
 --
 ---------------------------------------------------------------------------------
 
@@ -556,70 +556,15 @@ architecture arch of scalp_router_firmware is
     signal DebugBackPressureResetxR : t_rx_back_pressure_reset                           := C_NO_RX_BACK_PRESSURE_RESET;
 
     -- Attributes
-    attribute mark_debug                      : string;
-    attribute keep                            : string;
+    attribute mark_debug                : string;
+    attribute keep                      : string;
     -- Clocks
-    attribute keep of PSSysClkxC              : signal is "true";
-    attribute keep of GTRefClk0xC             : signal is "true";
-    attribute keep of GTRefClk1xC             : signal is "true";
-    attribute keep of AuroraClkSlavexC        : signal is "true";
-    attribute keep of AuroraClkMasterxC       : signal is "true";
+    attribute keep of PSSysClkxC        : signal is "true";
+    attribute keep of GTRefClk0xC       : signal is "true";
+    attribute keep of GTRefClk1xC       : signal is "true";
+    attribute keep of AuroraClkSlavexC  : signal is "true";
+    attribute keep of AuroraClkMasterxC : signal is "true";
     -- Scalp Router
-    attribute mark_debug of NorthRXM2SxD      : signal is "true";
-    attribute keep of NorthRXM2SxD            : signal is "true";
-    attribute mark_debug of NorthRXS2MxD      : signal is "true";
-    attribute keep of NorthRXS2MxD            : signal is "true";
-    attribute mark_debug of NorthTXM2SxD      : signal is "true";
-    attribute keep of NorthTXM2SxD            : signal is "true";
-    attribute mark_debug of NorthTXS2MxD      : signal is "true";
-    attribute keep of NorthTXS2MxD            : signal is "true";
-    attribute mark_debug of EastRXM2SxD       : signal is "true";
-    attribute keep of EastRXM2SxD             : signal is "true";
-    attribute mark_debug of EastRXS2MxD       : signal is "true";
-    attribute keep of EastRXS2MxD             : signal is "true";
-    attribute mark_debug of EastTXM2SxD       : signal is "true";
-    attribute keep of EastTXM2SxD             : signal is "true";
-    attribute mark_debug of EastTXS2MxD       : signal is "true";
-    attribute keep of EastTXS2MxD             : signal is "true";
-    attribute mark_debug of SouthRXM2SxD      : signal is "true";
-    attribute keep of SouthRXM2SxD            : signal is "true";
-    attribute mark_debug of SouthRXS2MxD      : signal is "true";
-    attribute keep of SouthRXS2MxD            : signal is "true";
-    attribute mark_debug of SouthTXM2SxD      : signal is "true";
-    attribute keep of SouthTXM2SxD            : signal is "true";
-    attribute mark_debug of SouthTXS2MxD      : signal is "true";
-    attribute keep of SouthTXS2MxD            : signal is "true";
-    attribute mark_debug of WestRXM2SxD       : signal is "true";
-    attribute keep of WestRXM2SxD             : signal is "true";
-    attribute mark_debug of WestRXS2MxD       : signal is "true";
-    attribute keep of WestRXS2MxD             : signal is "true";
-    attribute mark_debug of WestTXM2SxD       : signal is "true";
-    attribute keep of WestTXM2SxD             : signal is "true";
-    attribute mark_debug of WestTXS2MxD       : signal is "true";
-    attribute keep of WestTXS2MxD             : signal is "true";
-    attribute mark_debug of LocNetAddrxD      : signal is "true";
-    attribute keep of LocNetAddrxD            : signal is "true";
-    --
-    attribute mark_debug of TXAxism2sVectorxD : signal is "true";
-    attribute keep of TXAxism2sVectorxD       : signal is "true";
-    attribute mark_debug of TXAxiss2mVectorxD : signal is "true";
-    attribute keep of TXAxiss2mVectorxD       : signal is "true";
-    attribute mark_debug of RXFifoTXM2SxD     : signal is "true";
-    attribute keep of RXFifoTXM2SxD           : signal is "true";
-    attribute mark_debug of RXFifoTXS2MxS     : signal is "true";
-    attribute keep of RXFifoTXS2MxS           : signal is "true";
-    attribute mark_debug of RXFifoStatusxD    : signal is "true";
-    attribute keep of RXFifoStatusxD          : signal is "true";
-    attribute mark_debug of TXFifoRXM2SxD     : signal is "true";
-    attribute keep of TXFifoRXM2SxD           : signal is "true";
-    attribute mark_debug of TXFifoRXS2MxS     : signal is "true";
-    attribute keep of TXFifoRXS2MxS           : signal is "true";
-    attribute mark_debug of RXAxism2sVectorxD : signal is "true";
-    attribute keep of RXAxism2sVectorxD       : signal is "true";
-    attribute mark_debug of RXAxiss2mVectorxD : signal is "true";
-    attribute keep of RXAxiss2mVectorxD       : signal is "true";
-    attribute mark_debug of TXFifoStatusxD    : signal is "true";
-    attribute keep of TXFifoStatusxD          : signal is "true";
 
 begin
 
@@ -629,52 +574,40 @@ begin
         ZynqxI : entity work.scalp_zynqps_wrapper
             port map (
                 -- Processor interface
-                FIXED_IO_ps_clk         => PSClkxCIO,
-                FIXED_IO_ps_porb        => PSPorxSNIO,
-                FIXED_IO_ps_srstb       => PSSRstxRNIO,
-                FclkClk0xCO             => PSSysClkxC,
-                FclkReset0xRO           => PSSysResetxR,
+                FIXED_IO_ps_clk     => PSClkxCIO,
+                FIXED_IO_ps_porb    => PSPorxSNIO,
+                FIXED_IO_ps_srstb   => PSSRstxRNIO,
+                FclkClk0xCO         => PSSysClkxC,
+                FclkReset0xRO       => PSSysResetxR,
                 -- DDR interface
-                DDR_addr                => DDRAddrxDIO,
-                DDR_ba                  => DDRBankAddrxDIO,
-                DDR_cas_n               => DDRCasNxSIO,
-                DDR_ck_n                => DDRClkNxCIO,
-                DDR_ck_p                => DDRClkPxCIO,
-                DDR_cke                 => DDRCkexSIO,
-                DDR_cs_n                => DDRCsNxSIO,
-                DDR_dm                  => DDRDmxDIO,
-                DDR_dq                  => DDRDqxDIO,
-                DDR_dqs_n               => DDRDqsNxDIO,
-                DDR_dqs_p               => DDRDqsPxDIO,
-                DDR_odt                 => DDROdtxSIO,
-                DDR_ras_n               => DDRRasNxSIO,
-                DDR_reset_n             => DDRDRstxRNIO,
-                DDR_we_n                => DDRWexSNIO,
-                FIXED_IO_ddr_vrn        => DDRVrNxSIO,
-                FIXED_IO_ddr_vrp        => DDRVrPxSIO,
+                DDR_addr            => DDRAddrxDIO,
+                DDR_ba              => DDRBankAddrxDIO,
+                DDR_cas_n           => DDRCasNxSIO,
+                DDR_ck_n            => DDRClkNxCIO,
+                DDR_ck_p            => DDRClkPxCIO,
+                DDR_cke             => DDRCkexSIO,
+                DDR_cs_n            => DDRCsNxSIO,
+                DDR_dm              => DDRDmxDIO,
+                DDR_dq              => DDRDqxDIO,
+                DDR_dqs_n           => DDRDqsNxDIO,
+                DDR_dqs_p           => DDRDqsPxDIO,
+                DDR_odt             => DDROdtxSIO,
+                DDR_ras_n           => DDRRasNxSIO,
+                DDR_reset_n         => DDRDRstxRNIO,
+                DDR_we_n            => DDRWexSNIO,
+                FIXED_IO_ddr_vrn    => DDRVrNxSIO,
+                FIXED_IO_ddr_vrp    => DDRVrPxSIO,
                 -- USB interface
-                Usb0VBusPwrFaultxSI     => UsbVbusPwrFaultxSI,
+                Usb0VBusPwrFaultxSI => UsbVbusPwrFaultxSI,
                 -- SPI1 used as uWire master. Clk, Data and LE signals are outputs
                 -- SPI1 inputs are unused. Clk is connected to SCLK, Data to MOSI and LE to SS
-                Spi1MOSIxSO             => Pll2V5DatauWirexSO,
-                Spi1SSxSO               => Pll2V5LEuWirexSO,
-                Spi1SclkxCO             => Pll2V5ClkuWirexCO,
+                Spi1MOSIxSO         => Pll2V5DatauWirexSO,
+                Spi1SSxSO           => Pll2V5LEuWirexSO,
+                Spi1SclkxCO         => Pll2V5ClkuWirexCO,
                 -- MIO
-                FIXED_IO_mio            => MIOxDIO,
-                UserClkxCI              => AuroraClkMasterxC.UserClkxC,
-                UserResetxRANI          => ScalpRouterResetxRNA,
-                -- Scalp Axi Lite interface and IRQ
-                Irq0xDI                 => (others => '0'),
-                ScalpPacketWriteDataxDO => ScalpPacketWriteDataxD,
-                ScalpPacketReadDataxDI  => ScalpPacketReadDataxD,
-                ScalpPacketCtrlxDO      => ScalpPacketCtrlxD,
-                ScalpPacketStatusxDI    => ScalpPacketStatusxD,
-                RXRdDataCntxDI          => RXRdDataCntxD,
-                RXWrDataCntxDI          => RXWrDataCntxD,
-                TXRdDataCntxDI          => TXRdDataCntxD,
-                TXWrDataCntxDI          => TXWrDataCntxD,
-                LocNetAddrxDO           => LocNetAddrVectxD,
-                RgbLedsCtrlPortxDO      => open);
+                FIXED_IO_mio        => MIOxDIO,
+                UserClkxCI          => AuroraClkMasterxC.UserClkxC,
+                UserResetxRANI      => ScalpRouterResetxRNA);
 
     end block ProcessingSystemxB;
 
@@ -1100,207 +1033,6 @@ begin
             SouthRXS2MxAS : SouthRXS2MxD                     <= RXAxiss2mVectorxD(C_SOUTH_IF_ID);
             WestRXS2MxAS  : WestRXS2MxD                      <= RXAxiss2mVectorxD(C_WEST_IF_ID);
 
-
-            WrSpValidxI : entity work.vio_axi_cnt_ctrl
-                port map (
-                    clk           => AuroraClkMasterxC.UserClkxC,
-                    probe_out0(0) => VioWrSpValidxS);
-
-            TXFifoStatusWrDataCntxAS : TXWrDataCntxD                       <= TXFifoStatusxD.WrDataCntxD;
-            TXFifoStatusRdDataCntxAS : TXRdDataCntxD                       <= TXFifoStatusxD.RdDataCntxD;
-            TXFifoStatusProgFullxAS  : ScalpPacketStatusxD(C_TX_PROG_FULL) <= TXFifoStatusxD.ProgFullxS;
-
-            TXFifoWrDataxP : process (AuroraClkMasterxC.UserClkxC,
-                                      ScalpRouterResetxRNA) is
-            begin  -- process TXFifoWrDataxP
-                if ScalpRouterResetxRNA = '0' then
-                    TXFifoRXM2SxD           <= C_NO_AXI4_M2S;
-                    TXFifoWrDataStatexD     <= E_WR_IDLE;
-                    TXFifoWrDataStateNextxD <= E_WR_IDLE;
-                elsif rising_edge(AuroraClkMasterxC.UserClkxC) then
-                    -- Default Values
-                    TXFifoRXM2SxD           <= TXFifoRXM2SxD;
-                    TXFifoWrDataStatexD     <= TXFifoWrDataStatexD;
-                    TXFifoWrDataStateNextxD <= TXFifoWrDataStateNextxD;
-
-                    case TXFifoWrDataStatexD is
-                        when E_WR_IDLE =>
-                                TXFifoRXM2SxD.DataxD  <= (others => '0');
-                                TXFifoRXM2SxD.ValidxS <= '0';
-                                TXFifoRXM2SxD.LastxS  <= '0';
-
-                                if ScalpPacketCtrlxD(C_WR_NEW_PACKET) = '1' then
-                                    TXFifoWrDataStatexD <= E_WR_H0;
-                                end if;
-
-                        when E_WR_H0 =>
-                                TXFifoRXM2SxD.DataxD <= change_endian_ul(ScalpPacketWriteDataxD(31 downto 24) & ScalpPacketWriteDataxD(23 downto 16) &
-                                                                         ScalpPacketWriteDataxD(15 downto 8) & ScalpPacketWriteDataxD(7 downto 0));
-                                TXFifoRXM2SxD.ValidxS <= '0';
-                                TXFifoRXM2SxD.LastxS  <= '0';
-
-                                if ScalpPacketCtrlxD(C_WR_VALID) = '1' and ScalpPacketCtrlxD(C_WR_NEXT) = '0' then
-                                    TXFifoRXM2SxD.ValidxS   <= '1';
-                                    TXFifoWrDataStatexD     <= E_WR_NEXT;
-                                    TXFifoWrDataStateNextxD <= E_WR_H1;
-                                end if;
-
-                        when E_WR_H1 =>
-                                TXFifoRXM2SxD.DataxD <= change_endian_ul(ScalpPacketWriteDataxD(31 downto 24) & ScalpPacketWriteDataxD(23 downto 16) &
-                                                                         ScalpPacketWriteDataxD(15 downto 8) & "00000000");
-                                TXFifoRXM2SxD.ValidxS <= '0';
-                                TXFifoRXM2SxD.LastxS  <= '0';
-
-                                if ScalpPacketCtrlxD(C_WR_VALID) = '1' and ScalpPacketCtrlxD(C_WR_NEXT) = '0' then
-                                    TXFifoRXM2SxD.ValidxS   <= '1';
-                                    TXFifoWrDataStatexD     <= E_WR_NEXT;
-                                    TXFifoWrDataStateNextxD <= E_WR_H2;
-                                end if;
-
-                        when E_WR_H2 =>
-                                TXFifoRXM2SxD.DataxD  <= change_endian_ul(ScalpPacketWriteDataxD(31 downto 16) & "0000000000000000");
-                                TXFifoRXM2SxD.ValidxS <= '0';
-                                TXFifoRXM2SxD.LastxS  <= '0';
-
-                                if ScalpPacketCtrlxD(C_WR_VALID) = '1' and ScalpPacketCtrlxD(C_WR_NEXT) = '0' then
-                                    TXFifoRXM2SxD.ValidxS   <= '1';
-                                    TXFifoWrDataStatexD     <= E_WR_NEXT;
-                                    TXFifoWrDataStateNextxD <= E_WR_PLD;
-                                end if;
-
-                        when E_WR_PLD =>
-                                TXFifoRXM2SxD.DataxD  <= change_endian_ul(ScalpPacketWriteDataxD);
-                                TXFifoRXM2SxD.ValidxS <= '0';
-                                TXFifoRXM2SxD.LastxS  <= '0';
-
-                                if ScalpPacketCtrlxD(C_WR_VALID) = '1' and ScalpPacketCtrlxD(C_WR_NEXT) = '0' then
-                                    TXFifoRXM2SxD.ValidxS <= '1';
-                                    TXFifoWrDataStatexD   <= E_WR_NEXT;
-
-                                    if ScalpPacketCtrlxD(C_WR_LAST) = '1' then
-                                        TXFifoRXM2SxD.LastxS    <= '1';
-                                        TXFifoWrDataStateNextxD <= E_WR_IDLE;
-                                    else
-                                        TXFifoWrDataStateNextxD <= E_WR_PLD;
-                                    end if;
-                                end if;
-
-                        when E_WR_NEXT =>
-                                TXFifoRXM2SxD.DataxD  <= change_endian_ul(ScalpPacketWriteDataxD);
-                                TXFifoRXM2SxD.ValidxS <= '0';
-                                TXFifoRXM2SxD.LastxS  <= '0';
-
-                                if ScalpPacketCtrlxD(C_WR_NEXT) = '1' and ScalpPacketCtrlxD(C_WR_VALID) = '0' then
-                                    TXFifoWrDataStatexD <= TXFifoWrDataStateNextxD;
-                                end if;
-
-                        when others => null;
-                    end case;
-                end if;
-            end process TXFifoWrDataxP;
-
-            -- TX Fifo
-            ScalpAxisFifoWrapperTXxI : entity work.scalp_axis_fifo_wrapper
-                generic map (
-                    C_CTRL_TLAST => true)
-                port map (
-                    ClkxCI.RXClkxC   => AuroraClkMasterxC.UserClkxC,
-                    ClkxCI.TXClkxC   => AuroraClkMasterxC.UserClkxC,
-                    ResetxRI.RstxRAN => ScalpRouterResetxRNA,
-                    RXM2SxDI         => TXFifoRXM2SxD,
-                    RXS2MxSO         => TXFifoRXS2MxS,
-                    TXM2SxDO         => RXAxism2sVectorxD(C_LOCAL_IF_ID),
-                    TXS2MxSI         => RXAxiss2mVectorxD(C_LOCAL_IF_ID),
-                    FifoStatusxDO    => TXFifoStatusxD);
-
-            RXFifoStatusWrDataCntxAS : RXWrDataCntxD                       <= RXFifoStatusxD.WrDataCntxD;
-            RXFifoStatusRdDataCntxAS : RXRdDataCntxD                       <= RXFifoStatusxD.RdDataCntxD;
-            RXFifoStatusProgFullxAS  : ScalpPacketStatusxD(C_RX_PROG_FULL) <= RXFifoStatusxD.ProgFullxS;
-
-            RXFifoRdDataxP : process (AuroraClkMasterxC.UserClkxC,
-                                      ScalpRouterResetxRNA) is
-                variable HeaderCountxD : integer := 0;
-            begin  -- process RXFifoRdDataxP
-                if ScalpRouterResetxRNA = '0' then
-                    RXFifoRdDataStatexD             <= E_RD_IDLE;
-                    RXFifoRdDataStateNextxD         <= E_RD_IDLE;
-                    ScalpPacketReadDataxD           <= (others => '0');
-                    ScalpPacketStatusxD(C_RD_VALID) <= '0';
-                    ScalpPacketStatusxD(C_RD_LAST)  <= '0';
-                -- HeaderCountxD                   := 0;
-                elsif rising_edge(AuroraClkMasterxC.UserClkxC) then
-                    -- Default Values
-                    RXFifoTXS2MxS.ReadyxS               <= '0';
-                    ScalpPacketReadDataxD               <= (others => '0');
-                    ScalpPacketStatusxD(C_RD_VALID)     <= '0';
-                    ScalpPacketStatusxD(C_RD_LAST)      <= ScalpPacketStatusxD(C_RD_LAST);
-                    ScalpPacketStatusxD(C_RD_WAIT_NEXT) <= '0';
-                    RXFifoRdDataStatexD                 <= RXFifoRdDataStatexD;
-                    RXFifoRdDataStateNextxD             <= RXFifoRdDataStateNextxD;
-                    -- HeaderCountxD                       := HeaderCountxD;
-
-                    case RXFifoRdDataStatexD is
-                        when E_RD_IDLE =>
-                                if ScalpPacketCtrlxD(C_RD_NEW_PACKET) = '1' then
-                                    ScalpPacketStatusxD(C_RD_LAST) <= '0';
-                                    RXFifoRdDataStatexD            <= E_RD_WORD;
-                                -- HeaderCountxD                  := 0;
-                                end if;
-
-                        when E_RD_WORD =>
-                                if RXFifoTXM2SxD.ValidxS = '1' and ScalpPacketCtrlxD(C_RD_NEXT) = '0' then
-
-                                    -- if HeaderCountxD = 0 then
-                                    --     ScalpPacketReadDataxD <= change_endian_ul(RXFifoTXM2SxD.DataxD);
-                                    -- elsif HeaderCountxD = 1 then
-                                    --     ScalpPacketReadDataxD <= change_endian_ul(RXFifoTXM2SxD.DataxD);
-                                    -- elsif HeaderCountxD = 2 then
-                                    --     ScalpPacketReadDataxD <= change_endian_ul("0000000000000000" & RXFifoTXM2SxD.DataxD(15 downto 0));
-                                    -- else
-                                    --     ScalpPacketReadDataxD <= change_endian_ul(RXFifoTXM2SxD.DataxD);
-                                    -- end if;
-
-                                    ScalpPacketReadDataxD           <= change_endian_ul(RXFifoTXM2SxD.DataxD);
-                                    ScalpPacketStatusxD(C_RD_VALID) <= '1';
-                                    RXFifoRdDataStatexD             <= E_RD_NEXT;
-                                    RXFifoRdDataStateNextxD         <= E_RD_WORD;
-
-                                    if RXFifoTXM2SxD.LastxS = '1' then
-                                        ScalpPacketStatusxD(C_RD_LAST) <= '1';
-                                        RXFifoRdDataStateNextxD        <= E_RD_IDLE;
-                                    end if;
-                                end if;
-
-                        when E_RD_NEXT =>
-                                ScalpPacketReadDataxD               <= change_endian_ul(RXFifoTXM2SxD.DataxD);
-                                ScalpPacketStatusxD(C_RD_VALID)     <= '1';
-                                ScalpPacketStatusxD(C_RD_WAIT_NEXT) <= '1';
-
-                                if ScalpPacketCtrlxD(C_RD_NEXT) = '1' then
-                                    RXFifoTXS2MxS.ReadyxS <= '1';
-                                    RXFifoRdDataStatexD   <= RXFifoRdDataStateNextxD;
-                                -- HeaderCountxD         := HeaderCountxD + 1;
-                                end if;
-
-                        when others => null;
-                    end case;
-                end if;
-            end process RXFifoRdDataxP;
-
-            -- RX Fifo
-            ScalpAxisFifoWrapperRXxI : entity work.scalp_axis_fifo_wrapper
-                generic map (
-                    C_CTRL_TLAST => true)
-                port map (
-                    ClkxCI.RXClkxC   => AuroraClkMasterxC.UserClkxC,
-                    ClkxCI.TXClkxC   => AuroraClkMasterxC.UserClkxC,
-                    ResetxRI.RstxRAN => ScalpRouterResetxRNA,
-                    RXM2SxDI         => TXAxism2sVectorxD(C_LOCAL_IF_ID),
-                    RXS2MxSO         => TXAxiss2mVectorxD(C_LOCAL_IF_ID),
-                    TXM2SxDO         => RXFifoTXM2SxD,
-                    TXS2MxSI         => RXFifoTXS2MxS,
-                    FifoStatusxDO    => RXFifoStatusxD);
-
             ScalpRouterxI : entity work.scalp_router
                 generic map (
                     C_SCALP_NUMBER_OF_INTERFACE => C_SCALP_NUMBER_OF_INTERFACE,
diff --git a/soc/hw/scalp_zynqps/src/hdl/scalp_zynqps_wrapper.vhd b/soc/hw/scalp_zynqps/src/hdl/scalp_zynqps_wrapper.vhd
index 61a94df1538c5d4e96e9868257afe25ede3531d4..4cfc93a0e300a6210bee1c2bb35d4367c5525f97 100644
--- a/soc/hw/scalp_zynqps/src/hdl/scalp_zynqps_wrapper.vhd
+++ b/soc/hw/scalp_zynqps/src/hdl/scalp_zynqps_wrapper.vhd
@@ -15,7 +15,7 @@
 -- Tool version: 2020.2
 -- Description: scalp_zynqps_wrapper
 --
--- Last update: 2021-06-22
+-- Last update: 2021-09-20
 --
 ---------------------------------------------------------------------------------
 
@@ -27,52 +27,40 @@ entity scalp_zynqps_wrapper is
 
     port (
         -- Processor interface
-        FIXED_IO_ps_clk         : inout std_logic;
-        FIXED_IO_ps_porb        : inout std_logic;
-        FIXED_IO_ps_srstb       : inout std_logic;
-        FclkClk0xCO             : out   std_logic;
-        FclkReset0xRO           : out   std_logic;
+        FIXED_IO_ps_clk     : inout std_logic;
+        FIXED_IO_ps_porb    : inout std_logic;
+        FIXED_IO_ps_srstb   : inout std_logic;
+        FclkClk0xCO         : out   std_logic;
+        FclkReset0xRO       : out   std_logic;
         -- DDR interface
-        DDR_addr                : inout std_logic_vector (14 downto 0);
-        DDR_ba                  : inout std_logic_vector (2 downto 0);
-        DDR_cas_n               : inout std_logic;
-        DDR_ck_n                : inout std_logic;
-        DDR_ck_p                : inout std_logic;
-        DDR_cke                 : inout std_logic;
-        DDR_cs_n                : inout std_logic;
-        DDR_dm                  : inout std_logic_vector (3 downto 0);
-        DDR_dq                  : inout std_logic_vector (31 downto 0);
-        DDR_dqs_n               : inout std_logic_vector (3 downto 0);
-        DDR_dqs_p               : inout std_logic_vector (3 downto 0);
-        DDR_odt                 : inout std_logic;
-        DDR_ras_n               : inout std_logic;
-        DDR_reset_n             : inout std_logic;
-        DDR_we_n                : inout std_logic;
-        FIXED_IO_ddr_vrn        : inout std_logic;
-        FIXED_IO_ddr_vrp        : inout std_logic;
+        DDR_addr            : inout std_logic_vector (14 downto 0);
+        DDR_ba              : inout std_logic_vector (2 downto 0);
+        DDR_cas_n           : inout std_logic;
+        DDR_ck_n            : inout std_logic;
+        DDR_ck_p            : inout std_logic;
+        DDR_cke             : inout std_logic;
+        DDR_cs_n            : inout std_logic;
+        DDR_dm              : inout std_logic_vector (3 downto 0);
+        DDR_dq              : inout std_logic_vector (31 downto 0);
+        DDR_dqs_n           : inout std_logic_vector (3 downto 0);
+        DDR_dqs_p           : inout std_logic_vector (3 downto 0);
+        DDR_odt             : inout std_logic;
+        DDR_ras_n           : inout std_logic;
+        DDR_reset_n         : inout std_logic;
+        DDR_we_n            : inout std_logic;
+        FIXED_IO_ddr_vrn    : inout std_logic;
+        FIXED_IO_ddr_vrp    : inout std_logic;
         -- USB interface
-        Usb0VBusPwrFaultxSI     : in    std_logic;
+        Usb0VBusPwrFaultxSI : in    std_logic;
         -- SPI1 used as uWire master. Clk, Data and LE signals are outputs
         -- SPI1 inputs are unused. Clk is connected to SCLK, Data to MOSI and LE to SS
-        Spi1MOSIxSO             : out   std_logic;
-        Spi1SSxSO               : out   std_logic;
-        Spi1SclkxCO             : out   std_logic;
+        Spi1MOSIxSO         : out   std_logic;
+        Spi1SSxSO           : out   std_logic;
+        Spi1SclkxCO         : out   std_logic;
         -- MIO
-        FIXED_IO_mio            : inout std_logic_vector (53 downto 0);
-        UserClkxCI              : in    std_logic;
-        UserResetxRANI          : in    std_logic;
-        -- Scalp Axi Lite interface and IRQ
-        Irq0xDI                 : in    std_logic_vector(0 to 0);
-        ScalpPacketWriteDataxDO : out   std_logic_vector(31 downto 0);
-        ScalpPacketReadDataxDI  : in    std_logic_vector(31 downto 0);
-        ScalpPacketCtrlxDO      : out   std_logic_vector(31 downto 0);
-        ScalpPacketStatusxDI    : in    std_logic_vector(31 downto 0);
-        RgbLedsCtrlPortxDO      : out   std_logic_vector(31 downto 0);
-        RXRdDataCntxDI          : in    std_logic_vector(31 downto 0);
-        RXWrDataCntxDI          : in    std_logic_vector(31 downto 0);
-        TXRdDataCntxDI          : in    std_logic_vector(31 downto 0);
-        TXWrDataCntxDI          : in    std_logic_vector(31 downto 0);
-        LocNetAddrxDO           : out   std_logic_vector(31 downto 0));
+        FIXED_IO_mio        : inout std_logic_vector (53 downto 0);
+        UserClkxCI          : in    std_logic;
+        UserResetxRANI      : in    std_logic);
 
 end scalp_zynqps_wrapper;
 
@@ -82,45 +70,34 @@ begin
 
     ScalpZynqPSxI : entity work.scalp_zynqps
         port map (
-            DDR_addr                => DDR_addr,
-            DDR_ba                  => DDR_ba,
-            DDR_cas_n               => DDR_cas_n,
-            DDR_ck_n                => DDR_ck_n,
-            DDR_ck_p                => DDR_ck_p,
-            DDR_cke                 => DDR_cke,
-            DDR_cs_n                => DDR_cs_n,
-            DDR_dm                  => DDR_dm,
-            DDR_dq                  => DDR_dq,
-            DDR_dqs_n               => DDR_dqs_n,
-            DDR_dqs_p               => DDR_dqs_p,
-            DDR_odt                 => DDR_odt,
-            DDR_ras_n               => DDR_ras_n,
-            DDR_reset_n             => DDR_reset_n,
-            DDR_we_n                => DDR_we_n,
-            FIXED_IO_ddr_vrn        => FIXED_IO_ddr_vrn,
-            FIXED_IO_ddr_vrp        => FIXED_IO_ddr_vrp,
-            FIXED_IO_mio            => FIXED_IO_mio,
-            FIXED_IO_ps_clk         => FIXED_IO_ps_clk,
-            FIXED_IO_ps_porb        => FIXED_IO_ps_porb,
-            FIXED_IO_ps_srstb       => FIXED_IO_ps_srstb,
-            FclkClk0xCO             => FclkClk0xCO,
-            FclkReset0xRO(0)        => FclkReset0xRO,
-            Spi1MOSIxSO             => Spi1MOSIxSO,
-            Spi1SSxSO               => Spi1SSxSO,
-            Spi1SclkxCO             => Spi1SclkxCO,
-            Usb0VBusPwrFaultxSI     => Usb0VBusPwrFaultxSI,
-            UserClkxCI              => UserClkxCI,
-            UserResetxRANI          => UserResetxRANI,
-            Irq0xDI                 => Irq0xDI,
-            ScalpPacketWriteDataxDO => ScalpPacketWriteDataxDO,
-            ScalpPacketReadDataxDI  => ScalpPacketReadDataxDI,
-            ScalpPacketCtrlxDO      => ScalpPacketCtrlxDO,
-            ScalpPacketStatusxDI    => ScalpPacketStatusxDI,
-            RXRdDataCntxDI          => RXRdDataCntxDI,
-            RXWrDataCntxDI          => RXWrDataCntxDI,
-            TXRdDataCntxDI          => TXRdDataCntxDI,
-            TXWrDataCntxDI          => TXWrDataCntxDI,
-            RgbLedsCtrlPortxDO      => RgbLedsCtrlPortxDO,
-            LocNetAddrxDO           => LocNetAddrxDO);
+            DDR_addr            => DDR_addr,
+            DDR_ba              => DDR_ba,
+            DDR_cas_n           => DDR_cas_n,
+            DDR_ck_n            => DDR_ck_n,
+            DDR_ck_p            => DDR_ck_p,
+            DDR_cke             => DDR_cke,
+            DDR_cs_n            => DDR_cs_n,
+            DDR_dm              => DDR_dm,
+            DDR_dq              => DDR_dq,
+            DDR_dqs_n           => DDR_dqs_n,
+            DDR_dqs_p           => DDR_dqs_p,
+            DDR_odt             => DDR_odt,
+            DDR_ras_n           => DDR_ras_n,
+            DDR_reset_n         => DDR_reset_n,
+            DDR_we_n            => DDR_we_n,
+            FIXED_IO_ddr_vrn    => FIXED_IO_ddr_vrn,
+            FIXED_IO_ddr_vrp    => FIXED_IO_ddr_vrp,
+            FIXED_IO_mio        => FIXED_IO_mio,
+            FIXED_IO_ps_clk     => FIXED_IO_ps_clk,
+            FIXED_IO_ps_porb    => FIXED_IO_ps_porb,
+            FIXED_IO_ps_srstb   => FIXED_IO_ps_srstb,
+            FclkClk0xCO         => FclkClk0xCO,
+            FclkReset0xRO(0)    => FclkReset0xRO,
+            Spi1MOSIxSO         => Spi1MOSIxSO,
+            Spi1SSxSO           => Spi1SSxSO,
+            Spi1SclkxCO         => Spi1SclkxCO,
+            Usb0VBusPwrFaultxSI => Usb0VBusPwrFaultxSI,
+            UserClkxCI          => UserClkxCI,
+            UserResetxRANI      => UserResetxRANI);
 
 end arch;
diff --git a/soc/vivado/scalp_zynqps/2020.2/src/ipi_tcl/scalp_zynqps_ipi.tcl b/soc/vivado/scalp_zynqps/2020.2/src/ipi_tcl/scalp_zynqps_ipi.tcl
index 45f402371487ed32bd7d49dc144bec432a46cc83..497ac7183698d70fe44b03c96101bd325b418092 100644
--- a/soc/vivado/scalp_zynqps/2020.2/src/ipi_tcl/scalp_zynqps_ipi.tcl
+++ b/soc/vivado/scalp_zynqps/2020.2/src/ipi_tcl/scalp_zynqps_ipi.tcl
@@ -123,14 +123,14 @@ set bCheckIPs 1
 if { $bCheckIPs == 1 } {
    set list_check_ips "\ 
 xilinx.com:ip:axi_clock_converter:2.1\
+xilinx.com:ip:axi_dma:7.1\
+xilinx.com:ip:axis_data_fifo:2.0\
 xilinx.com:ip:xlconstant:1.1\
-xilinx.com:ip:xlconcat:2.1\
 xilinx.com:ip:processing_system7:5.5\
 xilinx.com:ip:proc_sys_reset:5.0\
-hepia.hesge.ch:user:scalp_router_regbank:1.0\
-hepia.ch:user:scalp_safe_firmware_reg_bank:1.3\
 xilinx.com:ip:util_vector_logic:2.0\
 xilinx.com:ip:vio:3.0\
+xilinx.com:ip:xlconcat:2.1\
 "
 
    set list_ips_missing ""
@@ -205,20 +205,9 @@ proc create_root_design { parentCell } {
    CONFIG.FREQ_HZ {125000000} \
  ] $FclkClk0xCO
   set FclkReset0xRO [ create_bd_port -dir O -from 0 -to 0 FclkReset0xRO ]
-  set Irq0xDI [ create_bd_port -dir I -from 0 -to 0 Irq0xDI ]
-  set LocNetAddrxDO [ create_bd_port -dir O -from 31 -to 0 -type data LocNetAddrxDO ]
-  set RXRdDataCntxDI [ create_bd_port -dir I -from 31 -to 0 -type data RXRdDataCntxDI ]
-  set RXWrDataCntxDI [ create_bd_port -dir I -from 31 -to 0 -type data RXWrDataCntxDI ]
-  set RgbLedsCtrlPortxDO [ create_bd_port -dir O -from 31 -to 0 RgbLedsCtrlPortxDO ]
-  set ScalpPacketCtrlxDO [ create_bd_port -dir O -from 31 -to 0 -type data ScalpPacketCtrlxDO ]
-  set ScalpPacketReadDataxDI [ create_bd_port -dir I -from 31 -to 0 -type data ScalpPacketReadDataxDI ]
-  set ScalpPacketStatusxDI [ create_bd_port -dir I -from 31 -to 0 -type data ScalpPacketStatusxDI ]
-  set ScalpPacketWriteDataxDO [ create_bd_port -dir O -from 31 -to 0 -type data ScalpPacketWriteDataxDO ]
   set Spi1MOSIxSO [ create_bd_port -dir O Spi1MOSIxSO ]
   set Spi1SSxSO [ create_bd_port -dir O Spi1SSxSO ]
   set Spi1SclkxCO [ create_bd_port -dir O Spi1SclkxCO ]
-  set TXRdDataCntxDI [ create_bd_port -dir I -from 31 -to 0 -type data TXRdDataCntxDI ]
-  set TXWrDataCntxDI [ create_bd_port -dir I -from 31 -to 0 -type data TXWrDataCntxDI ]
   set Usb0VBusPwrFaultxSI [ create_bd_port -dir I Usb0VBusPwrFaultxSI ]
   set UserClkxCI [ create_bd_port -dir I -type clk -freq_hz 125000000 UserClkxCI ]
   set UserResetxRANI [ create_bd_port -dir I -type rst UserResetxRANI ]
@@ -226,18 +215,42 @@ proc create_root_design { parentCell } {
   # Create instance: axi_clock_converter_0, and set properties
   set axi_clock_converter_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_clock_converter:2.1 axi_clock_converter_0 ]
 
+  # Create instance: axi_clock_converter_1, and set properties
+  set axi_clock_converter_1 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_clock_converter:2.1 axi_clock_converter_1 ]
+
+  # Create instance: axi_clock_converter_2, and set properties
+  set axi_clock_converter_2 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_clock_converter:2.1 axi_clock_converter_2 ]
+
+  # Create instance: axi_dma_0, and set properties
+  set axi_dma_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_dma:7.1 axi_dma_0 ]
+  set_property -dict [ list \
+   CONFIG.c_include_sg {0} \
+   CONFIG.c_sg_include_stscntrl_strm {0} \
+ ] $axi_dma_0
+
+  # Create instance: axi_interconnect_0, and set properties
+  set axi_interconnect_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_interconnect:2.1 axi_interconnect_0 ]
+  set_property -dict [ list \
+   CONFIG.NUM_MI {1} \
+   CONFIG.NUM_SI {2} \
+ ] $axi_interconnect_0
+
+  # Create instance: axis_data_fifo_0, and set properties
+  set axis_data_fifo_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axis_data_fifo:2.0 axis_data_fifo_0 ]
+  set_property -dict [ list \
+   CONFIG.ENABLE_ECC {0} \
+   CONFIG.FIFO_DEPTH {4096} \
+   CONFIG.FIFO_MEMORY_TYPE {block} \
+   CONFIG.HAS_RD_DATA_COUNT {1} \
+   CONFIG.HAS_WR_DATA_COUNT {1} \
+ ] $axis_data_fifo_0
+
   # Create instance: gnd_constant, and set properties
   set gnd_constant [ create_bd_cell -type ip -vlnv xilinx.com:ip:xlconstant:1.1 gnd_constant ]
   set_property -dict [ list \
    CONFIG.CONST_VAL {0} \
  ] $gnd_constant
 
-  # Create instance: irq_xlconcat, and set properties
-  set irq_xlconcat [ create_bd_cell -type ip -vlnv xilinx.com:ip:xlconcat:2.1 irq_xlconcat ]
-  set_property -dict [ list \
-   CONFIG.NUM_PORTS {1} \
- ] $irq_xlconcat
-
   # Create instance: processing_system7_0, and set properties
   set processing_system7_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:processing_system7:5.5 processing_system7_0 ]
   set_property -dict [ list \
@@ -679,23 +692,18 @@ proc create_root_design { parentCell } {
    CONFIG.PCW_USB_RESET_SELECT {Share reset pin} \
    CONFIG.PCW_USE_FABRIC_INTERRUPT {1} \
    CONFIG.PCW_USE_S_AXI_GP0 {0} \
+   CONFIG.PCW_USE_S_AXI_HP0 {1} \
  ] $processing_system7_0
 
   # Create instance: ps7_0_axi_periph, and set properties
   set ps7_0_axi_periph [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_interconnect:2.1 ps7_0_axi_periph ]
   set_property -dict [ list \
-   CONFIG.NUM_MI {2} \
+   CONFIG.NUM_MI {1} \
  ] $ps7_0_axi_periph
 
   # Create instance: rst_ps7_0_125M, and set properties
   set rst_ps7_0_125M [ create_bd_cell -type ip -vlnv xilinx.com:ip:proc_sys_reset:5.0 rst_ps7_0_125M ]
 
-  # Create instance: scalp_router_regbank_0, and set properties
-  set scalp_router_regbank_0 [ create_bd_cell -type ip -vlnv hepia.hesge.ch:user:scalp_router_regbank:1.0 scalp_router_regbank_0 ]
-
-  # Create instance: scalp_safe_firmware_0, and set properties
-  set scalp_safe_firmware_0 [ create_bd_cell -type ip -vlnv hepia.ch:user:scalp_safe_firmware_reg_bank:1.3 scalp_safe_firmware_0 ]
-
   # Create instance: util_vector_logic_0, and set properties
   set util_vector_logic_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:util_vector_logic:2.0 util_vector_logic_0 ]
   set_property -dict [ list \
@@ -719,44 +727,45 @@ proc create_root_design { parentCell } {
    CONFIG.C_NUM_PROBE_IN {0} \
  ] $vio_0
 
+  # Create instance: xlconcat_0, and set properties
+  set xlconcat_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:xlconcat:2.1 xlconcat_0 ]
+
   # Create interface connections
-  connect_bd_intf_net -intf_net axi_clock_converter_0_M_AXI [get_bd_intf_pins axi_clock_converter_0/M_AXI] [get_bd_intf_pins scalp_router_regbank_0/SAxiLitexDIO]
+  connect_bd_intf_net -intf_net axi_clock_converter_0_M_AXI [get_bd_intf_pins axi_clock_converter_0/M_AXI] [get_bd_intf_pins axi_dma_0/S_AXI_LITE]
+  connect_bd_intf_net -intf_net axi_clock_converter_1_M_AXI [get_bd_intf_pins axi_clock_converter_1/M_AXI] [get_bd_intf_pins axi_interconnect_0/S00_AXI]
+  connect_bd_intf_net -intf_net axi_clock_converter_2_M_AXI [get_bd_intf_pins axi_clock_converter_2/M_AXI] [get_bd_intf_pins axi_interconnect_0/S01_AXI]
+  connect_bd_intf_net -intf_net axi_dma_0_M_AXIS_MM2S [get_bd_intf_pins axi_dma_0/M_AXIS_MM2S] [get_bd_intf_pins axis_data_fifo_0/S_AXIS]
+  connect_bd_intf_net -intf_net axi_dma_0_M_AXI_MM2S [get_bd_intf_pins axi_clock_converter_1/S_AXI] [get_bd_intf_pins axi_dma_0/M_AXI_MM2S]
+  connect_bd_intf_net -intf_net axi_dma_0_M_AXI_S2MM [get_bd_intf_pins axi_clock_converter_2/S_AXI] [get_bd_intf_pins axi_dma_0/M_AXI_S2MM]
+  connect_bd_intf_net -intf_net axi_interconnect_0_M00_AXI [get_bd_intf_pins axi_interconnect_0/M00_AXI] [get_bd_intf_pins processing_system7_0/S_AXI_HP0]
+  connect_bd_intf_net -intf_net axis_data_fifo_0_M_AXIS [get_bd_intf_pins axi_dma_0/S_AXIS_S2MM] [get_bd_intf_pins axis_data_fifo_0/M_AXIS]
   connect_bd_intf_net -intf_net processing_system7_0_DDR [get_bd_intf_ports DDR] [get_bd_intf_pins processing_system7_0/DDR]
   connect_bd_intf_net -intf_net processing_system7_0_FIXED_IO [get_bd_intf_ports FIXED_IO] [get_bd_intf_pins processing_system7_0/FIXED_IO]
   connect_bd_intf_net -intf_net processing_system7_0_M_AXI_GP0 [get_bd_intf_pins processing_system7_0/M_AXI_GP0] [get_bd_intf_pins ps7_0_axi_periph/S00_AXI]
   connect_bd_intf_net -intf_net ps7_0_axi_periph_M00_AXI [get_bd_intf_pins axi_clock_converter_0/S_AXI] [get_bd_intf_pins ps7_0_axi_periph/M00_AXI]
-  connect_bd_intf_net -intf_net ps7_0_axi_periph_M01_AXI [get_bd_intf_pins ps7_0_axi_periph/M01_AXI] [get_bd_intf_pins scalp_safe_firmware_0/SAXILitexDIO]
 
   # Create port connections
-  connect_bd_net -net In0_0_1 [get_bd_ports Irq0xDI] [get_bd_pins irq_xlconcat/In0]
-  connect_bd_net -net RXRdDataCntxDI_1 [get_bd_ports RXRdDataCntxDI] [get_bd_pins scalp_router_regbank_0/RXRdDataCntxDI]
-  connect_bd_net -net RXWrDataCntxDI_1 [get_bd_ports RXWrDataCntxDI] [get_bd_pins scalp_router_regbank_0/RXWrDataCntxDI]
-  connect_bd_net -net ScalpPacketReadDataxDI_1 [get_bd_ports ScalpPacketReadDataxDI] [get_bd_pins scalp_router_regbank_0/ScalpPacketReadDataxDI]
-  connect_bd_net -net ScalpPacketStatusxDI_1 [get_bd_ports ScalpPacketStatusxDI] [get_bd_pins scalp_router_regbank_0/ScalpPacketStatusxDI]
-  connect_bd_net -net TXRdDataCntxDI_1 [get_bd_ports TXRdDataCntxDI] [get_bd_pins scalp_router_regbank_0/TXRdDataCntxDI]
-  connect_bd_net -net TXWrDataCntxDI_1 [get_bd_ports TXWrDataCntxDI] [get_bd_pins scalp_router_regbank_0/TXWrDataCntxDI]
   connect_bd_net -net USB0_VBUS_PWRFAULT_0_1 [get_bd_ports Usb0VBusPwrFaultxSI] [get_bd_pins processing_system7_0/USB0_VBUS_PWRFAULT]
-  connect_bd_net -net UserClkxCI_1 [get_bd_ports UserClkxCI] [get_bd_pins axi_clock_converter_0/m_axi_aclk] [get_bd_pins scalp_router_regbank_0/SAxiClkxCI]
-  connect_bd_net -net UserResetxRNA_1 [get_bd_ports UserResetxRANI] [get_bd_pins axi_clock_converter_0/m_axi_aresetn] [get_bd_pins scalp_router_regbank_0/SAxiRstxRANI]
+  connect_bd_net -net UserClkxCI_1 [get_bd_ports UserClkxCI] [get_bd_pins axi_clock_converter_0/m_axi_aclk] [get_bd_pins axi_clock_converter_1/s_axi_aclk] [get_bd_pins axi_clock_converter_2/s_axi_aclk] [get_bd_pins axi_dma_0/m_axi_mm2s_aclk] [get_bd_pins axi_dma_0/m_axi_s2mm_aclk] [get_bd_pins axi_dma_0/s_axi_lite_aclk] [get_bd_pins axis_data_fifo_0/s_axis_aclk]
+  connect_bd_net -net UserResetxRANI_1 [get_bd_ports UserResetxRANI] [get_bd_pins axi_clock_converter_0/m_axi_aresetn] [get_bd_pins axi_clock_converter_1/s_axi_aresetn] [get_bd_pins axi_clock_converter_2/s_axi_aresetn] [get_bd_pins axi_dma_0/axi_resetn] [get_bd_pins axis_data_fifo_0/s_axis_aresetn]
+  connect_bd_net -net axi_dma_0_mm2s_introut [get_bd_pins axi_dma_0/mm2s_introut] [get_bd_pins xlconcat_0/In0]
+  connect_bd_net -net axi_dma_0_s2mm_introut [get_bd_pins axi_dma_0/s2mm_introut] [get_bd_pins xlconcat_0/In1]
   connect_bd_net -net gnd_constant_dout [get_bd_pins gnd_constant/dout] [get_bd_pins processing_system7_0/SPI1_MISO_I] [get_bd_pins processing_system7_0/SPI1_MOSI_I] [get_bd_pins processing_system7_0/SPI1_SCLK_I] [get_bd_pins processing_system7_0/SPI1_SS_I]
-  connect_bd_net -net irq_xlconcat_dout [get_bd_pins irq_xlconcat/dout] [get_bd_pins processing_system7_0/IRQ_F2P]
-  connect_bd_net -net processing_system7_0_FCLK_CLK0 [get_bd_ports FclkClk0xCO] [get_bd_pins axi_clock_converter_0/s_axi_aclk] [get_bd_pins processing_system7_0/FCLK_CLK0] [get_bd_pins processing_system7_0/M_AXI_GP0_ACLK] [get_bd_pins ps7_0_axi_periph/ACLK] [get_bd_pins ps7_0_axi_periph/M00_ACLK] [get_bd_pins ps7_0_axi_periph/M01_ACLK] [get_bd_pins ps7_0_axi_periph/S00_ACLK] [get_bd_pins rst_ps7_0_125M/slowest_sync_clk] [get_bd_pins scalp_safe_firmware_0/SAxiClkxCI] [get_bd_pins vio_0/clk]
+  connect_bd_net -net processing_system7_0_FCLK_CLK0 [get_bd_ports FclkClk0xCO] [get_bd_pins axi_clock_converter_0/s_axi_aclk] [get_bd_pins axi_clock_converter_1/m_axi_aclk] [get_bd_pins axi_clock_converter_2/m_axi_aclk] [get_bd_pins axi_interconnect_0/ACLK] [get_bd_pins axi_interconnect_0/M00_ACLK] [get_bd_pins axi_interconnect_0/S00_ACLK] [get_bd_pins axi_interconnect_0/S01_ACLK] [get_bd_pins processing_system7_0/FCLK_CLK0] [get_bd_pins processing_system7_0/M_AXI_GP0_ACLK] [get_bd_pins processing_system7_0/S_AXI_HP0_ACLK] [get_bd_pins ps7_0_axi_periph/ACLK] [get_bd_pins ps7_0_axi_periph/M00_ACLK] [get_bd_pins ps7_0_axi_periph/S00_ACLK] [get_bd_pins rst_ps7_0_125M/slowest_sync_clk] [get_bd_pins vio_0/clk]
   connect_bd_net -net processing_system7_0_FCLK_RESET0_N [get_bd_pins processing_system7_0/FCLK_RESET0_N] [get_bd_pins rst_ps7_0_125M/ext_reset_in] [get_bd_pins util_vector_logic_1/Op1]
   connect_bd_net -net processing_system7_0_SPI1_MOSI_O [get_bd_ports Spi1MOSIxSO] [get_bd_pins processing_system7_0/SPI1_MOSI_O]
   connect_bd_net -net processing_system7_0_SPI1_SCLK_O [get_bd_ports Spi1SclkxCO] [get_bd_pins processing_system7_0/SPI1_SCLK_O]
   connect_bd_net -net processing_system7_0_SPI1_SS_O [get_bd_ports Spi1SSxSO] [get_bd_pins processing_system7_0/SPI1_SS_O]
-  connect_bd_net -net rst_ps7_0_125M_peripheral_aresetn [get_bd_pins axi_clock_converter_0/s_axi_aresetn] [get_bd_pins ps7_0_axi_periph/ARESETN] [get_bd_pins ps7_0_axi_periph/M00_ARESETN] [get_bd_pins ps7_0_axi_periph/M01_ARESETN] [get_bd_pins ps7_0_axi_periph/S00_ARESETN] [get_bd_pins rst_ps7_0_125M/peripheral_aresetn] [get_bd_pins scalp_safe_firmware_0/SAxiRstxRANI]
-  connect_bd_net -net scalp_router_regbank_0_LocNetAddrxDO [get_bd_ports LocNetAddrxDO] [get_bd_pins scalp_router_regbank_0/LocNetAddrxDO]
-  connect_bd_net -net scalp_router_regbank_0_ScalpPacketCtrlxDO [get_bd_ports ScalpPacketCtrlxDO] [get_bd_pins scalp_router_regbank_0/ScalpPacketCtrlxDO]
-  connect_bd_net -net scalp_router_regbank_0_ScalpPacketWriteDataxDO [get_bd_ports ScalpPacketWriteDataxDO] [get_bd_pins scalp_router_regbank_0/ScalpPacketWriteDataxDO]
-  connect_bd_net -net scalp_safe_firmware_0_RgbLedsCtrlPortxDO [get_bd_ports RgbLedsCtrlPortxDO] [get_bd_pins scalp_safe_firmware_0/RgbLedsCtrlPortxDO]
+  connect_bd_net -net rst_ps7_0_125M_peripheral_aresetn [get_bd_pins axi_clock_converter_0/s_axi_aresetn] [get_bd_pins axi_clock_converter_1/m_axi_aresetn] [get_bd_pins axi_clock_converter_2/m_axi_aresetn] [get_bd_pins axi_interconnect_0/ARESETN] [get_bd_pins axi_interconnect_0/M00_ARESETN] [get_bd_pins axi_interconnect_0/S00_ARESETN] [get_bd_pins axi_interconnect_0/S01_ARESETN] [get_bd_pins ps7_0_axi_periph/ARESETN] [get_bd_pins ps7_0_axi_periph/M00_ARESETN] [get_bd_pins ps7_0_axi_periph/S00_ARESETN] [get_bd_pins rst_ps7_0_125M/peripheral_aresetn]
   connect_bd_net -net util_vector_logic_0_Res [get_bd_ports FclkReset0xRO] [get_bd_pins util_vector_logic_0/Res]
   connect_bd_net -net util_vector_logic_1_Res [get_bd_pins util_vector_logic_0/Op1] [get_bd_pins util_vector_logic_1/Res]
   connect_bd_net -net vio_0_probe_out0 [get_bd_pins util_vector_logic_0/Op2] [get_bd_pins vio_0/probe_out0]
+  connect_bd_net -net xlconcat_0_dout [get_bd_pins processing_system7_0/IRQ_F2P] [get_bd_pins xlconcat_0/dout]
 
   # Create address segments
-  assign_bd_address -offset 0x43C00000 -range 0x00001000 -target_address_space [get_bd_addr_spaces processing_system7_0/Data] [get_bd_addr_segs scalp_router_regbank_0/SAxiLitexDIO/Reg] -force
-  assign_bd_address -offset 0x43C10000 -range 0x00001000 -target_address_space [get_bd_addr_spaces processing_system7_0/Data] [get_bd_addr_segs scalp_safe_firmware_0/SAXILitexDIO/SAXILiteAddr] -force
+  assign_bd_address -offset 0x00000000 -range 0x10000000 -target_address_space [get_bd_addr_spaces axi_dma_0/Data_MM2S] [get_bd_addr_segs processing_system7_0/S_AXI_HP0/HP0_DDR_LOWOCM] -force
+  assign_bd_address -offset 0x00000000 -range 0x10000000 -target_address_space [get_bd_addr_spaces axi_dma_0/Data_S2MM] [get_bd_addr_segs processing_system7_0/S_AXI_HP0/HP0_DDR_LOWOCM] -force
+  assign_bd_address -offset 0x40400000 -range 0x00010000 -target_address_space [get_bd_addr_spaces processing_system7_0/Data] [get_bd_addr_segs axi_dma_0/S_AXI_LITE/Reg] -force
 
 
   # Restore current instance