diff --git a/controller/verilog/socdebug_ahb.v b/controller/verilog/socdebug_ahb.v
index cb071deac27c52660a0125bf6beb36d5906a5fd4..9676a36789bbf944c643600a21cc93a04aff2b89 100644
--- a/controller/verilog/socdebug_ahb.v
+++ b/controller/verilog/socdebug_ahb.v
@@ -10,10 +10,7 @@
 //-----------------------------------------------------------------------------
 
 module socdebug_ahb #(
-    parameter         PROMPT_CHAR   = "]",
-    parameter integer FT1248_WIDTH	= 1, // FTDI Interface 1,2,4 width supported
-    parameter integer FT1248_CLKON	= 1,  // FTDI clock always on - else quiet when no access
-    parameter [7:0]   FT1248_CLKDIV = 8'd03 // Clock Division Ratio
+    parameter         PROMPT_CHAR   = "]"
 )(  
     // AHB-lite Master Interface - ADP
     input  wire                     HCLK,
@@ -30,124 +27,29 @@ module socdebug_ahb #(
     input  wire                     HREADY_i,
     input  wire                     HRESP_i,
     
-    // APB Slave Interface - USRT
-    input  wire                     PCLK,        // Clock
-    input  wire                     PCLKG,       // Gated Clock
-    input  wire                     PRESETn,     // Reset
-
-    input  wire                     PSEL_i,      // Device select
-    input  wire              [11:2] PADDR_i,     // Address
-    input  wire                     PENABLE_i,   // Transfer control
-    input  wire                     PWRITE_i,    // Write control
-    input  wire              [31:0] PWDATA_i,    // Write data
- 
-    output wire              [31:0] PRDATA_o,    // Read data
-    output wire                     PREADY_o,    // Device ready
-    output wire                     PSLVERR_o,   // Device error response
+    // USRT0 TXD axi byte stream
+    output wire                     ADP_RXD_TVALID_o,
+    output wire            [ 7:0]   ADP_RXD_TDATA_o ,
+    input  wire                     ADP_RXD_TREADY_i,
+      // USRT0 RXD axi byte stream
+    input  wire                     ADP_TXD_TVALID_i,
+    input  wire             [ 7:0]  ADP_TXD_TDATA_i ,
+    output wire                     ADP_TXD_TREADY_o,
     
-    // FT1248 Interace - FT1248
-    output wire                     FT_CLK_O,    // SCLK
-    output wire                     FT_SSN_O,    // SS_N
-    input  wire                     FT_MISO_I,   // MISO
-    output wire  [FT1248_WIDTH-1:0] FT_MIOSIO_O, // MIOSIO tristate output when enabled
-    output wire  [FT1248_WIDTH-1:0] FT_MIOSIO_E, // MIOSIO tristate output enable (active hi)
-    output wire  [FT1248_WIDTH-1:0] FT_MIOSIO_Z, // MIOSIO tristate output enable (active lo)
-    input  wire  [FT1248_WIDTH-1:0] FT_MIOSIO_I, // MIOSIO tristate input
+    // USRT0 TXD axi byte stream
+    output wire                     STD_RXD_TVALID_o,
+    output wire            [ 7:0]   STD_RXD_TDATA_o ,
+    input  wire                     STD_RXD_TREADY_i,
+      // USRT0 RXD axi byte stream
+    input  wire                     STD_TXD_TVALID_i,
+    input  wire             [ 7:0]  STD_TXD_TDATA_i ,
+    output wire                     STD_TXD_TREADY_o,
     
     // GPIO interface
     output wire               [7:0] GPO8_o,
     input  wire               [7:0] GPI8_i
 );
 
-    // FT1248 to ADP Bus
-    wire        FT1248_ADP_TVALID;
-    wire [ 7:0] FT1248_ADP_TDATA;
-    wire        FT1248_ADP_TREADY;
-    
-    // ADP to FT1248 Bus
-    wire        ADP_FT1248_TVALID;
-    wire [ 7:0] ADP_FT1248_TDATA;
-    wire        ADP_FT1248_TREADY;
-
-    // USRT to ADP Bus
-    wire        USRT_ADP_TVALID;
-    wire [ 7:0] USRT_ADP_TDATA;
-    wire        USRT_ADP_TREADY;
-    
-    // ADP to USRT Bus
-    wire        ADP_USRT_TVALID;
-    wire [ 7:0] ADP_USRT_TDATA;
-    wire        ADP_USRT_TREADY;
-    
-    // Clock Divsion Ratio
-    wire [7:0] FT_CLKDIV;
-    assign FT_CLKDIV = FT1248_CLKDIV;
-    
-    // Instantiation of USRT Controller
-    socdebug_usrt_control u_usrt_control (
-        // APB Clock and Reset Signals
-        .PCLK              (PCLK),     
-        .PCLKG             (PCLKG),    // Gated PCLK for bus
-        .PRESETn           (PRESETn),  
-        
-        // APB Interface Signals
-        .PSEL              (PSEL_i),     
-        .PADDR             (PADDR_i),
-        .PENABLE           (PENABLE_i),
-        .PWRITE            (PWRITE_i),
-        .PWDATA            (PWDATA_i),
-        .PRDATA            (PRDATA_o), 
-        .PREADY            (PREADY_o),
-        .PSLVERR           (PSLVERR_o),
-
-        .ECOREVNUM         (4'h0),
-        
-        // ADP Interface - From USRT to ADP
-        .TX_VALID_o        (USRT_ADP_TVALID),
-        .TX_DATA8_o        (USRT_ADP_TDATA),
-        .TX_READY_i        (USRT_ADP_TREADY),
-
-        // ADP Interface - From ADP to USRT
-        .RX_VALID_i        (ADP_USRT_TVALID),
-        .RX_DATA8_i        (ADP_USRT_TDATA),
-        .RX_READY_o        (ADP_USRT_TREADY),
-        
-        // Interrupt Interfaces
-        .TXINT             ( ),       // Transmit Interrupt
-        .RXINT             ( ),       // Receive  Interrupt
-        .TXOVRINT          ( ),       // Transmit Overrun Interrupt
-        .RXOVRINT          ( ),       // Receive  Overrun Interrupt
-        .UARTINT           ( )        // Combined Interrupt
-    );
-
-    // Instantiation of FT1248 Controller
-    socdebug_ft1248_control #(
-        .FT1248_WIDTH (FT1248_WIDTH),
-        .FT1248_CLKON (FT1248_CLKON) 
-    ) u_ft1248_control (
-        .clk              (HCLK),
-        .resetn           (HRESETn),
-        .ft_clkdiv        (FT_CLKDIV),
-        .ft_clk_o         (FT_CLK_O),
-        .ft_ssn_o         (FT_SSN_O),
-        .ft_miso_i        (FT_MISO_I),
-        .ft_miosio_o      (FT_MIOSIO_O),
-        .ft_miosio_e      (FT_MIOSIO_E),
-        .ft_miosio_z      (FT_MIOSIO_Z),
-        .ft_miosio_i      (FT_MIOSIO_I),
-        
-        // ADP Interface - FT1248 to ADP
-        .txd_tvalid       (FT1248_ADP_TVALID),
-        .txd_tdata        (FT1248_ADP_TDATA),
-        .txd_tready       (FT1248_ADP_TREADY),
-        .txd_tlast        ( ),
-        
-        // ADP Interface - ADP to FT1248
-        .rxd_tvalid       (ADP_FT1248_TVALID),
-        .rxd_tdata        (ADP_FT1248_TDATA),
-        .rxd_tready       (ADP_FT1248_TREADY),
-        .rxd_tlast        (1'b0)
-    );
 
     // Instantiation of ADP AHB Controller
     socdebug_adp_control #(
@@ -173,25 +75,25 @@ module socdebug_ahb #(
         .GPI8_i         (GPI8_i),
         
         // USRT Interface - From ADP to USRT
-        .STDTX_TVALID_o (ADP_USRT_TVALID),
-        .STDTX_TDATA_o  (ADP_USRT_TDATA),
-        .STDTX_TREADY_i (ADP_USRT_TREADY),
+        .STDTX_TVALID_o (STD_RXD_TVALID_o),
+        .STDTX_TDATA_o  (STD_RXD_TDATA_o ),
+        .STDTX_TREADY_i (STD_RXD_TREADY_i),
         
         // USRT Interface - From USRT to ADP
-        .STDRX_TVALID_i (USRT_ADP_TVALID),
-        .STDRX_TDATA_i  (USRT_ADP_TDATA),
-        .STDRX_TREADY_o (USRT_ADP_TREADY),
+        .STDRX_TVALID_i (STD_TXD_TVALID_i),
+        .STDRX_TDATA_i  (STD_TXD_TDATA_i ),
+        .STDRX_TREADY_o (STD_TXD_TREADY_o),
         
         // FT1248 Interface - From FT1248 to ADP
-        .COMRX_TVALID_i (FT1248_ADP_TVALID),
-        .COMRX_TDATA_i  (FT1248_ADP_TDATA),
-        .COMRX_TREADY_o (FT1248_ADP_TREADY),
+        .COMRX_TVALID_i (ADP_TXD_TVALID_i),
+        .COMRX_TDATA_i  (ADP_TXD_TDATA_i ),
+        .COMRX_TREADY_o (ADP_TXD_TREADY_o),
         
         // FT1248 Interface - From ADP to FT1248
-        .COMTX_TVALID_o (ADP_FT1248_TVALID),
-        .COMTX_TDATA_o  (ADP_FT1248_TDATA),
-        .COMTX_TREADY_i (ADP_FT1248_TREADY)
+        .COMTX_TVALID_o (ADP_RXD_TVALID_o),
+        .COMTX_TDATA_o  (ADP_RXD_TDATA_o ),
+        .COMTX_TREADY_i (ADP_RXD_TREADY_i)
     );
 
     
-endmodule
\ No newline at end of file
+endmodule
diff --git a/controller/verilog/socdebug_usrt_control.v b/controller/verilog/socdebug_usrt_control.v
index 7222fbd5e53c54c49c71aaf66bbedf184d3d8aa2..768525c39359b70c783a1d0b5cf19d5f238e9dfa 100644
--- a/controller/verilog/socdebug_usrt_control.v
+++ b/controller/verilog/socdebug_usrt_control.v
@@ -39,24 +39,24 @@
 // 0x00 R     RXD[7:0]    Received Data
 //      W     TXD[7:0]    Transmit data
 // 0x04 RW    STAT[3:0]
-//              [3] RX buffer overrun (write 1 to clear)
-//              [2] TX buffer overrun (write 1 to clear)
+//              [3] RX buffer overrun (write 1 to clear)  // 0 for USRT
+//              [2] TX buffer overrun (write 1 to clear)  // 0 for USRT
 //              [1] RX buffer full (Read only)
 //              [0] TX buffer full (Read only)
 // 0x08 RW    CTRL[3:0]   TxIntEn, RxIntEn, TxEn, RxEn
 //              [6] High speed test mode Enable
-//              [5] RX overrun interrupt enable
-//              [4] TX overrun interrupt enable
+//              [5] RX overrun interrupt enable // N/A for USRT
+//              [4] TX overrun interrupt enable // N/A for USRT
 //              [3] RX Interrupt Enable
 //              [2] TX Interrupt Enable
 //              [1] RX Enable
 //              [0] TX Enable
 // 0x0C R/Wc  intr_status/INTCLEAR
-//              [3] RX overrun interrupt
-//              [2] TX overrun interrupt
+//              [3] RX overrun interrupt   // 0 for USRT
+//              [2] TX overrun interrupt   // 0 for USRT
 //              [1] RX interrupt
 //              [0] TX interrupt
-// 0x10 RW    BAUDDIV[19:0] Baud divider
+// 0x10 RW    BAUDDIV[19:0] Baud divider  // Not Used for USRT
 //            (minimum value is 16)
 // 0x3E0 - 0x3FC  ID registers
 //-------------------------------------
@@ -101,13 +101,13 @@ localparam  ARM_CMSDK_APB_UART_PID5 = 8'h00;
 localparam  ARM_CMSDK_APB_UART_PID6 = 8'h00;
 localparam  ARM_CMSDK_APB_UART_PID7 = 8'h00;
 localparam  ARM_CMSDK_APB_UART_PID0 = 8'h21;
-localparam  ARM_CMSDK_APB_UART_PID1 = 8'hB8;
-localparam  ARM_CMSDK_APB_UART_PID2 = 8'h1B;
+localparam  ARM_CMSDK_APB_UART_PID1 = 8'hb8;
+localparam  ARM_CMSDK_APB_UART_PID2 = 8'h1b;
 localparam  ARM_CMSDK_APB_UART_PID3 = 4'h0;
-localparam  ARM_CMSDK_APB_UART_CID0 = 8'h0D;
-localparam  ARM_CMSDK_APB_UART_CID1 = 8'hF0;
+localparam  ARM_CMSDK_APB_UART_CID0 = 8'h0d;
+localparam  ARM_CMSDK_APB_UART_CID1 = 8'hf0;
 localparam  ARM_CMSDK_APB_UART_CID2 = 8'h05;
-localparam  ARM_CMSDK_APB_UART_CID3 = 8'hB1;
+localparam  ARM_CMSDK_APB_UART_CID3 = 8'hb1;
 
 // original external IOs
 wire        RXD = 1'b1; // Serial input
@@ -315,8 +315,6 @@ assign  write_enable10 = write_enable & (PADDR[11:2] == 10'h004);
     end
   end
 
-
-
   // Register read data
   always @(posedge PCLKG or negedge PRESETn)
   begin
@@ -411,7 +409,7 @@ assign  write_enable10 = write_enable & (PADDR[11:2] == 10'h004);
   begin
     if (~PRESETn)
       tx_buf_full     <= 1'b0;
-    else if (write_enable00) // | tx_buf_clear)
+    else if (write_enable00 & reg_ctrl[0]) // | tx_buf_clear)
       tx_buf_full     <= write_enable00;
     else if (tx_buf_full & TX_READY_i) // AXI stream ack
       tx_buf_full <= 0;
@@ -419,159 +417,21 @@ assign  write_enable10 = write_enable & (PADDR[11:2] == 10'h004);
 
   assign TX_VALID_o = tx_buf_full;
 
-  // Increment TickCounter
-  assign nxt_tx_tick_cnt = ((tx_state==4'h1) & reg_baud_tick) ? {5{1'b0}} :
-                        tx_tick_cnt + {{3{1'b0}},reg_baud_tick};
-
-  // Registering TickCounter
-  always @(posedge PCLK or negedge PRESETn)
-  begin
-    if (~PRESETn)
-      tx_tick_cnt     <= {4{1'b0}};
-    else if (reg_baud_tick)
-      tx_tick_cnt     <= nxt_tx_tick_cnt[3:0];
-  end
-
-  // Increment state (except Idle(0) and Wait for Tick(1))
-  assign tx_state_inc   = (((&tx_tick_cnt)|(tx_state==4'h1)) & reg_baud_tick)|reg_ctrl[6];
-          // state increment every cycle of high speed test mode is enabled
-  // Clear buffer full status when data is load into shift register
-  assign tx_buf_clear   = ((tx_state==4'h0) & tx_buf_full) |
-                        ((tx_state==4'hB) & tx_buf_full & tx_state_inc);
-
-  // tx_state machine
-  // 0 = Idle, 1 =  Wait for Tick,
-  // 2 = Start bit, 3 = D0 .... 10 = D7
-  // 11 = Stop bit
-  always @(tx_state or tx_buf_full or tx_state_inc or reg_ctrl)
-  begin
-  case (tx_state)
-    0: begin
-       nxt_tx_state = (tx_buf_full & reg_ctrl[0]) ? 5'h01 : 5'h00;  // New data is written to buffer
-       end
-    1,                         // State 1   : Wait for next Tick
-    2,3,4,5,6,7,8,9,10: begin  // State 2-10: Start bit, D0 - D7
-       nxt_tx_state = tx_state + {3'b000,tx_state_inc};
-       end
-    11: begin // Stop bit , goto next start bit or Idle
-       nxt_tx_state = (tx_state_inc) ? ( tx_buf_full ? 5'h02:5'h00) : {1'b0, tx_state};
-       end
-    default:
-       nxt_tx_state = {5{1'bx}};
-  endcase
-  end
-
-  assign tx_state_update = tx_state_inc | ((tx_state==4'h0) & tx_buf_full & reg_ctrl[0]) | (tx_state>4'd11);
-
-  // Registering outputs
-  always @(posedge PCLK or negedge PRESETn)
-  begin
-    if (~PRESETn)
-      tx_state        <= {4{1'b0}};
-    else if (tx_state_update)
-      tx_state        <= nxt_tx_state[3:0];
-  end
-
-  // Load/shift TX register
-  assign tx_buf_ctrl_load  = (((tx_state==4'h0) & tx_buf_full) |
-                              ((tx_state==4'hB) & tx_buf_full & tx_state_inc));
-  assign tx_buf_ctrl_shift =  ((tx_state>4'h2) & tx_state_inc);
-
-  assign nxt_tx_shift_buf = tx_buf_ctrl_load ? reg_tx_buf[7:0] : {1'b1,tx_shift_buf[7:1]};
-
-  // Registering TX shift register
-  always @(posedge PCLK or negedge PRESETn)
-  begin
-    if (~PRESETn)
-      tx_shift_buf    <= {8{1'b0}};
-    else if (tx_buf_ctrl_shift | tx_buf_ctrl_load)
-      tx_shift_buf    <= nxt_tx_shift_buf;
-  end
-
-  // Data output
-  assign nxt_txd = (tx_state==4'h2) ? 1'b0 :
-                   (tx_state>4'h2) ? tx_shift_buf[0] : 1'b1;
-
-  assign update_reg_txd = (nxt_txd != reg_txd);
-
-  // Registering outputs
-  always @(posedge PCLK or negedge PRESETn)
-  begin
-    if (~PRESETn)
-      reg_txd         <= 1'b1;
-    else if (update_reg_txd)
-      reg_txd         <= nxt_txd;
-  end
-
   // Generate TX overrun error status
-  assign tx_overrun = tx_buf_full & (~tx_buf_clear) & write_enable00;
+///  assign tx_overrun = tx_buf_full & (~tx_buf_clear) & write_enable00;
+  assign tx_overrun = tx_buf_full & write_enable00;
 
   // Connect to external
   assign TXD  = reg_txd;
   assign TXEN = reg_ctrl[0];
 
-// --------------------------------------------
-// Receive synchronizer and low pass filter
-
-  // Doubling Flip-flop synxt_rx_tick_cntnchroniser
-  always @(posedge PCLK or negedge PRESETn)
-  begin
-    if (~PRESETn)
-      begin
-      rxd_sync_1 <= 1'b1;
-      rxd_sync_2 <= 1'b1;
-      end
-    else if (reg_ctrl[1]) // Turn off synchronizer if receive is not enabled
-      begin
-      rxd_sync_1 <= RXD;
-      rxd_sync_2 <= rxd_sync_1;
-      end
-  end
-
-  // Averaging low pass filter
-  assign nxt_rxd_lpf = {rxd_lpf[1:0], rxd_sync_2};
-  // Registering stage for low pass filter
-  always @(posedge PCLK or negedge PRESETn)
-  begin
-    if (~PRESETn)
-      rxd_lpf <= 3'b111;
-    else if (reg_baud_tick)
-      rxd_lpf <= nxt_rxd_lpf;
-  end
-
-  // Averaging values
-  assign rx_shift_in = (rxd_lpf[1] & rxd_lpf[0]) |
-                       (rxd_lpf[1] & rxd_lpf[2]) |
-                       (rxd_lpf[0] & rxd_lpf[2]);
 
 // --------------------------------------------
 // Receive
 
-assign RX_READY_o = !rx_buf_full;
-
 
-  // Increment TickCounter
-  assign nxt_rx_tick_cnt = ((rx_state==4'h0) & (~rx_shift_in)) ? 5'h08 :
-                        rx_tick_cnt + {{3{1'b0}},reg_baud_tick};
-
-  assign update_rx_tick_cnt = ((rx_state==4'h0) & (~rx_shift_in)) | reg_baud_tick;
-
-  // Registering other register
-  always @(posedge PCLK or negedge PRESETn)
-  begin
-    if (~PRESETn)
-      rx_tick_cnt    <= {4{1'b0}};
-    else if (update_rx_tick_cnt)
-      rx_tick_cnt    <= nxt_rx_tick_cnt[3:0];
-  end
-
-  // Increment state
-  assign rx_state_inc   = ((&rx_tick_cnt) & reg_baud_tick);
-  // Buffer full status
   assign nxt_rx_buf_full = rxbuf_sample | (rx_buf_full & (~rx_data_read));
 
-  // Sample shift register when D7 is sampled
-///  assign rxbuf_sample  = ((rx_state==4'h9) & rx_state_inc);
   assign rxbuf_sample  = RX_VALID_i & !rx_buf_full;
 
   // Reading receive buffer (Set at 1st cycle of APB transfer
@@ -580,81 +440,33 @@ assign RX_READY_o = !rx_buf_full;
   // Generate RX overrun error status
   assign rx_overrun = rx_buf_full & rxbuf_sample & (~rx_data_read);
 
-  // rx_state machine
-  // 0 = Idle, 1 =  Start of Start bit detected
-  // 2 = Sample Start bit, 3 = D0 .... 10 = D7
-  // 11 = Stop bit
-  // 11, 12, 13, 14, 15: illegal/unused states
-  always @(rx_state or rx_shift_in or rx_state_inc or reg_ctrl)
-  begin
-  case (rx_state)
-    0: begin
-       nxt_rx_state = ((~rx_shift_in) & reg_ctrl[1]) ? 5'h01 : 5'h00;  // Wait for Start bit
-       end
-    1,                      // State 1  : Wait for middle of start bit
-    2,3,4,5,6,7,8,9: begin  // State 2-9: D0 - D7
-       nxt_rx_state = rx_state + {3'b000,rx_state_inc};
-       end
-    10: begin // Stop bit , goto back to Idle
-       nxt_rx_state = (rx_state_inc) ? 5'h00 : 5'h0A;
-       end
-    default:
-       nxt_rx_state = {5{1'bx}};
-  endcase
-  end
-
-  assign rx_state_update = rx_state_inc |  ((~rx_shift_in) & reg_ctrl[1]);
-
-  // Registering rx_state
-  always @(posedge PCLK or negedge PRESETn)
-  begin
-    if (~PRESETn)
-      rx_state       <= {4{1'b0}};
-    else if (rx_state_update)
-      rx_state       <= nxt_rx_state[3:0];
-  end
-
   // Buffer full status
   always @(posedge PCLK or negedge PRESETn)
   begin
     if (~PRESETn)
       rx_buf_full     <= 1'b0;
-    else if (rxbuf_sample | rx_data_read)
+    else if ( reg_ctrl[1] & (rxbuf_sample | rx_data_read))
       rx_buf_full     <= nxt_rx_buf_full;
   end
 
-  // Sample receive buffer
-///  assign nxt_rx_buf     = {rx_shift_in, rx_shift_buf};
-  assign nxt_rx_buf     = RX_DATA8_i[7:0];
-  
+  assign RX_READY_o = !rx_buf_full;
+
   // Registering receive data buffer
   always @(posedge PCLK or negedge PRESETn)
   begin
     if (~PRESETn)
       reg_rx_buf      <= {8{1'b0}};
     else if  (rxbuf_sample)
-      reg_rx_buf      <= nxt_rx_buf;
+      reg_rx_buf      <=  RX_DATA8_i[7:0];
   end
 
-  // Shift register
-  assign nxt_rx_shift_buf= {rx_shift_in, rx_shift_buf[6:1]};
-  // Registering shift buffer
-  always @(posedge PCLK or negedge PRESETn)
-  begin
-    if (~PRESETn)
-      rx_shift_buf    <= {7{1'b0}};
-    else if (rx_state_inc)
-      rx_shift_buf    <= nxt_rx_shift_buf;
-  end
-
-
-
 // --------------------------------------------
 // Interrupts
   // Set by event
-  assign intr_stat_set[1] = reg_ctrl[3] & rxbuf_sample; // A new receive data is sampled
-  assign intr_stat_set[0] = reg_ctrl[2] & reg_ctrl[0] & tx_buf_full & tx_buf_clear;
-                            // Falling edge of buffer full
+///  assign intr_stat_set[1] = reg_ctrl[3] & rxbuf_sample; // A new receive data is sampled
+  assign intr_stat_set[1] = reg_ctrl[3] & reg_ctrl[1] & rxbuf_sample; // A new receive data is sampled
+///  assign intr_stat_set[0] = reg_ctrl[2] & reg_ctrl[0] & tx_buf_full; // & tx_buf_clear;
+  assign intr_stat_set[0] = reg_ctrl[2] & reg_ctrl[0] & tx_buf_full & TX_READY_i; // Falling edge of buffer full
   // Clear by write to IntClear register
   assign intr_stat_clear[1:0] = {2{write_enable0c}} & PWDATA[1:0];
 
diff --git a/socket/vivado_packages/extio8x4_axis_target_1.0/component.xml b/socket/vivado_packages/extio8x4_axis_target_1.0/component.xml
new file mode 100644
index 0000000000000000000000000000000000000000..600b83d11ea32e65cc2e4a37af253f1f88d30ef4
--- /dev/null
+++ b/socket/vivado_packages/extio8x4_axis_target_1.0/component.xml
@@ -0,0 +1,690 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<spirit:component xmlns:xilinx="http://www.xilinx.com" xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <spirit:vendor>soclabs.org</spirit:vendor>
+  <spirit:library>slip</spirit:library>
+  <spirit:name>extio8x4_axis_target</spirit:name>
+  <spirit:version>1.0</spirit:version>
+  <spirit:busInterfaces>
+    <spirit:busInterface>
+      <spirit:name>axis_rx0</spirit:name>
+      <spirit:busType spirit:vendor="xilinx.com" spirit:library="interface" spirit:name="axis" spirit:version="1.0"/>
+      <spirit:abstractionType spirit:vendor="xilinx.com" spirit:library="interface" spirit:name="axis_rtl" spirit:version="1.0"/>
+      <spirit:slave/>
+      <spirit:portMaps>
+        <spirit:portMap>
+          <spirit:logicalPort>
+            <spirit:name>TVALID</spirit:name>
+          </spirit:logicalPort>
+          <spirit:physicalPort>
+            <spirit:name>axis_rx0_tvalid</spirit:name>
+          </spirit:physicalPort>
+        </spirit:portMap>
+        <spirit:portMap>
+          <spirit:logicalPort>
+            <spirit:name>TREADY</spirit:name>
+          </spirit:logicalPort>
+          <spirit:physicalPort>
+            <spirit:name>axis_rx0_tready</spirit:name>
+          </spirit:physicalPort>
+        </spirit:portMap>
+        <spirit:portMap>
+          <spirit:logicalPort>
+            <spirit:name>TDATA</spirit:name>
+          </spirit:logicalPort>
+          <spirit:physicalPort>
+            <spirit:name>axis_rx0_tdata8</spirit:name>
+          </spirit:physicalPort>
+        </spirit:portMap>
+      </spirit:portMaps>
+    </spirit:busInterface>
+    <spirit:busInterface>
+      <spirit:name>axis_rx1</spirit:name>
+      <spirit:busType spirit:vendor="xilinx.com" spirit:library="interface" spirit:name="axis" spirit:version="1.0"/>
+      <spirit:abstractionType spirit:vendor="xilinx.com" spirit:library="interface" spirit:name="axis_rtl" spirit:version="1.0"/>
+      <spirit:slave/>
+      <spirit:portMaps>
+        <spirit:portMap>
+          <spirit:logicalPort>
+            <spirit:name>TVALID</spirit:name>
+          </spirit:logicalPort>
+          <spirit:physicalPort>
+            <spirit:name>axis_rx1_tvalid</spirit:name>
+          </spirit:physicalPort>
+        </spirit:portMap>
+        <spirit:portMap>
+          <spirit:logicalPort>
+            <spirit:name>TREADY</spirit:name>
+          </spirit:logicalPort>
+          <spirit:physicalPort>
+            <spirit:name>axis_rx1_tready</spirit:name>
+          </spirit:physicalPort>
+        </spirit:portMap>
+        <spirit:portMap>
+          <spirit:logicalPort>
+            <spirit:name>TDATA</spirit:name>
+          </spirit:logicalPort>
+          <spirit:physicalPort>
+            <spirit:name>axis_rx1_tdata8</spirit:name>
+          </spirit:physicalPort>
+        </spirit:portMap>
+      </spirit:portMaps>
+    </spirit:busInterface>
+    <spirit:busInterface>
+      <spirit:name>axis_tx0</spirit:name>
+      <spirit:busType spirit:vendor="xilinx.com" spirit:library="interface" spirit:name="axis" spirit:version="1.0"/>
+      <spirit:abstractionType spirit:vendor="xilinx.com" spirit:library="interface" spirit:name="axis_rtl" spirit:version="1.0"/>
+      <spirit:master/>
+      <spirit:portMaps>
+        <spirit:portMap>
+          <spirit:logicalPort>
+            <spirit:name>TVALID</spirit:name>
+          </spirit:logicalPort>
+          <spirit:physicalPort>
+            <spirit:name>axis_tx0_tvalid</spirit:name>
+          </spirit:physicalPort>
+        </spirit:portMap>
+        <spirit:portMap>
+          <spirit:logicalPort>
+            <spirit:name>TREADY</spirit:name>
+          </spirit:logicalPort>
+          <spirit:physicalPort>
+            <spirit:name>axis_tx0_tready</spirit:name>
+          </spirit:physicalPort>
+        </spirit:portMap>
+        <spirit:portMap>
+          <spirit:logicalPort>
+            <spirit:name>TDATA</spirit:name>
+          </spirit:logicalPort>
+          <spirit:physicalPort>
+            <spirit:name>axis_tx0_tdata8</spirit:name>
+          </spirit:physicalPort>
+        </spirit:portMap>
+      </spirit:portMaps>
+    </spirit:busInterface>
+    <spirit:busInterface>
+      <spirit:name>axis_tx1</spirit:name>
+      <spirit:busType spirit:vendor="xilinx.com" spirit:library="interface" spirit:name="axis" spirit:version="1.0"/>
+      <spirit:abstractionType spirit:vendor="xilinx.com" spirit:library="interface" spirit:name="axis_rtl" spirit:version="1.0"/>
+      <spirit:master/>
+      <spirit:portMaps>
+        <spirit:portMap>
+          <spirit:logicalPort>
+            <spirit:name>TVALID</spirit:name>
+          </spirit:logicalPort>
+          <spirit:physicalPort>
+            <spirit:name>axis_tx1_tvalid</spirit:name>
+          </spirit:physicalPort>
+        </spirit:portMap>
+        <spirit:portMap>
+          <spirit:logicalPort>
+            <spirit:name>TREADY</spirit:name>
+          </spirit:logicalPort>
+          <spirit:physicalPort>
+            <spirit:name>axis_tx1_tready</spirit:name>
+          </spirit:physicalPort>
+        </spirit:portMap>
+        <spirit:portMap>
+          <spirit:logicalPort>
+            <spirit:name>TDATA</spirit:name>
+          </spirit:logicalPort>
+          <spirit:physicalPort>
+            <spirit:name>axis_tx1_tdata8</spirit:name>
+          </spirit:physicalPort>
+        </spirit:portMap>
+      </spirit:portMaps>
+    </spirit:busInterface>
+    <spirit:busInterface>
+      <spirit:name>resetn</spirit:name>
+      <spirit:busType spirit:vendor="xilinx.com" spirit:library="signal" spirit:name="reset" spirit:version="1.0"/>
+      <spirit:abstractionType spirit:vendor="xilinx.com" spirit:library="signal" spirit:name="reset_rtl" spirit:version="1.0"/>
+      <spirit:slave/>
+      <spirit:portMaps>
+        <spirit:portMap>
+          <spirit:logicalPort>
+            <spirit:name>RST</spirit:name>
+          </spirit:logicalPort>
+          <spirit:physicalPort>
+            <spirit:name>resetn</spirit:name>
+          </spirit:physicalPort>
+        </spirit:portMap>
+      </spirit:portMaps>
+      <spirit:parameters>
+        <spirit:parameter>
+          <spirit:name>POLARITY</spirit:name>
+          <spirit:value spirit:id="BUSIFPARAM_VALUE.RESETN.POLARITY" spirit:choiceRef="choice_list_9d8b0d81">ACTIVE_LOW</spirit:value>
+        </spirit:parameter>
+      </spirit:parameters>
+    </spirit:busInterface>
+    <spirit:busInterface>
+      <spirit:name>clk</spirit:name>
+      <spirit:busType spirit:vendor="xilinx.com" spirit:library="signal" spirit:name="clock" spirit:version="1.0"/>
+      <spirit:abstractionType spirit:vendor="xilinx.com" spirit:library="signal" spirit:name="clock_rtl" spirit:version="1.0"/>
+      <spirit:slave/>
+      <spirit:portMaps>
+        <spirit:portMap>
+          <spirit:logicalPort>
+            <spirit:name>CLK</spirit:name>
+          </spirit:logicalPort>
+          <spirit:physicalPort>
+            <spirit:name>clk</spirit:name>
+          </spirit:physicalPort>
+        </spirit:portMap>
+      </spirit:portMaps>
+      <spirit:parameters>
+        <spirit:parameter>
+          <spirit:name>ASSOCIATED_BUSIF</spirit:name>
+          <spirit:value spirit:id="BUSIFPARAM_VALUE.CLK.ASSOCIATED_BUSIF">axis_rx0:axis_rx1:axis_tx0:axis_tx1</spirit:value>
+        </spirit:parameter>
+        <spirit:parameter>
+          <spirit:name>ASSOCIATED_RESET</spirit:name>
+          <spirit:value spirit:id="BUSIFPARAM_VALUE.CLK.ASSOCIATED_RESET">resetn</spirit:value>
+        </spirit:parameter>
+      </spirit:parameters>
+    </spirit:busInterface>
+  </spirit:busInterfaces>
+  <spirit:model>
+    <spirit:views>
+      <spirit:view>
+        <spirit:name>xilinx_anylanguagesynthesis</spirit:name>
+        <spirit:displayName>Synthesis</spirit:displayName>
+        <spirit:envIdentifier>:vivado.xilinx.com:synthesis</spirit:envIdentifier>
+        <spirit:language>Verilog</spirit:language>
+        <spirit:modelName>extio8x4_axis_target</spirit:modelName>
+        <spirit:fileSetRef>
+          <spirit:localName>xilinx_anylanguagesynthesis_view_fileset</spirit:localName>
+        </spirit:fileSetRef>
+        <spirit:parameters>
+          <spirit:parameter>
+            <spirit:name>viewChecksum</spirit:name>
+            <spirit:value>42b891ef</spirit:value>
+          </spirit:parameter>
+        </spirit:parameters>
+      </spirit:view>
+      <spirit:view>
+        <spirit:name>xilinx_anylanguagebehavioralsimulation</spirit:name>
+        <spirit:displayName>Simulation</spirit:displayName>
+        <spirit:envIdentifier>:vivado.xilinx.com:simulation</spirit:envIdentifier>
+        <spirit:language>Verilog</spirit:language>
+        <spirit:modelName>extio8x4_axis_target</spirit:modelName>
+        <spirit:fileSetRef>
+          <spirit:localName>xilinx_anylanguagebehavioralsimulation_view_fileset</spirit:localName>
+        </spirit:fileSetRef>
+        <spirit:parameters>
+          <spirit:parameter>
+            <spirit:name>viewChecksum</spirit:name>
+            <spirit:value>42b891ef</spirit:value>
+          </spirit:parameter>
+        </spirit:parameters>
+      </spirit:view>
+      <spirit:view>
+        <spirit:name>xilinx_xpgui</spirit:name>
+        <spirit:displayName>UI Layout</spirit:displayName>
+        <spirit:envIdentifier>:vivado.xilinx.com:xgui.ui</spirit:envIdentifier>
+        <spirit:fileSetRef>
+          <spirit:localName>xilinx_xpgui_view_fileset</spirit:localName>
+        </spirit:fileSetRef>
+        <spirit:parameters>
+          <spirit:parameter>
+            <spirit:name>viewChecksum</spirit:name>
+            <spirit:value>f92e9879</spirit:value>
+          </spirit:parameter>
+        </spirit:parameters>
+      </spirit:view>
+      <spirit:view>
+        <spirit:name>archive_project</spirit:name>
+        <spirit:displayName>Miscellaneous</spirit:displayName>
+        <spirit:envIdentifier>:vivado.xilinx.com:misc.files</spirit:envIdentifier>
+        <spirit:fileSetRef>
+          <spirit:localName>archive_project_view_fileset</spirit:localName>
+        </spirit:fileSetRef>
+        <spirit:parameters>
+          <spirit:parameter>
+            <spirit:name>viewChecksum</spirit:name>
+            <spirit:value>9350a4b0</spirit:value>
+          </spirit:parameter>
+        </spirit:parameters>
+      </spirit:view>
+    </spirit:views>
+    <spirit:ports>
+      <spirit:port>
+        <spirit:name>clk</spirit:name>
+        <spirit:wire>
+          <spirit:direction>in</spirit:direction>
+          <spirit:wireTypeDefs>
+            <spirit:wireTypeDef>
+              <spirit:typeName>wire</spirit:typeName>
+              <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef>
+              <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef>
+            </spirit:wireTypeDef>
+          </spirit:wireTypeDefs>
+        </spirit:wire>
+      </spirit:port>
+      <spirit:port>
+        <spirit:name>resetn</spirit:name>
+        <spirit:wire>
+          <spirit:direction>in</spirit:direction>
+          <spirit:wireTypeDefs>
+            <spirit:wireTypeDef>
+              <spirit:typeName>wire</spirit:typeName>
+              <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef>
+              <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef>
+            </spirit:wireTypeDef>
+          </spirit:wireTypeDefs>
+        </spirit:wire>
+      </spirit:port>
+      <spirit:port>
+        <spirit:name>testmode</spirit:name>
+        <spirit:wire>
+          <spirit:direction>in</spirit:direction>
+          <spirit:wireTypeDefs>
+            <spirit:wireTypeDef>
+              <spirit:typeName>wire</spirit:typeName>
+              <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef>
+              <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef>
+            </spirit:wireTypeDef>
+          </spirit:wireTypeDefs>
+        </spirit:wire>
+      </spirit:port>
+      <spirit:port>
+        <spirit:name>axis_rx0_tready</spirit:name>
+        <spirit:wire>
+          <spirit:direction>out</spirit:direction>
+          <spirit:wireTypeDefs>
+            <spirit:wireTypeDef>
+              <spirit:typeName>wire</spirit:typeName>
+              <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef>
+              <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef>
+            </spirit:wireTypeDef>
+          </spirit:wireTypeDefs>
+        </spirit:wire>
+      </spirit:port>
+      <spirit:port>
+        <spirit:name>axis_rx0_tvalid</spirit:name>
+        <spirit:wire>
+          <spirit:direction>in</spirit:direction>
+          <spirit:wireTypeDefs>
+            <spirit:wireTypeDef>
+              <spirit:typeName>wire</spirit:typeName>
+              <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef>
+              <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef>
+            </spirit:wireTypeDef>
+          </spirit:wireTypeDefs>
+        </spirit:wire>
+      </spirit:port>
+      <spirit:port>
+        <spirit:name>axis_rx0_tdata8</spirit:name>
+        <spirit:wire>
+          <spirit:direction>in</spirit:direction>
+          <spirit:vector>
+            <spirit:left spirit:format="long">7</spirit:left>
+            <spirit:right spirit:format="long">0</spirit:right>
+          </spirit:vector>
+          <spirit:wireTypeDefs>
+            <spirit:wireTypeDef>
+              <spirit:typeName>wire</spirit:typeName>
+              <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef>
+              <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef>
+            </spirit:wireTypeDef>
+          </spirit:wireTypeDefs>
+        </spirit:wire>
+      </spirit:port>
+      <spirit:port>
+        <spirit:name>axis_rx1_tready</spirit:name>
+        <spirit:wire>
+          <spirit:direction>out</spirit:direction>
+          <spirit:wireTypeDefs>
+            <spirit:wireTypeDef>
+              <spirit:typeName>wire</spirit:typeName>
+              <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef>
+              <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef>
+            </spirit:wireTypeDef>
+          </spirit:wireTypeDefs>
+        </spirit:wire>
+      </spirit:port>
+      <spirit:port>
+        <spirit:name>axis_rx1_tvalid</spirit:name>
+        <spirit:wire>
+          <spirit:direction>in</spirit:direction>
+          <spirit:wireTypeDefs>
+            <spirit:wireTypeDef>
+              <spirit:typeName>wire</spirit:typeName>
+              <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef>
+              <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef>
+            </spirit:wireTypeDef>
+          </spirit:wireTypeDefs>
+        </spirit:wire>
+      </spirit:port>
+      <spirit:port>
+        <spirit:name>axis_rx1_tdata8</spirit:name>
+        <spirit:wire>
+          <spirit:direction>in</spirit:direction>
+          <spirit:vector>
+            <spirit:left spirit:format="long">7</spirit:left>
+            <spirit:right spirit:format="long">0</spirit:right>
+          </spirit:vector>
+          <spirit:wireTypeDefs>
+            <spirit:wireTypeDef>
+              <spirit:typeName>wire</spirit:typeName>
+              <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef>
+              <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef>
+            </spirit:wireTypeDef>
+          </spirit:wireTypeDefs>
+        </spirit:wire>
+      </spirit:port>
+      <spirit:port>
+        <spirit:name>axis_tx0_tready</spirit:name>
+        <spirit:wire>
+          <spirit:direction>in</spirit:direction>
+          <spirit:wireTypeDefs>
+            <spirit:wireTypeDef>
+              <spirit:typeName>wire</spirit:typeName>
+              <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef>
+              <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef>
+            </spirit:wireTypeDef>
+          </spirit:wireTypeDefs>
+          <spirit:driver>
+            <spirit:defaultValue spirit:format="long">1</spirit:defaultValue>
+          </spirit:driver>
+        </spirit:wire>
+      </spirit:port>
+      <spirit:port>
+        <spirit:name>axis_tx0_tvalid</spirit:name>
+        <spirit:wire>
+          <spirit:direction>out</spirit:direction>
+          <spirit:wireTypeDefs>
+            <spirit:wireTypeDef>
+              <spirit:typeName>wire</spirit:typeName>
+              <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef>
+              <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef>
+            </spirit:wireTypeDef>
+          </spirit:wireTypeDefs>
+        </spirit:wire>
+      </spirit:port>
+      <spirit:port>
+        <spirit:name>axis_tx0_tdata8</spirit:name>
+        <spirit:wire>
+          <spirit:direction>out</spirit:direction>
+          <spirit:vector>
+            <spirit:left spirit:format="long">7</spirit:left>
+            <spirit:right spirit:format="long">0</spirit:right>
+          </spirit:vector>
+          <spirit:wireTypeDefs>
+            <spirit:wireTypeDef>
+              <spirit:typeName>wire</spirit:typeName>
+              <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef>
+              <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef>
+            </spirit:wireTypeDef>
+          </spirit:wireTypeDefs>
+        </spirit:wire>
+      </spirit:port>
+      <spirit:port>
+        <spirit:name>axis_tx1_tready</spirit:name>
+        <spirit:wire>
+          <spirit:direction>in</spirit:direction>
+          <spirit:wireTypeDefs>
+            <spirit:wireTypeDef>
+              <spirit:typeName>wire</spirit:typeName>
+              <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef>
+              <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef>
+            </spirit:wireTypeDef>
+          </spirit:wireTypeDefs>
+          <spirit:driver>
+            <spirit:defaultValue spirit:format="long">1</spirit:defaultValue>
+          </spirit:driver>
+        </spirit:wire>
+      </spirit:port>
+      <spirit:port>
+        <spirit:name>axis_tx1_tvalid</spirit:name>
+        <spirit:wire>
+          <spirit:direction>out</spirit:direction>
+          <spirit:wireTypeDefs>
+            <spirit:wireTypeDef>
+              <spirit:typeName>wire</spirit:typeName>
+              <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef>
+              <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef>
+            </spirit:wireTypeDef>
+          </spirit:wireTypeDefs>
+        </spirit:wire>
+      </spirit:port>
+      <spirit:port>
+        <spirit:name>axis_tx1_tdata8</spirit:name>
+        <spirit:wire>
+          <spirit:direction>out</spirit:direction>
+          <spirit:vector>
+            <spirit:left spirit:format="long">7</spirit:left>
+            <spirit:right spirit:format="long">0</spirit:right>
+          </spirit:vector>
+          <spirit:wireTypeDefs>
+            <spirit:wireTypeDef>
+              <spirit:typeName>wire</spirit:typeName>
+              <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef>
+              <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef>
+            </spirit:wireTypeDef>
+          </spirit:wireTypeDefs>
+        </spirit:wire>
+      </spirit:port>
+      <spirit:port>
+        <spirit:name>iodata4_i</spirit:name>
+        <spirit:wire>
+          <spirit:direction>in</spirit:direction>
+          <spirit:vector>
+            <spirit:left spirit:format="long">3</spirit:left>
+            <spirit:right spirit:format="long">0</spirit:right>
+          </spirit:vector>
+          <spirit:wireTypeDefs>
+            <spirit:wireTypeDef>
+              <spirit:typeName>wire</spirit:typeName>
+              <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef>
+              <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef>
+            </spirit:wireTypeDef>
+          </spirit:wireTypeDefs>
+        </spirit:wire>
+      </spirit:port>
+      <spirit:port>
+        <spirit:name>iodata4_o</spirit:name>
+        <spirit:wire>
+          <spirit:direction>out</spirit:direction>
+          <spirit:vector>
+            <spirit:left spirit:format="long">3</spirit:left>
+            <spirit:right spirit:format="long">0</spirit:right>
+          </spirit:vector>
+          <spirit:wireTypeDefs>
+            <spirit:wireTypeDef>
+              <spirit:typeName>wire</spirit:typeName>
+              <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef>
+              <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef>
+            </spirit:wireTypeDef>
+          </spirit:wireTypeDefs>
+        </spirit:wire>
+      </spirit:port>
+      <spirit:port>
+        <spirit:name>iodata4_e</spirit:name>
+        <spirit:wire>
+          <spirit:direction>out</spirit:direction>
+          <spirit:vector>
+            <spirit:left spirit:format="long">3</spirit:left>
+            <spirit:right spirit:format="long">0</spirit:right>
+          </spirit:vector>
+          <spirit:wireTypeDefs>
+            <spirit:wireTypeDef>
+              <spirit:typeName>wire</spirit:typeName>
+              <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef>
+              <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef>
+            </spirit:wireTypeDef>
+          </spirit:wireTypeDefs>
+        </spirit:wire>
+      </spirit:port>
+      <spirit:port>
+        <spirit:name>iodata4_t</spirit:name>
+        <spirit:wire>
+          <spirit:direction>out</spirit:direction>
+          <spirit:vector>
+            <spirit:left spirit:format="long">3</spirit:left>
+            <spirit:right spirit:format="long">0</spirit:right>
+          </spirit:vector>
+          <spirit:wireTypeDefs>
+            <spirit:wireTypeDef>
+              <spirit:typeName>wire</spirit:typeName>
+              <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef>
+              <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef>
+            </spirit:wireTypeDef>
+          </spirit:wireTypeDefs>
+        </spirit:wire>
+      </spirit:port>
+      <spirit:port>
+        <spirit:name>ioreq1_a</spirit:name>
+        <spirit:wire>
+          <spirit:direction>in</spirit:direction>
+          <spirit:wireTypeDefs>
+            <spirit:wireTypeDef>
+              <spirit:typeName>wire</spirit:typeName>
+              <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef>
+              <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef>
+            </spirit:wireTypeDef>
+          </spirit:wireTypeDefs>
+        </spirit:wire>
+      </spirit:port>
+      <spirit:port>
+        <spirit:name>ioreq2_a</spirit:name>
+        <spirit:wire>
+          <spirit:direction>in</spirit:direction>
+          <spirit:wireTypeDefs>
+            <spirit:wireTypeDef>
+              <spirit:typeName>wire</spirit:typeName>
+              <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef>
+              <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef>
+            </spirit:wireTypeDef>
+          </spirit:wireTypeDefs>
+        </spirit:wire>
+      </spirit:port>
+      <spirit:port>
+        <spirit:name>ioack_o</spirit:name>
+        <spirit:wire>
+          <spirit:direction>out</spirit:direction>
+          <spirit:wireTypeDefs>
+            <spirit:wireTypeDef>
+              <spirit:typeName>wire</spirit:typeName>
+              <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef>
+              <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef>
+            </spirit:wireTypeDef>
+          </spirit:wireTypeDefs>
+        </spirit:wire>
+      </spirit:port>
+    </spirit:ports>
+  </spirit:model>
+  <spirit:choices>
+    <spirit:choice>
+      <spirit:name>choice_list_9d8b0d81</spirit:name>
+      <spirit:enumeration>ACTIVE_HIGH</spirit:enumeration>
+      <spirit:enumeration>ACTIVE_LOW</spirit:enumeration>
+    </spirit:choice>
+  </spirit:choices>
+  <spirit:fileSets>
+    <spirit:fileSet>
+      <spirit:name>xilinx_anylanguagesynthesis_view_fileset</spirit:name>
+      <spirit:file>
+        <spirit:name>src/extio8x4_target.xdc</spirit:name>
+        <spirit:userFileType>xdc</spirit:userFileType>
+        <spirit:userFileType>IMPORTED_FILE</spirit:userFileType>
+      </spirit:file>
+      <spirit:file>
+        <spirit:name>src/extio8x4_sync.v</spirit:name>
+        <spirit:fileType>verilogSource</spirit:fileType>
+        <spirit:userFileType>IMPORTED_FILE</spirit:userFileType>
+      </spirit:file>
+      <spirit:file>
+        <spirit:name>src/extio8x4_tfsm.v</spirit:name>
+        <spirit:fileType>verilogSource</spirit:fileType>
+        <spirit:userFileType>IMPORTED_FILE</spirit:userFileType>
+      </spirit:file>
+      <spirit:file>
+        <spirit:name>src/extio8x4_axis_target.v</spirit:name>
+        <spirit:fileType>verilogSource</spirit:fileType>
+        <spirit:userFileType>CHECKSUM_15edbcd4</spirit:userFileType>
+        <spirit:userFileType>IMPORTED_FILE</spirit:userFileType>
+      </spirit:file>
+    </spirit:fileSet>
+    <spirit:fileSet>
+      <spirit:name>xilinx_anylanguagebehavioralsimulation_view_fileset</spirit:name>
+      <spirit:file>
+        <spirit:name>src/extio8x4_sync.v</spirit:name>
+        <spirit:fileType>verilogSource</spirit:fileType>
+        <spirit:userFileType>IMPORTED_FILE</spirit:userFileType>
+      </spirit:file>
+      <spirit:file>
+        <spirit:name>src/extio8x4_tfsm.v</spirit:name>
+        <spirit:fileType>verilogSource</spirit:fileType>
+        <spirit:userFileType>IMPORTED_FILE</spirit:userFileType>
+      </spirit:file>
+      <spirit:file>
+        <spirit:name>src/extio8x4_axis_target.v</spirit:name>
+        <spirit:fileType>verilogSource</spirit:fileType>
+        <spirit:userFileType>IMPORTED_FILE</spirit:userFileType>
+      </spirit:file>
+    </spirit:fileSet>
+    <spirit:fileSet>
+      <spirit:name>xilinx_xpgui_view_fileset</spirit:name>
+      <spirit:file>
+        <spirit:name>xgui/extio8x4_axis_target_v1_0.tcl</spirit:name>
+        <spirit:fileType>tclSource</spirit:fileType>
+        <spirit:userFileType>CHECKSUM_f92e9879</spirit:userFileType>
+        <spirit:userFileType>XGUI_VERSION_2</spirit:userFileType>
+      </spirit:file>
+    </spirit:fileSet>
+    <spirit:fileSet>
+      <spirit:name>archive_project_view_fileset</spirit:name>
+      <spirit:file>
+        <spirit:name>ip_project_archive.zip</spirit:name>
+        <spirit:userFileType>zip</spirit:userFileType>
+      </spirit:file>
+    </spirit:fileSet>
+  </spirit:fileSets>
+  <spirit:description>extio8x4_axis_target_v1_0</spirit:description>
+  <spirit:parameters>
+    <spirit:parameter>
+      <spirit:name>Component_Name</spirit:name>
+      <spirit:value spirit:resolve="user" spirit:id="PARAM_VALUE.Component_Name" spirit:order="1">extio8x4_axis_target_v1_0</spirit:value>
+    </spirit:parameter>
+  </spirit:parameters>
+  <spirit:vendorExtensions>
+    <xilinx:coreExtensions>
+      <xilinx:supportedFamilies>
+        <xilinx:family xilinx:lifeCycle="Production">zynquplus</xilinx:family>
+      </xilinx:supportedFamilies>
+      <xilinx:taxonomies>
+        <xilinx:taxonomy>/soclabsIP</xilinx:taxonomy>
+      </xilinx:taxonomies>
+      <xilinx:displayName>extio8x4_axis_target_v1_0</xilinx:displayName>
+      <xilinx:definitionSource>package_project</xilinx:definitionSource>
+      <xilinx:coreRevision>2</xilinx:coreRevision>
+      <xilinx:coreCreationDateTime>2024-10-01T17:09:36Z</xilinx:coreCreationDateTime>
+      <xilinx:tags>
+        <xilinx:tag xilinx:name="ui.data.coregen.df@247831ce_ARCHIVE_LOCATION">/home/dwf1m12/work/extio_merge/main/accelerator-project/nanosoc_tech/nanosoc/socdebug_tech/socket/vivado_packages</xilinx:tag>
+        <xilinx:tag xilinx:name="ui.data.coregen.df@3e3d1f50_ARCHIVE_LOCATION">/home/dwf1m12/work/extio_merge/main/accelerator-project/nanosoc_tech/nanosoc/socdebug_tech/socket/vivado_packages</xilinx:tag>
+        <xilinx:tag xilinx:name="ui.data.coregen.df@3c1d5142_ARCHIVE_LOCATION">/home/dwf1m12/work/extio_merge/main/accelerator-project/nanosoc_tech/nanosoc/socdebug_tech/socket/vivado_packages</xilinx:tag>
+        <xilinx:tag xilinx:name="ui.data.coregen.df@7af2b751_ARCHIVE_LOCATION">/home/dwf1m12/work/extio_merge/main/accelerator-project/nanosoc_tech/nanosoc/socdebug_tech/socket/vivado_packages</xilinx:tag>
+        <xilinx:tag xilinx:name="ui.data.coregen.df@6d2b230e_ARCHIVE_LOCATION">/home/dwf1m12/work/extio_merge/main/accelerator-project/nanosoc_tech/nanosoc/socdebug_tech/socket/vivado_packages</xilinx:tag>
+        <xilinx:tag xilinx:name="ui.data.coregen.df@6fcfda9d_ARCHIVE_LOCATION">/home/dwf1m12/work/extio_merge/main/accelerator-project/nanosoc_tech/nanosoc/socdebug_tech/socket/vivado_packages</xilinx:tag>
+        <xilinx:tag xilinx:name="ui.data.coregen.df@384b91c2_ARCHIVE_LOCATION">/home/dwf1m12/work/extio_merge/main/accelerator-project/nanosoc_tech/nanosoc/socdebug_tech/socket/vivado_packages</xilinx:tag>
+        <xilinx:tag xilinx:name="ui.data.coregen.df@779d5616_ARCHIVE_LOCATION">/home/dwf1m12/work/extio_merge/main/accelerator-project/nanosoc_tech/nanosoc/socdebug_tech/socket/vivado_packages</xilinx:tag>
+        <xilinx:tag xilinx:name="ui.data.coregen.df@2788228d_ARCHIVE_LOCATION">/home/dwf1m12/work/extio_merge/main/accelerator-project/nanosoc_tech/nanosoc/socdebug_tech/socket/vivado_packages</xilinx:tag>
+        <xilinx:tag xilinx:name="ui.data.coregen.df@44a80b53_ARCHIVE_LOCATION">/home/dwf1m12/work/extio_merge/main/accelerator-project/nanosoc_tech/nanosoc/socdebug_tech/socket/vivado_packages</xilinx:tag>
+        <xilinx:tag xilinx:name="ui.data.coregen.df@6bb013c9_ARCHIVE_LOCATION">/home/dwf1m12/work/extio_merge/main/accelerator-project/nanosoc_tech/nanosoc/socdebug_tech/socket/vivado_packages</xilinx:tag>
+        <xilinx:tag xilinx:name="ui.data.coregen.df@4ec3d82_ARCHIVE_LOCATION">/home/dwf1m12/work/extio_merge/main/accelerator-project/nanosoc_tech/nanosoc/socdebug_tech/socket/vivado_packages</xilinx:tag>
+        <xilinx:tag xilinx:name="ui.data.coregen.df@48dc1b5f_ARCHIVE_LOCATION">/home/dwf1m12/work/extio_merge/main/accelerator-project/nanosoc_tech/nanosoc/socdebug_tech/socket/vivado_packages</xilinx:tag>
+      </xilinx:tags>
+    </xilinx:coreExtensions>
+    <xilinx:packagingInfo>
+      <xilinx:xilinxVersion>2021.1</xilinx:xilinxVersion>
+      <xilinx:checksum xilinx:scope="busInterfaces" xilinx:value="574beea2"/>
+      <xilinx:checksum xilinx:scope="fileGroups" xilinx:value="bd4732b1"/>
+      <xilinx:checksum xilinx:scope="ports" xilinx:value="d4879326"/>
+      <xilinx:checksum xilinx:scope="parameters" xilinx:value="06f7268c"/>
+      <xilinx:targetDRCs>
+        <xilinx:targetDRC xilinx:tool="ipi">
+          <xilinx:targetDRCOption xilinx:name="ignore_freq_hz" xilinx:value="false"/>
+        </xilinx:targetDRC>
+      </xilinx:targetDRCs>
+    </xilinx:packagingInfo>
+  </spirit:vendorExtensions>
+</spirit:component>
diff --git a/socket/vivado_packages/extio8x4_axis_target_1.0/ip_project_archive.zip b/socket/vivado_packages/extio8x4_axis_target_1.0/ip_project_archive.zip
new file mode 100755
index 0000000000000000000000000000000000000000..c6b0b9f00de00928e57497919a859f0b8ec880ae
Binary files /dev/null and b/socket/vivado_packages/extio8x4_axis_target_1.0/ip_project_archive.zip differ
diff --git a/socket/vivado_packages/extio8x4_axis_target_1.0/soclabs.org_slip_extio8x4_axis_target_1.0.zip b/socket/vivado_packages/extio8x4_axis_target_1.0/soclabs.org_slip_extio8x4_axis_target_1.0.zip
new file mode 100644
index 0000000000000000000000000000000000000000..7be620a69d2225e8ba9e6981dfbb7c060bbb4839
Binary files /dev/null and b/socket/vivado_packages/extio8x4_axis_target_1.0/soclabs.org_slip_extio8x4_axis_target_1.0.zip differ
diff --git a/socket/vivado_packages/extio8x4_axis_target_1.0/src/extio8x4_axis_target.v b/socket/vivado_packages/extio8x4_axis_target_1.0/src/extio8x4_axis_target.v
new file mode 100755
index 0000000000000000000000000000000000000000..f1fa65bdca63b1bb82300cfeb856c8d54f42ee32
--- /dev/null
+++ b/socket/vivado_packages/extio8x4_axis_target_1.0/src/extio8x4_axis_target.v
@@ -0,0 +1,126 @@
+//-----------------------------------------------------------------------------
+// 8-bit extio transfer over 4-bit data plane - target
+//
+// A joint work commissioned on behalf of SoC Labs, under Arm Academic Access license.
+//
+// Contributors
+//
+// David Flynn (d.w.flynn@soton.ac.uk)
+//
+// Copyright (c) 2024, SoC Labs (www.soclabs.org)
+//-----------------------------------------------------------------------------
+
+//-----------------------------------------------------------------------------
+// Abstract : target FSM wrapped with synchronizers
+//-----------------------------------------------------------------------------
+
+
+module extio8x4_axis_target
+  (
+  input  wire       clk,
+  input  wire       resetn,
+  input  wire       testmode,
+// RX 4-channel AXIS interface
+  output wire       axis_rx0_tready, 
+  input  wire       axis_rx0_tvalid,
+  input  wire [7:0] axis_rx0_tdata8,
+  output wire       axis_rx1_tready, 
+  input  wire       axis_rx1_tvalid,
+  input  wire [7:0] axis_rx1_tdata8,
+  input  wire       axis_tx0_tready, 
+  output wire       axis_tx0_tvalid,
+  output wire [7:0] axis_tx0_tdata8,
+  input  wire       axis_tx1_tready, 
+  output wire       axis_tx1_tvalid,
+  output wire [7:0] axis_tx1_tdata8,
+// external io interface
+  input  wire [3:0] iodata4_i,
+  output wire [3:0] iodata4_o,
+  output wire [3:0] iodata4_e,
+  output wire [3:0] iodata4_t,
+  input  wire       ioreq1_a,
+  input  wire       ioreq2_a,
+  output wire       ioack_o
+  );
+
+wire       ioreq1_s;
+wire       ioreq2_s;
+
+extio8x4_sync u_extio8x4_sync_ioreq1
+  (
+  .clk(clk),
+  .resetn(resetn),
+  .testmode(testmode),
+  .sig_a(ioreq1_a),
+  .sig_s(ioreq1_s)
+  );
+
+extio8x4_sync u_extio8x4_sync_ioreq2
+  (
+  .clk(clk),
+  .resetn(resetn),
+  .testmode(testmode),
+  .sig_a(ioreq2_a),
+  .sig_s(ioreq2_s)
+  );
+
+
+extio8x4_tfsm u_extio8x4_tfsm
+  (
+  .clk             ( clk             ),
+  .resetn          ( resetn          ),
+// RX 4-channel AXIS interface
+  .axis_rx0_tready ( axis_rx0_tready ), 
+  .axis_rx0_tvalid ( axis_rx0_tvalid ),
+  .axis_rx0_tdata8 ( axis_rx0_tdata8 ),
+  .axis_rx1_tready ( axis_rx1_tready ), 
+  .axis_rx1_tvalid ( axis_rx1_tvalid ),
+  .axis_rx1_tdata8 ( axis_rx1_tdata8 ),
+  .axis_tx0_tready ( axis_tx0_tready ), 
+  .axis_tx0_tvalid ( axis_tx0_tvalid ),
+  .axis_tx0_tdata8 ( axis_tx0_tdata8 ),
+  .axis_tx1_tready ( axis_tx1_tready ), 
+  .axis_tx1_tvalid ( axis_tx1_tvalid ),
+  .axis_tx1_tdata8 ( axis_tx1_tdata8 ),
+// external io interface
+  .iodata4_i       ( iodata4_i       ),
+  .iodata4_o       ( iodata4_o       ),
+  .iodata4_e       ( iodata4_e       ),
+  .iodata4_t       ( iodata4_t       ),
+  .ioreq1_s        ( ioreq1_s        ),
+  .ioreq2_s        ( ioreq2_s        ),
+  .ioack_o         ( ioack_o         )
+  );
+           
+endmodule
+
+/*
+extio8x4_axis_target u_extio8x4_axis_target
+  (
+  .clk             ( clk             ),
+  .resetn          ( resetn          ),
+  .testmode        ( testmode        ),
+// RX 4-channel AXIS interface
+  .axis_rx0_tready ( axis_rx0_tready ), 
+  .axis_rx0_tvalid ( axis_rx0_tvalid ),
+  .axis_rx0_tdata8 ( axis_rx0_tdata8 ),
+  .axis_rx1_tready ( axis_rx1_tready ), 
+  .axis_rx1_tvalid ( axis_rx1_tvalid ),
+  .axis_rx1_tdata8 ( axis_rx1_tdata8 ),
+  .axis_tx0_tready ( axis_tx0_tready ), 
+  .axis_tx0_tvalid ( axis_tx0_tvalid ),
+  .axis_tx0_tdata8 ( axis_tx0_tdata8 ),
+  .axis_tx1_tready ( axis_tx1_tready ), 
+  .axis_tx1_tvalid ( axis_tx1_tvalid ),
+  .axis_tx1_tdata8 ( axis_tx1_tdata8 ),
+// external io interface
+  .iodata4_i       ( iodata4_i       ),
+  .iodata4_o       ( iodata4_o       ),
+  .iodata4_e       ( iodata4_e       ),
+  .iodata4_t       ( iodata4_t       ),
+  .ioreq1_a        ( ioreq1_i        ),
+  .ioreq2_a        ( ioreq2_i        ),
+  .ioack_o         ( ioack_o         )
+  );
+
+*/
diff --git a/socket/vivado_packages/extio8x4_axis_target_1.0/src/extio8x4_sync.v b/socket/vivado_packages/extio8x4_axis_target_1.0/src/extio8x4_sync.v
new file mode 100755
index 0000000000000000000000000000000000000000..ed8d53f28636264d695cf0dad497b55c36182c20
--- /dev/null
+++ b/socket/vivado_packages/extio8x4_axis_target_1.0/src/extio8x4_sync.v
@@ -0,0 +1,46 @@
+//-----------------------------------------------------------------------------
+// 8-bit extio transfer over 4-bit data plane - initiator
+//
+// A joint work commissioned on behalf of SoC Labs, under Arm Academic Access license.
+//
+// Contributors
+//
+// David Flynn (d.w.flynn@soton.ac.uk)
+//
+// Copyright (c) 2024, SoC Labs (www.soclabs.org)
+//-----------------------------------------------------------------------------
+
+module extio8x4_sync
+  (
+  input  wire clk,
+  input  wire resetn,
+  input  wire testmode,
+  input  wire sig_a,
+  output wire sig_s
+  );
+
+reg [2:1] sig_r;
+
+always @(posedge clk or negedge resetn)
+begin
+  if (!resetn)
+    sig_r <= 2'b00; // default
+  else
+    sig_r <= {sig_r[1], sig_a}; // shift left
+end
+
+assign sig_s = (testmode) ? sig_a : sig_r[2];
+
+endmodule
+
+/*
+extio8x4_sync, u_extio8x4_sync_1
+  (
+  .clk(clk),
+  .resetn(resetn),
+  .testmode(testmode),
+  .sig_a(sig_i),
+  .sig_s(sig_s)
+  );
+
+*/
diff --git a/socket/vivado_packages/extio8x4_axis_target_1.0/src/extio8x4_target.xdc b/socket/vivado_packages/extio8x4_axis_target_1.0/src/extio8x4_target.xdc
new file mode 100755
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/socket/vivado_packages/extio8x4_axis_target_1.0/src/extio8x4_tfsm.v b/socket/vivado_packages/extio8x4_axis_target_1.0/src/extio8x4_tfsm.v
new file mode 100755
index 0000000000000000000000000000000000000000..b1d73729d269dee48ea64a57a0c208838c3f7584
--- /dev/null
+++ b/socket/vivado_packages/extio8x4_axis_target_1.0/src/extio8x4_tfsm.v
@@ -0,0 +1,313 @@
+//-----------------------------------------------------------------------------
+// 8-bit extio transfer over 4-bit data plane - target
+//
+// A joint work commissioned on behalf of SoC Labs, under Arm Academic Access license.
+//
+// Contributors
+//
+// David Flynn (d.w.flynn@soton.ac.uk)
+//
+// Copyright (c) 2024, SoC Labs (www.soclabs.org)
+//-----------------------------------------------------------------------------
+
+//-----------------------------------------------------------------------------
+// Abstract : Initiator state machine and sequencer
+//-----------------------------------------------------------------------------
+
+
+module extio8x4_tfsm
+  (
+  input  wire       clk,
+  input  wire       resetn,
+// RX 4-channel AXIS interface
+  output wire       axis_rx0_tready, 
+  input  wire       axis_rx0_tvalid,
+  input  wire [7:0] axis_rx0_tdata8,
+  output wire       axis_rx1_tready, 
+  input  wire       axis_rx1_tvalid,
+  input  wire [7:0] axis_rx1_tdata8,
+  input  wire       axis_tx0_tready, 
+  output wire       axis_tx0_tvalid,
+  output wire [7:0] axis_tx0_tdata8,
+  input  wire       axis_tx1_tready, 
+  output wire       axis_tx1_tvalid,
+  output wire [7:0] axis_tx1_tdata8,
+// external io interface
+  input  wire [3:0] iodata4_i,
+  output wire [3:0] iodata4_o,
+  output wire [3:0] iodata4_e,
+  output wire [3:0] iodata4_t,
+  input  wire       ioreq1_s,
+  input  wire       ioreq2_s,
+  output wire       ioack_o
+  );
+
+
+// axis request per channel to FSM, hold until ack
+wire rx0_axis_req;
+wire rx1_axis_req;
+wire tx0_axis_req;
+wire tx1_axis_req;
+// axis request acknowledge per channel, from FSM, 1-cycle pulse
+wire rx0_axis_ack;
+wire rx1_axis_ack;
+wire tx0_axis_ack;
+wire tx1_axis_ack;
+
+reg req_rx0;
+reg req_rx1;
+reg req_tx0;
+reg req_tx1;
+
+// data ports
+wire [7:0] tx_axis_rdata8;
+wire [7:0] rx0_axis_wdata8;
+wire [7:0] rx1_axis_wdata8;
+
+
+wire ack_nxt = ioreq1_s ^ ioreq2_s;
+
+reg ack;
+always @(posedge clk or negedge resetn)
+begin
+  if (!resetn)
+    ack <= 1'b0;
+  else
+    ack <= ack_nxt;
+end
+
+wire ack_change = ack ^ ack_nxt;
+
+
+// state[0] = ACK
+// state[1] = CTL4_EN
+// state[2] = RD4H_EN
+// state[3] = RD4L_EN
+// state[4] = STAT_EN
+// state[5] = WD4H_EN
+// state[6] = WD4L_EN
+              
+
+localparam STAT = 8'b0_001_000_0;
+localparam RXC1 = 8'b0_000_001_1;
+localparam RXDH = 8'b0_000_010_0;                     
+localparam RXDL = 8'b0_000_100_1;                     
+localparam RXDZ = 8'b0_000_000_0;                     
+localparam STAZ = 8'b0_001_000_1;
+
+localparam TXCZ = 8'b1_000_000_0;                     
+localparam TXDH = 8'b1_010_000_1;                     
+localparam TXDL = 8'b1_100_000_0;                     
+
+reg  [7:0] fsm_state;
+reg  [7:0] nxt_fsm_state;
+
+// ifsm next-state seqeuncer                                             
+always @(*)
+  case (fsm_state)
+  STAT: nxt_fsm_state = ( ioreq1_s) ? RXC1 : STAT;
+  RXC1: nxt_fsm_state = (!ioreq2_s) ? RXC1 : (iodata4_i[0]) ? TXCZ : RXDH;
+  RXDH: nxt_fsm_state = ( ioreq2_s) ? RXDH : RXDL;
+  RXDL: nxt_fsm_state = (!ioreq2_s) ? RXDL : RXDZ;
+  RXDZ: nxt_fsm_state = ( ioreq2_s) ? RXDZ : STAZ;
+  STAZ: nxt_fsm_state = ( ioreq1_s) ? STAZ : STAT;
+  TXCZ: nxt_fsm_state = ( ioreq2_s) ? TXCZ : TXDH;
+  TXDH: nxt_fsm_state = (!ioreq2_s) ? TXDH : TXDL;
+  TXDL: nxt_fsm_state = ( ioreq2_s) ? TXDL : STAZ;
+  default:  nxt_fsm_state = STAT;
+  endcase
+
+// state update
+always @(posedge clk or negedge resetn)
+begin
+  if (!resetn) begin
+    fsm_state <= STAT;
+  end else
+    fsm_state <= nxt_fsm_state;
+  end
+
+assign ioack_o = fsm_state[0];
+// 3 input sample enable
+wire cmd_state = fsm_state[1];
+wire rdh_state = fsm_state[2];
+wire rdl_state = fsm_state[3];
+// 3 output enable
+wire fif_state = fsm_state[4];
+wire wdh_state = fsm_state[5];
+wire wdl_state = fsm_state[6];
+
+// command resister
+reg [3:0] cmd4;
+always @(posedge clk or negedge resetn)
+begin
+  if (!resetn)
+    cmd4 <= 4'b1111; // invalid xfer pattern
+  else if (cmd_state & ack_change)
+    cmd4 <= iodata4_i[3:0];
+end
+
+wire [3:0] fifo_stat = ~{req_tx1, req_rx1, req_tx0, req_rx0 };
+// IO Write Data
+assign iodata4_o = ({4{fif_state}} & fifo_stat)
+                 | ({4{wdh_state}} & ((cmd4[1]) ? rx1_axis_wdata8[7:4] : rx0_axis_wdata8[7:4]))
+                 | ({4{wdl_state}} & ((cmd4[1]) ? rx1_axis_wdata8[3:0] : rx0_axis_wdata8[3:0]))
+                 ;
+
+assign iodata4_e = {4{|(fsm_state[6:4])}};
+assign iodata4_t = {4{!iodata4_e}};
+
+// and ack
+assign rx0_axis_ack = !cmd4[1] &  cmd4[0] & wdl_state & ack_change;
+assign rx1_axis_ack =  cmd4[1] &  cmd4[0] & wdl_state & ack_change;
+
+// IO Read data
+// first register high nibble read data
+reg [3:0] rd4_hi;
+always @(posedge clk or negedge resetn)
+begin
+  if (!resetn)
+    rd4_hi <= 4'b0000; // initialize
+  else if (rdh_state & ack_change)
+    rd4_hi <= iodata4_i[3:0];
+end
+
+assign tx_axis_rdata8 = {rd4_hi[3:0],iodata4_i[3:0]};
+
+// then ack with 8-bit data to selected axis buffer
+assign tx0_axis_ack = !cmd4[1] & !cmd4[0] & rdl_state & ack_change;
+assign tx1_axis_ack =  cmd4[1] & !cmd4[0] & rdl_state & ack_change;
+
+// stream buffers with valid qualifiers
+reg [8:0] rx0_reg9;
+reg [8:0] rx1_reg9;
+reg [8:0] tx0_reg9;
+reg [8:0] tx1_reg9;
+
+// axis RX1 port interface
+always @(posedge clk or negedge resetn)
+begin
+  if (!resetn)
+    rx0_reg9 <= 9'b0_00000000;
+  else begin
+    if (!rx0_reg9[8] & axis_rx0_tvalid) rx0_reg9 <= {1'b1,axis_rx0_tdata8[7:0]};
+    else if (rx0_reg9[8] & rx0_axis_ack) rx0_reg9[8] <= 1'b0;
+    end
+end
+assign axis_rx0_tready = !rx0_reg9[8];
+assign rx0_axis_wdata8 =  rx0_reg9[7:0];
+assign rx0_axis_req    =  rx0_reg9[8] & !fsm_state[2] & !fsm_state[3];
+
+// axis RX2 port interface
+always @(posedge clk or negedge resetn)
+begin
+  if (!resetn)
+    rx1_reg9 <= 9'b0_00000000;
+  else begin
+    if (!rx1_reg9[8] & axis_rx1_tvalid) rx1_reg9 <= {1'b1,axis_rx1_tdata8[7:0]};
+    else if (rx1_reg9[8] & rx1_axis_ack)  rx1_reg9[8] <= 1'b0;
+    end
+end
+assign axis_rx1_tready = !rx1_reg9[8];
+assign rx1_axis_wdata8 =  rx1_reg9[7:0];
+assign rx1_axis_req    =  rx1_reg9[8] & !fsm_state[2] & !fsm_state[3];
+
+// axis TX1 port interface
+always @(posedge clk or negedge resetn)
+begin
+  if (!resetn)
+    tx0_reg9 <= 9'b0_00000000;
+  else begin
+    if (!tx0_reg9[8] & tx0_axis_ack) tx0_reg9 <= {1'b1,tx_axis_rdata8[7:0]};
+    else if (tx0_reg9[8] & axis_tx0_tready)  tx0_reg9[8] <= 1'b0;
+    end
+end
+assign axis_tx0_tvalid = tx0_reg9[8];
+assign axis_tx0_tdata8[7:0] = tx0_reg9[7:0];
+assign tx0_axis_req = !tx0_reg9[8];
+
+// axis tx2 port interextio8x4_ifsmface
+always @(posedge clk or negedge resetn)
+begin
+  if (!resetn)
+    tx1_reg9 <= 9'b0_00000000;
+  else begin
+    if (!tx1_reg9[8] & tx1_axis_ack) tx1_reg9 <= {1'b1,tx_axis_rdata8[7:0]};
+    else if (tx1_reg9[8] & axis_tx1_tready)  tx1_reg9[8] <= 1'b0;
+    end
+end
+assign axis_tx1_tvalid = tx1_reg9[8];
+assign axis_tx1_tdata8[7:0] = tx1_reg9[7:0];
+assign tx1_axis_req = !tx1_reg9[8];
+
+
+// request handshake
+always @(posedge clk or negedge resetn)
+begin
+  if (!resetn)
+    req_rx0 <= 1'b0; // avoid X propagation
+  else if (rx0_axis_req & !req_rx0) // capture rx_req front edge
+    req_rx0 <= 1'b1;
+  else if (rx0_axis_ack & req_rx0)
+    req_rx0 <= 1'b0;
+end
+always @(posedge clk or negedge resetn)
+begin
+  if (!resetn)
+    req_rx1 <= 1'b0; // avoid X propagation
+  else if (rx1_axis_req & !req_rx1) // capture rx_req front edge
+    req_rx1 <= 1'b1;
+  else if (rx1_axis_ack & req_rx1)
+    req_rx1 <= 1'b0;
+end
+
+// request handshake
+always @(posedge clk or negedge resetn)
+begin
+  if (!resetn)
+    req_tx0 <= 1'b0; // avoid X propagation
+  else if (tx0_axis_req & !req_tx0) // capture tx_req front edge
+    req_tx0 <= 1'b1;
+  else if (tx0_axis_ack & req_tx0)
+    req_tx0 <= 1'b0;
+end
+always @(posedge clk or negedge resetn)
+begin
+  if (!resetn)
+    req_tx1 <= 1'b0; // avoid X propagation
+  else if (tx1_axis_req & !req_tx1) // capture tx_req front edge
+    req_tx1 <= 1'b1;
+  else if (tx1_axis_ack & req_tx1)
+    req_tx1 <= 1'b0;
+end
+
+endmodule
+
+/*
+extio8x4_ifsm u_extio8x4_tfsm
+  (
+  .clk             ( clk             ),
+  .resetn          ( resetn          ),
+// RX 4-channel AXIS interface
+  .axis_rx0_tready ( axis_rx0_tready ), 
+  .axis_rx0_tvalid ( axis_rx0_tvalid ),
+  .axis_rx0_tdata8 ( axis_rx0_tdata8 ),
+  .axis_rx1_tready ( axis_rx1_tready ), 
+  .axis_rx1_tvalid ( axis_rx1_tvalid ),
+  .axis_rx1_tdata8 ( axis_rx1_tdata8 ),
+  .axis_tx0_tready ( axis_tx0_tready ), 
+  .axis_tx0_tvalid ( axis_tx0_tvalid ),
+  .axis_tx0_tdata8 ( axis_tx0_tdata8 ),
+  .axis_tx1_tready ( axis_tx1_tready ), 
+  .axis_tx1_tvalid ( axis_tx1_tvalid ),
+  .axis_tx1_tdata8 ( axis_tx1_tdata8 ),
+// external io interface
+  .iodata4_i       ( iodata4_i       ),
+  .iodata4_o       ( iodata4_o       ),
+  .iodata4_e       ( iodata4_e       ),
+  .iodata4_t       ( iodata4_t       ),
+  .ioreq1_s        ( ioreq1_s        ),
+  .ioreq2_s        ( ioreq2_s        ),
+  .ioack_o         ( ioack_o         )
+  );
+
+*/
diff --git a/socket/vivado_packages/extio8x4_axis_target_1.0/xgui/extio8x4_axis_target_v1_0.tcl b/socket/vivado_packages/extio8x4_axis_target_1.0/xgui/extio8x4_axis_target_v1_0.tcl
new file mode 100644
index 0000000000000000000000000000000000000000..0db18e9a9d18f3e4b14481f7664b048781110ca3
--- /dev/null
+++ b/socket/vivado_packages/extio8x4_axis_target_1.0/xgui/extio8x4_axis_target_v1_0.tcl
@@ -0,0 +1,10 @@
+# Definitional proc to organize widgets for parameters.
+proc init_gui { IPINST } {
+  ipgui::add_param $IPINST -name "Component_Name"
+  #Adding Page
+  ipgui::add_page $IPINST -name "Page 0"
+
+
+}
+
+