From 6afabad6b246d01a7feb1c4348982eeb9479f5e1 Mon Sep 17 00:00:00 2001
From: dam1n19 <dam1n19@soton.ac.uk>
Date: Tue, 4 Jul 2023 09:14:23 +0100
Subject: [PATCH] Updated make recipies and removed unused ft1248 axi stream
 package

---
 fpga/makefile                                 |  25 +-
 .../ft1248x1_to_stream8_1.0/component.xml     | 127 ----------
 .../ft1248x1_to_stream8_0.xcix                | Bin 253 -> 0 bytes
 .../hdl/ft1248x1_to_stream8_v1_0.v            |  75 ------
 .../hdl/ft1248x1_to_stream8_v1_0_RXD8.v       | 167 -------------
 .../hdl/ft1248x1_to_stream8_v1_0_TXD8.v       | 228 ------------------
 .../ip_project_archive.zip                    | Bin 19366 -> 0 bytes
 ...clabs.org_user_ft1248x1_to_stream8_1.0.zip | Bin 22475 -> 0 bytes
 .../src/ft1248x1_to_stream8.v                 | 187 --------------
 .../ft1248x1_to_stream8_1.0/src/synclib.v     | 139 -----------
 .../xgui/ft1248x1_to_stream8_v1_0.tcl         |  10 -
 .../uart_to_AXI_master_1.0/bd/bd.tcl          |  86 -------
 .../ADPcontrol_1.0/bd/bd.tcl                  |   0
 .../ADPcontrol_1.0/component.xml              |   0
 .../ADPcontrol_1.0/hdl/ADPcontrol_v1_0.v      |   0
 .../hdl/ADPcontrol_v1_0_com_rx.v              |   0
 .../hdl/ADPcontrol_v1_0_com_tx.v              |   0
 .../hdl/ADPcontrol_v1_0_stdio_rx.v            |   0
 .../hdl/ADPcontrol_v1_0_stdio_tx.v            |   0
 .../soclabs.org_user_ADPcontrol_1.0.zip       | Bin
 .../ADPcontrol_1.0/src/ADPcontrol_v1_0.v      |   0
 .../ADPcontrol_1.0/src/ADPmanager.v           |   0
 .../ADPcontrol_1.0/xgui/ADPcontrol_v1_0.tcl   |   0
 .../axi_stream_io_1.0/bd/bd.tcl               |   0
 .../axi_stream_io_1.0/component.xml           |   0
 .../axi_stream_io_v1_0/data/axi_stream_io.mdd |   0
 .../axi_stream_io_v1_0/data/axi_stream_io.tcl |   0
 .../drivers/axi_stream_io_v1_0/src/Makefile   |   0
 .../axi_stream_io_v1_0/src/axi_stream_io.c    |   0
 .../axi_stream_io_v1_0/src/axi_stream_io.h    |   0
 .../src/axi_stream_io_selftest.c              |   0
 .../soclabs.org_user_axi_stream_io_1.0.zip    | Bin
 .../src/axi_stream_io_v1_0_axi_s.v            |   0
 .../xgui/axi_stream_io_v1_0.tcl               |   0
 .../ft1248x1_to_axi_streamio_1.0/bd/bd.tcl    |   0
 .../component.xml                             |   0
 .../ft1248x1_to_axi_streamio_0_2.xcix         | Bin
 .../hdl/SYNCHRONIZER_EDGES.v                  |   0
 .../hdl/ft1248x1_to_axi_streamio_v1_0.v       |   0
 .../hdl/ft1248x1_to_axi_streamio_v1_0_rxd8.v  |   0
 .../hdl/ft1248x1_to_axi_streamio_v1_0_txd8.v  |   0
 ....org_user_ft1248x1_to_axi_streamio_1.0.zip | Bin
 .../xgui/ft1248x1_to_axi_streamio_v1_0.tcl    |   0
 .../uart_to_AXI_master_1.0}/bd/bd.tcl         |   0
 .../uart_to_AXI_master_1.0/component.xml      |   0
 .../hdl/uart_to_AXI_master_v1_0.v             |   0
 .../hdl/uart_to_AXI_master_v1_0_M00_AXI.v     |   0
 .../uart_to_AXI_master_1.0/src/dbg_bridge.v   |   0
 .../src/dbg_bridge_fifo.v                     |   0
 .../src/dbg_bridge_uart.v                     |   0
 .../xgui/uart_to_AXI_master_v1_0.tcl          |   0
 51 files changed, 12 insertions(+), 1032 deletions(-)
 delete mode 100644 socket/vivado_lib/ft1248x1_to_stream8_1.0/component.xml
 delete mode 100644 socket/vivado_lib/ft1248x1_to_stream8_1.0/ft1248x1_to_stream8_0.xcix
 delete mode 100644 socket/vivado_lib/ft1248x1_to_stream8_1.0/hdl/ft1248x1_to_stream8_v1_0.v
 delete mode 100644 socket/vivado_lib/ft1248x1_to_stream8_1.0/hdl/ft1248x1_to_stream8_v1_0_RXD8.v
 delete mode 100644 socket/vivado_lib/ft1248x1_to_stream8_1.0/hdl/ft1248x1_to_stream8_v1_0_TXD8.v
 delete mode 100755 socket/vivado_lib/ft1248x1_to_stream8_1.0/ip_project_archive.zip
 delete mode 100644 socket/vivado_lib/ft1248x1_to_stream8_1.0/soclabs.org_user_ft1248x1_to_stream8_1.0.zip
 delete mode 100755 socket/vivado_lib/ft1248x1_to_stream8_1.0/src/ft1248x1_to_stream8.v
 delete mode 100755 socket/vivado_lib/ft1248x1_to_stream8_1.0/src/synclib.v
 delete mode 100644 socket/vivado_lib/ft1248x1_to_stream8_1.0/xgui/ft1248x1_to_stream8_v1_0.tcl
 delete mode 100644 socket/vivado_lib/uart_to_AXI_master_1.0/bd/bd.tcl
 rename socket/{vivado_lib => vivado_packages}/ADPcontrol_1.0/bd/bd.tcl (100%)
 rename socket/{vivado_lib => vivado_packages}/ADPcontrol_1.0/component.xml (100%)
 rename socket/{vivado_lib => vivado_packages}/ADPcontrol_1.0/hdl/ADPcontrol_v1_0.v (100%)
 rename socket/{vivado_lib => vivado_packages}/ADPcontrol_1.0/hdl/ADPcontrol_v1_0_com_rx.v (100%)
 rename socket/{vivado_lib => vivado_packages}/ADPcontrol_1.0/hdl/ADPcontrol_v1_0_com_tx.v (100%)
 rename socket/{vivado_lib => vivado_packages}/ADPcontrol_1.0/hdl/ADPcontrol_v1_0_stdio_rx.v (100%)
 rename socket/{vivado_lib => vivado_packages}/ADPcontrol_1.0/hdl/ADPcontrol_v1_0_stdio_tx.v (100%)
 rename socket/{vivado_lib => vivado_packages}/ADPcontrol_1.0/soclabs.org_user_ADPcontrol_1.0.zip (100%)
 rename socket/{vivado_lib => vivado_packages}/ADPcontrol_1.0/src/ADPcontrol_v1_0.v (100%)
 rename socket/{vivado_lib => vivado_packages}/ADPcontrol_1.0/src/ADPmanager.v (100%)
 rename socket/{vivado_lib => vivado_packages}/ADPcontrol_1.0/xgui/ADPcontrol_v1_0.tcl (100%)
 rename socket/{vivado_lib => vivado_packages}/axi_stream_io_1.0/bd/bd.tcl (100%)
 rename socket/{vivado_lib => vivado_packages}/axi_stream_io_1.0/component.xml (100%)
 rename socket/{vivado_lib => vivado_packages}/axi_stream_io_1.0/drivers/axi_stream_io_v1_0/data/axi_stream_io.mdd (100%)
 rename socket/{vivado_lib => vivado_packages}/axi_stream_io_1.0/drivers/axi_stream_io_v1_0/data/axi_stream_io.tcl (100%)
 rename socket/{vivado_lib => vivado_packages}/axi_stream_io_1.0/drivers/axi_stream_io_v1_0/src/Makefile (100%)
 rename socket/{vivado_lib => vivado_packages}/axi_stream_io_1.0/drivers/axi_stream_io_v1_0/src/axi_stream_io.c (100%)
 rename socket/{vivado_lib => vivado_packages}/axi_stream_io_1.0/drivers/axi_stream_io_v1_0/src/axi_stream_io.h (100%)
 rename socket/{vivado_lib => vivado_packages}/axi_stream_io_1.0/drivers/axi_stream_io_v1_0/src/axi_stream_io_selftest.c (100%)
 rename socket/{vivado_lib => vivado_packages}/axi_stream_io_1.0/soclabs.org_user_axi_stream_io_1.0.zip (100%)
 rename socket/{vivado_lib => vivado_packages}/axi_stream_io_1.0/src/axi_stream_io_v1_0_axi_s.v (100%)
 rename socket/{vivado_lib => vivado_packages}/axi_stream_io_1.0/xgui/axi_stream_io_v1_0.tcl (100%)
 rename socket/{vivado_lib => vivado_packages}/ft1248x1_to_axi_streamio_1.0/bd/bd.tcl (100%)
 rename socket/{vivado_lib => vivado_packages}/ft1248x1_to_axi_streamio_1.0/component.xml (100%)
 rename socket/{vivado_lib => vivado_packages}/ft1248x1_to_axi_streamio_1.0/ft1248x1_to_axi_streamio_0_2.xcix (100%)
 rename socket/{vivado_lib => vivado_packages}/ft1248x1_to_axi_streamio_1.0/hdl/SYNCHRONIZER_EDGES.v (100%)
 rename socket/{vivado_lib => vivado_packages}/ft1248x1_to_axi_streamio_1.0/hdl/ft1248x1_to_axi_streamio_v1_0.v (100%)
 rename socket/{vivado_lib => vivado_packages}/ft1248x1_to_axi_streamio_1.0/hdl/ft1248x1_to_axi_streamio_v1_0_rxd8.v (100%)
 rename socket/{vivado_lib => vivado_packages}/ft1248x1_to_axi_streamio_1.0/hdl/ft1248x1_to_axi_streamio_v1_0_txd8.v (100%)
 rename socket/{vivado_lib => vivado_packages}/ft1248x1_to_axi_streamio_1.0/soclabs.org_user_ft1248x1_to_axi_streamio_1.0.zip (100%)
 rename socket/{vivado_lib => vivado_packages}/ft1248x1_to_axi_streamio_1.0/xgui/ft1248x1_to_axi_streamio_v1_0.tcl (100%)
 rename socket/{vivado_lib/ft1248x1_to_stream8_1.0 => vivado_packages/uart_to_AXI_master_1.0}/bd/bd.tcl (100%)
 rename socket/{vivado_lib => vivado_packages}/uart_to_AXI_master_1.0/component.xml (100%)
 rename socket/{vivado_lib => vivado_packages}/uart_to_AXI_master_1.0/hdl/uart_to_AXI_master_v1_0.v (100%)
 rename socket/{vivado_lib => vivado_packages}/uart_to_AXI_master_1.0/hdl/uart_to_AXI_master_v1_0_M00_AXI.v (100%)
 rename socket/{vivado_lib => vivado_packages}/uart_to_AXI_master_1.0/src/dbg_bridge.v (100%)
 rename socket/{vivado_lib => vivado_packages}/uart_to_AXI_master_1.0/src/dbg_bridge_fifo.v (100%)
 rename socket/{vivado_lib => vivado_packages}/uart_to_AXI_master_1.0/src/dbg_bridge_uart.v (100%)
 rename socket/{vivado_lib => vivado_packages}/uart_to_AXI_master_1.0/xgui/uart_to_AXI_master_v1_0.tcl (100%)

diff --git a/fpga/makefile b/fpga/makefile
index 987f8bf..0e13191 100644
--- a/fpga/makefile
+++ b/fpga/makefile
@@ -11,33 +11,32 @@
 #-----------------------------------------------------------------------------
 
 IMPLEMENTATION_DIR   ?= $(SOCLABS_PROJECT_DIR)/imp/fpga
-TEMP_RTL_SOCKET_DIR  := $(IMPLEMENTATION_DIR)/socket
-
-RTL_SOCKET_DIR       := $(SOCLABS_SOCDEBUG_TECH_DIR)/socket/vivado_lib
+IMP_SOCKET_DIR       ?= $(IMPLEMENTATION_DIR)/socket
+RTL_SOCKET_DIR       ?= $(SOCLABS_SOCDEBUG_TECH_DIR)/socket/vivado_packages
 
+# Temporary Make recipies until actual package flow for components is implemented
 package_adp_control:
 	@echo Packaging Uart To AXI Master
-	@mkdir -p $(TEMP_RTL_SOCKET_DIR)
-	@cp -r $(RTL_SOCKET_DIR)/ADPcontrol_1.0 $(TEMP_RTL_SOCKET_DIR)/ADPcontrol_1.0
+	@mkdir -p $(IMP_SOCKET_DIR)
+	@cp -r $(RTL_SOCKET_DIR)/ADPcontrol_1.0 $(IMP_SOCKET_DIR)/ADPcontrol_1.0
 	
 package_axi_stream_io:
 	@echo Packaging Uart To AXI Master
-	@mkdir -p $(TEMP_RTL_SOCKET_DIR)
-	@cp -r $(RTL_SOCKET_DIR)/axi_stream_io_1.0 $(TEMP_RTL_SOCKET_DIR)/axi_stream_io_1.0
+	@mkdir -p $(IMP_SOCKET_DIR)
+	@cp -r $(RTL_SOCKET_DIR)/axi_stream_io_1.0 $(IMP_SOCKET_DIR)/axi_stream_io_1.0
 	
 package_ft1248_to_stream:
 	@echo Packaging FT1248 to AXI Stream
-	@mkdir -p $(TEMP_RTL_SOCKET_DIR)
-	@cp -r $(RTL_SOCKET_DIR)/ft1248x1_to_stream8_1.0 $(TEMP_RTL_SOCKET_DIR)/ft1248x1_to_stream8_1.0
-	@cp -r $(RTL_SOCKET_DIR)/ft1248x1_to_axi_streamio_1.0 $(TEMP_RTL_SOCKET_DIR)/ft1248x1_to_axi_streamio_1.0
+	@mkdir -p $(IMP_SOCKET_DIR)
+	@cp -r $(RTL_SOCKET_DIR)/ft1248x1_to_axi_streamio_1.0 $(IMP_SOCKET_DIR)/ft1248x1_to_axi_streamio_1.0
 	
 package_uart_to_axi:
 	@echo Packaging Uart To AXI Master
-	@mkdir -p $(TEMP_RTL_SOCKET_DIR)
-	@cp -r $(RTL_SOCKET_DIR)/uart_to_AXI_master_1.0 $(TEMP_RTL_SOCKET_DIR)/uart_to_AXI_master_1.0
+	@mkdir -p $(IMP_SOCKET_DIR)
+	@cp -r $(RTL_SOCKET_DIR)/uart_to_AXI_master_1.0 $(IMP_SOCKET_DIR)/uart_to_AXI_master_1.0
 
 package_socket: clean_socket package_uart_to_axi package_ft1248_to_stream package_axi_stream_io package_adp_control
 
 clean_socket:
 	@echo Cleaning FPGA Implementation Socket Directory
-	@rm -rf $(TEMP_RTL_SOCKET_DIR)
\ No newline at end of file
+	@rm -rf $(IMP_SOCKET_DIR)
\ No newline at end of file
diff --git a/socket/vivado_lib/ft1248x1_to_stream8_1.0/component.xml b/socket/vivado_lib/ft1248x1_to_stream8_1.0/component.xml
deleted file mode 100644
index c9d8d6e..0000000
--- a/socket/vivado_lib/ft1248x1_to_stream8_1.0/component.xml
+++ /dev/null
@@ -1,127 +0,0 @@
-<?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>ip</spirit:library>
-  <spirit:name>ft1248x1_to_stream8_1.0</spirit:name>
-  <spirit:version>1.0</spirit:version>
-  <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:fileSetRef>
-          <spirit:localName>xilinx_anylanguagesynthesis_view_fileset</spirit:localName>
-        </spirit:fileSetRef>
-        <spirit:parameters>
-          <spirit:parameter>
-            <spirit:name>viewChecksum</spirit:name>
-            <spirit:value>5c0c346d</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:fileSetRef>
-          <spirit:localName>xilinx_anylanguagebehavioralsimulation_view_fileset</spirit:localName>
-        </spirit:fileSetRef>
-        <spirit:parameters>
-          <spirit:parameter>
-            <spirit:name>viewChecksum</spirit:name>
-            <spirit:value>5c0c346d</spirit:value>
-          </spirit:parameter>
-        </spirit:parameters>
-      </spirit:view>
-    </spirit:views>
-  </spirit:model>
-  <spirit:fileSets>
-    <spirit:fileSet>
-      <spirit:name>xilinx_anylanguagesynthesis_view_fileset</spirit:name>
-      <spirit:file>
-        <spirit:name>src/synclib.v</spirit:name>
-        <spirit:fileType>verilogSource</spirit:fileType>
-        <spirit:logicalName>ft1248x1_to_stream8_1.0</spirit:logicalName>
-      </spirit:file>
-      <spirit:file>
-        <spirit:name>src/ft1248x1_to_stream8.v</spirit:name>
-        <spirit:fileType>verilogSource</spirit:fileType>
-        <spirit:userFileType>CHECKSUM_06e9a745</spirit:userFileType>
-        <spirit:logicalName>ft1248x1_to_stream8_1.0</spirit:logicalName>
-      </spirit:file>
-    </spirit:fileSet>
-    <spirit:fileSet>
-      <spirit:name>xilinx_anylanguagebehavioralsimulation_view_fileset</spirit:name>
-      <spirit:file>
-        <spirit:name>src/synclib.v</spirit:name>
-        <spirit:fileType>verilogSource</spirit:fileType>
-        <spirit:logicalName>ft1248x1_to_stream8_1.0</spirit:logicalName>
-      </spirit:file>
-      <spirit:file>
-        <spirit:name>src/ft1248x1_to_stream8.v</spirit:name>
-        <spirit:fileType>verilogSource</spirit:fileType>
-        <spirit:logicalName>ft1248x1_to_stream8_1.0</spirit:logicalName>
-      </spirit:file>
-    </spirit:fileSet>
-  </spirit:fileSets>
-  <spirit:description>ft1248x1_to_stream8_1.0:1.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">ft1248x1_to_stream8_1_0_v1_0</spirit:value>
-    </spirit:parameter>
-  </spirit:parameters>
-  <spirit:vendorExtensions>
-    <xilinx:coreExtensions>
-      <xilinx:taxonomies>
-        <xilinx:taxonomy>/AXI_Infrastructure</xilinx:taxonomy>
-        <xilinx:taxonomy>/Debug_&amp;_Verification/Debug</xilinx:taxonomy>
-        <xilinx:taxonomy>/Embedded_Processing/Debug_&amp;_Verification/Debug</xilinx:taxonomy>
-      </xilinx:taxonomies>
-      <xilinx:displayName>ft1248x1_to_stream8_1.0_v1_0</xilinx:displayName>
-      <xilinx:hideInCatalogGUI>true</xilinx:hideInCatalogGUI>
-      <xilinx:definitionSource>package_project</xilinx:definitionSource>
-      <xilinx:vendorDisplayName>soclabs.org</xilinx:vendorDisplayName>
-      <xilinx:vendorURL>http://soclabs.org</xilinx:vendorURL>
-      <xilinx:coreRevision>1</xilinx:coreRevision>
-      <xilinx:upgrades>
-        <xilinx:canUpgradeFrom>xilinx.com:ip:ft1248x1_to_stream8_1.0:1.0</xilinx:canUpgradeFrom>
-      </xilinx:upgrades>
-      <xilinx:coreCreationDateTime>2022-08-18T13:41:50Z</xilinx:coreCreationDateTime>
-      <xilinx:tags>
-        <xilinx:tag xilinx:name="ui.data.coregen.df@554a8be0_ARCHIVE_LOCATION">/home/dwf1m12/soclabs_git/soclabs-cortexm0-mcu/Cortex-M0/soclabs_demo/systems/cortex_m0_mcu/fpga_imp/ip_repo/ft1248x1_to_stream8_1.0</xilinx:tag>
-        <xilinx:tag xilinx:name="ui.data.coregen.df@2c2e0f51_ARCHIVE_LOCATION">/home/dwf1m12/soclabs_git/soclabs-cortexm0-mcu/Cortex-M0/soclabs_demo/systems/cortex_m0_mcu/fpga_imp/ip_repo/ft1248x1_to_stream8_1.0</xilinx:tag>
-        <xilinx:tag xilinx:name="ui.data.coregen.df@4bf8650c_ARCHIVE_LOCATION">/home/dwf1m12/soclabs_git/soclabs-cortexm0-mcu/Cortex-M0/soclabs_demo/systems/cortex_m0_mcu/fpga_imp/ip_repo/ft1248x1_to_stream8_1.0</xilinx:tag>
-        <xilinx:tag xilinx:name="ui.data.coregen.df@50a2d20f_ARCHIVE_LOCATION">/home/dwf1m12/soclabs_git/soclabs-cortexm0-mcu/Cortex-M0/soclabs_demo/systems/cortex_m0_mcu/fpga_imp/ip_repo/ft1248x1_to_stream8_1.0</xilinx:tag>
-        <xilinx:tag xilinx:name="ui.data.coregen.df@679c5188_ARCHIVE_LOCATION">/home/dwf1m12/soclabs_git/soclabs-cortexm0-mcu/Cortex-M0/soclabs_demo/systems/cortex_m0_mcu/fpga_imp/ip_repo/ft1248x1_to_stream8_1.0</xilinx:tag>
-        <xilinx:tag xilinx:name="ui.data.coregen.df@61453e2b_ARCHIVE_LOCATION">/home/dwf1m12/soclabs_git/soclabs-cortexm0-mcu/Cortex-M0/soclabs_demo/systems/cortex_m0_mcu/fpga_imp/ip_repo/ft1248x1_to_stream8_1.0</xilinx:tag>
-        <xilinx:tag xilinx:name="ui.data.coregen.df@20d8eb40_ARCHIVE_LOCATION">/home/dwf1m12/soclabs_git/soclabs-cortexm0-mcu/Cortex-M0/soclabs_demo/systems/cortex_m0_mcu/fpga_imp/ip_repo/ft1248x1_to_stream8_1.0</xilinx:tag>
-        <xilinx:tag xilinx:name="ui.data.coregen.df@9d02819_ARCHIVE_LOCATION">/home/dwf1m12/soclabs_git/soclabs-cortexm0-mcu/Cortex-M0/soclabs_demo/systems/cortex_m0_mcu/fpga_imp/ip_repo/ft1248x1_to_stream8_1.0</xilinx:tag>
-        <xilinx:tag xilinx:name="ui.data.coregen.df@1f726801_ARCHIVE_LOCATION">/home/dwf1m12/soclabs_git/soclabs-cortexm0-mcu/Cortex-M0/soclabs_demo/systems/cortex_m0_mcu/fpga_imp/ip_repo/ft1248x1_to_stream8_1.0</xilinx:tag>
-        <xilinx:tag xilinx:name="ui.data.coregen.df@7d50b16d_ARCHIVE_LOCATION">/home/dwf1m12/soclabs_git/soclabs-cortexm0-mcu/Cortex-M0/soclabs_demo/systems/cortex_m0_mcu/fpga_imp/ip_repo/ft1248x1_to_stream8_1.0</xilinx:tag>
-        <xilinx:tag xilinx:name="ui.data.coregen.df@558791b8_ARCHIVE_LOCATION">/home/dwf1m12/soclabs_git/soclabs-cortexm0-mcu/Cortex-M0/soclabs_demo/systems/cortex_m0_mcu/fpga_imp/ip_repo/ft1248x1_to_stream8_1.0</xilinx:tag>
-        <xilinx:tag xilinx:name="ui.data.coregen.df@dade147_ARCHIVE_LOCATION">/home/dwf1m12/soclabs_git/soclabs-cortexm0-mcu/Cortex-M0/soclabs_demo/systems/cortex_m0_mcu/fpga_imp/ip_repo/ft1248x1_to_stream8_1.0</xilinx:tag>
-        <xilinx:tag xilinx:name="ui.data.coregen.df@50c7becf_ARCHIVE_LOCATION">/home/dwf1m12/soclabs_git/soclabs-cortexm0-mcu/Cortex-M0/soclabs_demo/systems/cortex_m0_mcu/fpga_imp/ip_repo/ft1248x1_to_stream8_1.0</xilinx:tag>
-        <xilinx:tag xilinx:name="ui.data.coregen.df@134862eb_ARCHIVE_LOCATION">/home/dwf1m12/soclabs_git/soclabs-cortexm0-mcu/Cortex-M0/soclabs_demo/systems/cortex_m0_mcu/fpga_imp/ip_repo/ft1248x1_to_stream8_1.0</xilinx:tag>
-        <xilinx:tag xilinx:name="ui.data.coregen.df@4c308b0f_ARCHIVE_LOCATION">/home/dwf1m12/soclabs_git/soclabs-cortexm0-mcu/Cortex-M0/soclabs_demo/systems/cortex_m0_mcu/fpga_imp/ip_repo/ft1248x1_to_stream8_1.0</xilinx:tag>
-        <xilinx:tag xilinx:name="ui.data.coregen.df@174caa76_ARCHIVE_LOCATION">/home/dwf1m12/soclabs_git/soclabs-cortexm0-mcu/Cortex-M0/soclabs_demo/systems/cortex_m0_mcu/fpga_imp/ip_repo/ft1248x1_to_stream8_1.0</xilinx:tag>
-        <xilinx:tag xilinx:name="ui.data.coregen.df@33e02927_ARCHIVE_LOCATION">/home/dwf1m12/soclabs_git/soclabs-cortexm0-mcu/Cortex-M0/soclabs_demo/systems/cortex_m0_mcu/fpga_imp/ip_repo/ft1248x1_to_stream8_1.0</xilinx:tag>
-        <xilinx:tag xilinx:name="ui.data.coregen.df@1bc1eca_ARCHIVE_LOCATION">/home/dwf1m12/soclabs_git/soclabs-cortexm0-mcu/Cortex-M0/soclabs_demo/systems/cortex_m0_mcu/fpga_imp/ip_repo/ft1248x1_to_stream8_1.0</xilinx:tag>
-        <xilinx:tag xilinx:name="ui.data.coregen.df@247a24c1_ARCHIVE_LOCATION">/home/dwf1m12/soclabs_git/soclabs-cortexm0-mcu/Cortex-M0/soclabs_demo/systems/cortex_m0_mcu/fpga_imp/ip_repo/ft1248x1_to_stream8_1.0</xilinx:tag>
-        <xilinx:tag xilinx:name="ui.data.coregen.df@7f189307_ARCHIVE_LOCATION">/home/dwf1m12/soclabs_git/soclabs-cortexm0-mcu/Cortex-M0/soclabs_demo/systems/cortex_m0_mcu/fpga_imp/ip_repo/ft1248x1_to_stream8_1.0</xilinx:tag>
-        <xilinx:tag xilinx:name="ui.data.coregen.df@4fc3a402_ARCHIVE_LOCATION">/home/dwf1m12/soclabs_git/soclabs-cortexm0-mcu/Cortex-M0/soclabs_demo/systems/cortex_m0_mcu/fpga_imp/ip_repo/ft1248x1_to_stream8_1.0</xilinx:tag>
-        <xilinx:tag xilinx:name="ui.data.coregen.df@62f43e05_ARCHIVE_LOCATION">/home/dwf1m12/soclabs_git/soclabs-cortexm0-mcu/Cortex-M0/soclabs_demo/systems/cortex_m0_mcu/fpga_imp/ip_repo/ft1248x1_to_stream8_1.0</xilinx:tag>
-        <xilinx:tag xilinx:name="ui.data.coregen.df@7f223669_ARCHIVE_LOCATION">/home/dwf1m12/soclabs_git/soclabs-cortexm0-mcu/Cortex-M0/soclabs_demo/systems/cortex_m0_mcu/fpga_imp/ip_repo/ft1248x1_to_stream8_1.0</xilinx:tag>
-        <xilinx:tag xilinx:name="ui.data.coregen.df@77281e8f_ARCHIVE_LOCATION">/home/dwf1m12/soclabs_git/soclabs-cortexm0-mcu/Cortex-M0/soclabs_demo/systems/cortex_m0_mcu/fpga_imp/ip_repo/ft1248x1_to_stream8_1.0</xilinx:tag>
-      </xilinx:tags>
-    </xilinx:coreExtensions>
-    <xilinx:packagingInfo>
-      <xilinx:xilinxVersion>2021.1</xilinx:xilinxVersion>
-      <xilinx:checksum xilinx:scope="fileGroups" xilinx:value="8af10ea9"/>
-      <xilinx:checksum xilinx:scope="parameters" xilinx:value="f93808b1"/>
-    </xilinx:packagingInfo>
-  </spirit:vendorExtensions>
-</spirit:component>
diff --git a/socket/vivado_lib/ft1248x1_to_stream8_1.0/ft1248x1_to_stream8_0.xcix b/socket/vivado_lib/ft1248x1_to_stream8_1.0/ft1248x1_to_stream8_0.xcix
deleted file mode 100644
index 1b2410ad1ecde98574e898028f41ad55c1c8f3b1..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 253
zcmWIWW@gc4U}NB5XqqS(`mg`;-f9L0hK&pi3~US{49UrQ6}dT#3<3=3VDrZHC(Z_H
zc<XANJ9B<>sL>VUfFO^v-sk*Jp7Guu%EeoFd27I??T<GVp40a#J$GK)^UN7<-JlP?
zXHMyJHD@wqeLQ={S#ZPSpa6!~g{RMWZuQnSG%?z^!k|b0WWT<irkC%TtsUkUj%%$7
zpExITG5;psHIumywcXA+&dLzr&B!FeEP}()5Qj1{Ffc4>1hFAr2=HcQ1MwIc7#U0$
K7#KE#I1B(r*H8NZ

diff --git a/socket/vivado_lib/ft1248x1_to_stream8_1.0/hdl/ft1248x1_to_stream8_v1_0.v b/socket/vivado_lib/ft1248x1_to_stream8_1.0/hdl/ft1248x1_to_stream8_v1_0.v
deleted file mode 100644
index 822ab4c..0000000
--- a/socket/vivado_lib/ft1248x1_to_stream8_1.0/hdl/ft1248x1_to_stream8_v1_0.v
+++ /dev/null
@@ -1,75 +0,0 @@
-
-`timescale 1 ns / 1 ps
-
-	module ft1248x1_to_stream8_v1_0 #
-	(
-		// Users to add parameters here
-
-		// User parameters ends
-		// Do not modify the parameters beyond this line
-
-
-		// Parameters of Axi Slave Bus Interface RXD8
-		parameter integer C_RXD8_TDATA_WIDTH	= 32,
-
-		// Parameters of Axi Master Bus Interface TXD8
-		parameter integer C_TXD8_TDATA_WIDTH	= 32,
-		parameter integer C_TXD8_START_COUNT	= 32
-	)
-	(
-		// Users to add ports here
-
-		// User ports ends
-		// Do not modify the ports beyond this line
-
-
-		// Ports of Axi Slave Bus Interface RXD8
-		input wire  rxd8_aclk,
-		input wire  rxd8_aresetn,
-		output wire  rxd8_tready,
-		input wire [C_RXD8_TDATA_WIDTH-1 : 0] rxd8_tdata,
-		input wire [(C_RXD8_TDATA_WIDTH/8)-1 : 0] rxd8_tstrb,
-		input wire  rxd8_tlast,
-		input wire  rxd8_tvalid,
-
-		// Ports of Axi Master Bus Interface TXD8
-		input wire  txd8_aclk,
-		input wire  txd8_aresetn,
-		output wire  txd8_tvalid,
-		output wire [C_TXD8_TDATA_WIDTH-1 : 0] txd8_tdata,
-		output wire [(C_TXD8_TDATA_WIDTH/8)-1 : 0] txd8_tstrb,
-		output wire  txd8_tlast,
-		input wire  txd8_tready
-	);
-// Instantiation of Axi Bus Interface RXD8
-	ft1248x1_to_stream8_v1_0_RXD8 # ( 
-		.C_S_AXIS_TDATA_WIDTH(C_RXD8_TDATA_WIDTH)
-	) ft1248x1_to_stream8_v1_0_RXD8_inst (
-		.S_AXIS_ACLK(rxd8_aclk),
-		.S_AXIS_ARESETN(rxd8_aresetn),
-		.S_AXIS_TREADY(rxd8_tready),
-		.S_AXIS_TDATA(rxd8_tdata),
-		.S_AXIS_TSTRB(rxd8_tstrb),
-		.S_AXIS_TLAST(rxd8_tlast),
-		.S_AXIS_TVALID(rxd8_tvalid)
-	);
-
-// Instantiation of Axi Bus Interface TXD8
-	ft1248x1_to_stream8_v1_0_TXD8 # ( 
-		.C_M_AXIS_TDATA_WIDTH(C_TXD8_TDATA_WIDTH),
-		.C_M_START_COUNT(C_TXD8_START_COUNT)
-	) ft1248x1_to_stream8_v1_0_TXD8_inst (
-		.M_AXIS_ACLK(txd8_aclk),
-		.M_AXIS_ARESETN(txd8_aresetn),
-		.M_AXIS_TVALID(txd8_tvalid),
-		.M_AXIS_TDATA(txd8_tdata),
-		.M_AXIS_TSTRB(txd8_tstrb),
-		.M_AXIS_TLAST(txd8_tlast),
-		.M_AXIS_TREADY(txd8_tready)
-	);
-
-	// Add user logic here
-
-	// User logic ends
-
-	endmodule
diff --git a/socket/vivado_lib/ft1248x1_to_stream8_1.0/hdl/ft1248x1_to_stream8_v1_0_RXD8.v b/socket/vivado_lib/ft1248x1_to_stream8_1.0/hdl/ft1248x1_to_stream8_v1_0_RXD8.v
deleted file mode 100644
index 9b39ac6..0000000
--- a/socket/vivado_lib/ft1248x1_to_stream8_1.0/hdl/ft1248x1_to_stream8_v1_0_RXD8.v
+++ /dev/null
@@ -1,167 +0,0 @@
-
-`timescale 1 ns / 1 ps
-
-	module ft1248x1_to_stream8_v1_0_RXD8 #
-	(
-		// Users to add parameters here
-
-		// User parameters ends
-		// Do not modify the parameters beyond this line
-
-		// AXI4Stream sink: Data Width
-		parameter integer C_S_AXIS_TDATA_WIDTH	= 32
-	)
-	(
-		// Users to add ports here
-
-		// User ports ends
-		// Do not modify the ports beyond this line
-
-		// AXI4Stream sink: Clock
-		input wire  S_AXIS_ACLK,
-		// AXI4Stream sink: Reset
-		input wire  S_AXIS_ARESETN,
-		// Ready to accept data in
-		output wire  S_AXIS_TREADY,
-		// Data in
-		input wire [C_S_AXIS_TDATA_WIDTH-1 : 0] S_AXIS_TDATA,
-		// Byte qualifier
-		input wire [(C_S_AXIS_TDATA_WIDTH/8)-1 : 0] S_AXIS_TSTRB,
-		// Indicates boundary of last packet
-		input wire  S_AXIS_TLAST,
-		// Data is in valid
-		input wire  S_AXIS_TVALID
-	);
-	// function called clogb2 that returns an integer which has the 
-	// value of the ceiling of the log base 2.
-	function integer clogb2 (input integer bit_depth);
-	  begin
-	    for(clogb2=0; bit_depth>0; clogb2=clogb2+1)
-	      bit_depth = bit_depth >> 1;
-	  end
-	endfunction
-
-	// Total number of input data.
-	localparam NUMBER_OF_INPUT_WORDS  = 8;
-	// bit_num gives the minimum number of bits needed to address 'NUMBER_OF_INPUT_WORDS' size of FIFO.
-	localparam bit_num  = clogb2(NUMBER_OF_INPUT_WORDS-1);
-	// Define the states of state machine
-	// The control state machine oversees the writing of input streaming data to the FIFO,
-	// and outputs the streaming data from the FIFO
-	parameter [1:0] IDLE = 1'b0,        // This is the initial/idle state 
-
-	                WRITE_FIFO  = 1'b1; // In this state FIFO is written with the
-	                                    // input stream data S_AXIS_TDATA 
-	wire  	axis_tready;
-	// State variable
-	reg mst_exec_state;  
-	// FIFO implementation signals
-	genvar byte_index;     
-	// FIFO write enable
-	wire fifo_wren;
-	// FIFO full flag
-	reg fifo_full_flag;
-	// FIFO write pointer
-	reg [bit_num-1:0] write_pointer;
-	// sink has accepted all the streaming data and stored in FIFO
-	  reg writes_done;
-	// I/O Connections assignments
-
-	assign S_AXIS_TREADY	= axis_tready;
-	// Control state machine implementation
-	always @(posedge S_AXIS_ACLK) 
-	begin  
-	  if (!S_AXIS_ARESETN) 
-	  // Synchronous reset (active low)
-	    begin
-	      mst_exec_state <= IDLE;
-	    end  
-	  else
-	    case (mst_exec_state)
-	      IDLE: 
-	        // The sink starts accepting tdata when 
-	        // there tvalid is asserted to mark the
-	        // presence of valid streaming data 
-	          if (S_AXIS_TVALID)
-	            begin
-	              mst_exec_state <= WRITE_FIFO;
-	            end
-	          else
-	            begin
-	              mst_exec_state <= IDLE;
-	            end
-	      WRITE_FIFO: 
-	        // When the sink has accepted all the streaming input data,
-	        // the interface swiches functionality to a streaming master
-	        if (writes_done)
-	          begin
-	            mst_exec_state <= IDLE;
-	          end
-	        else
-	          begin
-	            // The sink accepts and stores tdata 
-	            // into FIFO
-	            mst_exec_state <= WRITE_FIFO;
-	          end
-
-	    endcase
-	end
-	// AXI Streaming Sink 
-	// 
-	// The example design sink is always ready to accept the S_AXIS_TDATA  until
-	// the FIFO is not filled with NUMBER_OF_INPUT_WORDS number of input words.
-	assign axis_tready = ((mst_exec_state == WRITE_FIFO) && (write_pointer <= NUMBER_OF_INPUT_WORDS-1));
-
-	always@(posedge S_AXIS_ACLK)
-	begin
-	  if(!S_AXIS_ARESETN)
-	    begin
-	      write_pointer <= 0;
-	      writes_done <= 1'b0;
-	    end  
-	  else
-	    if (write_pointer <= NUMBER_OF_INPUT_WORDS-1)
-	      begin
-	        if (fifo_wren)
-	          begin
-	            // write pointer is incremented after every write to the FIFO
-	            // when FIFO write signal is enabled.
-	            write_pointer <= write_pointer + 1;
-	            writes_done <= 1'b0;
-	          end
-	          if ((write_pointer == NUMBER_OF_INPUT_WORDS-1)|| S_AXIS_TLAST)
-	            begin
-	              // reads_done is asserted when NUMBER_OF_INPUT_WORDS numbers of streaming data 
-	              // has been written to the FIFO which is also marked by S_AXIS_TLAST(kept for optional usage).
-	              writes_done <= 1'b1;
-	            end
-	      end  
-	end
-
-	// FIFO write enable generation
-	assign fifo_wren = S_AXIS_TVALID && axis_tready;
-
-	// FIFO Implementation
-	generate 
-	  for(byte_index=0; byte_index<= (C_S_AXIS_TDATA_WIDTH/8-1); byte_index=byte_index+1)
-	  begin:FIFO_GEN
-
-	    reg  [(C_S_AXIS_TDATA_WIDTH/4)-1:0] stream_data_fifo [0 : NUMBER_OF_INPUT_WORDS-1];
-
-	    // Streaming input data is stored in FIFO
-
-	    always @( posedge S_AXIS_ACLK )
-	    begin
-	      if (fifo_wren)// && S_AXIS_TSTRB[byte_index])
-	        begin
-	          stream_data_fifo[write_pointer] <= S_AXIS_TDATA[(byte_index*8+7) -: 8];
-	        end  
-	    end  
-	  end		
-	endgenerate
-
-	// Add user logic here
-
-	// User logic ends
-
-	endmodule
diff --git a/socket/vivado_lib/ft1248x1_to_stream8_1.0/hdl/ft1248x1_to_stream8_v1_0_TXD8.v b/socket/vivado_lib/ft1248x1_to_stream8_1.0/hdl/ft1248x1_to_stream8_v1_0_TXD8.v
deleted file mode 100644
index 3abf9f8..0000000
--- a/socket/vivado_lib/ft1248x1_to_stream8_1.0/hdl/ft1248x1_to_stream8_v1_0_TXD8.v
+++ /dev/null
@@ -1,228 +0,0 @@
-
-`timescale 1 ns / 1 ps
-
-	module ft1248x1_to_stream8_v1_0_TXD8 #
-	(
-		// Users to add parameters here
-
-		// User parameters ends
-		// Do not modify the parameters beyond this line
-
-		// Width of S_AXIS address bus. The slave accepts the read and write addresses of width C_M_AXIS_TDATA_WIDTH.
-		parameter integer C_M_AXIS_TDATA_WIDTH	= 32,
-		// Start count is the number of clock cycles the master will wait before initiating/issuing any transaction.
-		parameter integer C_M_START_COUNT	= 32
-	)
-	(
-		// Users to add ports here
-
-		// User ports ends
-		// Do not modify the ports beyond this line
-
-		// Global ports
-		input wire  M_AXIS_ACLK,
-		// 
-		input wire  M_AXIS_ARESETN,
-		// Master Stream Ports. TVALID indicates that the master is driving a valid transfer, A transfer takes place when both TVALID and TREADY are asserted. 
-		output wire  M_AXIS_TVALID,
-		// TDATA is the primary payload that is used to provide the data that is passing across the interface from the master.
-		output wire [C_M_AXIS_TDATA_WIDTH-1 : 0] M_AXIS_TDATA,
-		// TSTRB is the byte qualifier that indicates whether the content of the associated byte of TDATA is processed as a data byte or a position byte.
-		output wire [(C_M_AXIS_TDATA_WIDTH/8)-1 : 0] M_AXIS_TSTRB,
-		// TLAST indicates the boundary of a packet.
-		output wire  M_AXIS_TLAST,
-		// TREADY indicates that the slave can accept a transfer in the current cycle.
-		input wire  M_AXIS_TREADY
-	);
-	// Total number of output data                                                 
-	localparam NUMBER_OF_OUTPUT_WORDS = 8;                                               
-	                                                                                     
-	// function called clogb2 that returns an integer which has the                      
-	// value of the ceiling of the log base 2.                                           
-	function integer clogb2 (input integer bit_depth);                                   
-	  begin                                                                              
-	    for(clogb2=0; bit_depth>0; clogb2=clogb2+1)                                      
-	      bit_depth = bit_depth >> 1;                                                    
-	  end                                                                                
-	endfunction                                                                          
-	                                                                                     
-	// WAIT_COUNT_BITS is the width of the wait counter.                                 
-	localparam integer WAIT_COUNT_BITS = clogb2(C_M_START_COUNT-1);                      
-	                                                                                     
-	// bit_num gives the minimum number of bits needed to address 'depth' size of FIFO.  
-	localparam bit_num  = clogb2(NUMBER_OF_OUTPUT_WORDS);                                
-	                                                                                     
-	// Define the states of state machine                                                
-	// The control state machine oversees the writing of input streaming data to the FIFO,
-	// and outputs the streaming data from the FIFO                                      
-	parameter [1:0] IDLE = 2'b00,        // This is the initial/idle state               
-	                                                                                     
-	                INIT_COUNTER  = 2'b01, // This state initializes the counter, once   
-	                                // the counter reaches C_M_START_COUNT count,        
-	                                // the state machine changes state to SEND_STREAM     
-	                SEND_STREAM   = 2'b10; // In this state the                          
-	                                     // stream data is output through M_AXIS_TDATA   
-	// State variable                                                                    
-	reg [1:0] mst_exec_state;                                                            
-	// Example design FIFO read pointer                                                  
-	reg [bit_num-1:0] read_pointer;                                                      
-
-	// AXI Stream internal signals
-	//wait counter. The master waits for the user defined number of clock cycles before initiating a transfer.
-	reg [WAIT_COUNT_BITS-1 : 0] 	count;
-	//streaming data valid
-	wire  	axis_tvalid;
-	//streaming data valid delayed by one clock cycle
-	reg  	axis_tvalid_delay;
-	//Last of the streaming data 
-	wire  	axis_tlast;
-	//Last of the streaming data delayed by one clock cycle
-	reg  	axis_tlast_delay;
-	//FIFO implementation signals
-	reg [C_M_AXIS_TDATA_WIDTH-1 : 0] 	stream_data_out;
-	wire  	tx_en;
-	//The master has issued all the streaming data stored in FIFO
-	reg  	tx_done;
-
-
-	// I/O Connections assignments
-
-	assign M_AXIS_TVALID	= axis_tvalid_delay;
-	assign M_AXIS_TDATA	= stream_data_out;
-	assign M_AXIS_TLAST	= axis_tlast_delay;
-	assign M_AXIS_TSTRB	= {(C_M_AXIS_TDATA_WIDTH/8){1'b1}};
-
-
-	// Control state machine implementation                             
-	always @(posedge M_AXIS_ACLK)                                             
-	begin                                                                     
-	  if (!M_AXIS_ARESETN)                                                    
-	  // Synchronous reset (active low)                                       
-	    begin                                                                 
-	      mst_exec_state <= IDLE;                                             
-	      count    <= 0;                                                      
-	    end                                                                   
-	  else                                                                    
-	    case (mst_exec_state)                                                 
-	      IDLE:                                                               
-	        // The slave starts accepting tdata when                          
-	        // there tvalid is asserted to mark the                           
-	        // presence of valid streaming data                               
-	        //if ( count == 0 )                                                 
-	        //  begin                                                           
-	            mst_exec_state  <= INIT_COUNTER;                              
-	        //  end                                                             
-	        //else                                                              
-	        //  begin                                                           
-	        //    mst_exec_state  <= IDLE;                                      
-	        //  end                                                             
-	                                                                          
-	      INIT_COUNTER:                                                       
-	        // The slave starts accepting tdata when                          
-	        // there tvalid is asserted to mark the                           
-	        // presence of valid streaming data                               
-	        if ( count == C_M_START_COUNT - 1 )                               
-	          begin                                                           
-	            mst_exec_state  <= SEND_STREAM;                               
-	          end                                                             
-	        else                                                              
-	          begin                                                           
-	            count <= count + 1;                                           
-	            mst_exec_state  <= INIT_COUNTER;                              
-	          end                                                             
-	                                                                          
-	      SEND_STREAM:                                                        
-	        // The example design streaming master functionality starts       
-	        // when the master drives output tdata from the FIFO and the slave
-	        // has finished storing the S_AXIS_TDATA                          
-	        if (tx_done)                                                      
-	          begin                                                           
-	            mst_exec_state <= IDLE;                                       
-	          end                                                             
-	        else                                                              
-	          begin                                                           
-	            mst_exec_state <= SEND_STREAM;                                
-	          end                                                             
-	    endcase                                                               
-	end                                                                       
-
-
-	//tvalid generation
-	//axis_tvalid is asserted when the control state machine's state is SEND_STREAM and
-	//number of output streaming data is less than the NUMBER_OF_OUTPUT_WORDS.
-	assign axis_tvalid = ((mst_exec_state == SEND_STREAM) && (read_pointer < NUMBER_OF_OUTPUT_WORDS));
-	                                                                                               
-	// AXI tlast generation                                                                        
-	// axis_tlast is asserted number of output streaming data is NUMBER_OF_OUTPUT_WORDS-1          
-	// (0 to NUMBER_OF_OUTPUT_WORDS-1)                                                             
-	assign axis_tlast = (read_pointer == NUMBER_OF_OUTPUT_WORDS-1);                                
-	                                                                                               
-	                                                                                               
-	// Delay the axis_tvalid and axis_tlast signal by one clock cycle                              
-	// to match the latency of M_AXIS_TDATA                                                        
-	always @(posedge M_AXIS_ACLK)                                                                  
-	begin                                                                                          
-	  if (!M_AXIS_ARESETN)                                                                         
-	    begin                                                                                      
-	      axis_tvalid_delay <= 1'b0;                                                               
-	      axis_tlast_delay <= 1'b0;                                                                
-	    end                                                                                        
-	  else                                                                                         
-	    begin                                                                                      
-	      axis_tvalid_delay <= axis_tvalid;                                                        
-	      axis_tlast_delay <= axis_tlast;                                                          
-	    end                                                                                        
-	end                                                                                            
-
-
-	//read_pointer pointer
-
-	always@(posedge M_AXIS_ACLK)                                               
-	begin                                                                            
-	  if(!M_AXIS_ARESETN)                                                            
-	    begin                                                                        
-	      read_pointer <= 0;                                                         
-	      tx_done <= 1'b0;                                                           
-	    end                                                                          
-	  else                                                                           
-	    if (read_pointer <= NUMBER_OF_OUTPUT_WORDS-1)                                
-	      begin                                                                      
-	        if (tx_en)                                                               
-	          // read pointer is incremented after every read from the FIFO          
-	          // when FIFO read signal is enabled.                                   
-	          begin                                                                  
-	            read_pointer <= read_pointer + 1;                                    
-	            tx_done <= 1'b0;                                                     
-	          end                                                                    
-	      end                                                                        
-	    else if (read_pointer == NUMBER_OF_OUTPUT_WORDS)                             
-	      begin                                                                      
-	        // tx_done is asserted when NUMBER_OF_OUTPUT_WORDS numbers of streaming data
-	        // has been out.                                                         
-	        tx_done <= 1'b1;                                                         
-	      end                                                                        
-	end                                                                              
-
-
-	//FIFO read enable generation 
-
-	assign tx_en = M_AXIS_TREADY && axis_tvalid;   
-	                                                     
-	    // Streaming output data is read from FIFO       
-	    always @( posedge M_AXIS_ACLK )                  
-	    begin                                            
-	      if(!M_AXIS_ARESETN)                            
-	        begin                                        
-	          stream_data_out <= 1;                      
-	        end                                          
-	      else if (tx_en)// && M_AXIS_TSTRB[byte_index]  
-	        begin                                        
-	          stream_data_out <= read_pointer + 32'b1;   
-	        end                                          
-	    end                                              
-
-	// Add user logic here
-
-	// User logic ends
-
-	endmodule
diff --git a/socket/vivado_lib/ft1248x1_to_stream8_1.0/ip_project_archive.zip b/socket/vivado_lib/ft1248x1_to_stream8_1.0/ip_project_archive.zip
deleted file mode 100755
index e67e74bbc9ca5ffffb895c6ce630825d07197fa2..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 19366
zcmWIWW@Zs#U|`^2I9bgUdWhj^{}KiU1{p>M21^D8hLYTZ_|%lllK6t6{H)aE5`A<5
zy^L~9v7CaUrTu%k4jD+eez!ZCuEr`nTWP6Ry?|rE<V8of<~s2%=~OYivVHm@4|enO
zH5PYfi#h8bEKY6>lU$_Yav*f|%z)T7z30q+0TbC@@+4bGo|RkM{3<tpq0qiGsTvWt
zDFHK%XW!x2-VmSgXXT%x+c#bRzFhF`S;o66hH~NuLOm9?smg?UC#b7VS)8!&$u#Nn
zk~71aLay~*j=FWSnq_amtrQKH)ixE32(O>2W(qA3Kb&C8#lUdUkbyy!D6dx(6upg#
zF23a<R(F2=1*6ItE2UIej%`0QQ>j6A+nX7V79VX^rmSq7cQrRkm+9x%>ZrTBlpG(Y
z7;O!mU34n!b<Ohgf9K>${Mq(3Cbik4h57%orK{&oYpSs>*sy<Brmb$??dfap-`gws
zXZ78%G?jv+*;?~0zHa@*nXjWBV0PCpJiPSj^Us^VaWC7iv9$i}wub%R;*TYWv{*NV
zXRmq@KK*&_w$-0{V&CM~hc4T<R?GQ%=(8S$pl2FRDa|sW1{KB(FaNvj{9?Ygd)lXl
zzYTY`{Q5i1X!DC-%a*QX=FdDged)WGvASG2*Q+|uh%S41Ki678BzLdh?aj%#Q*5@#
zTS=~L-s8|+Cg>Wsq%i98>lr;W0<QOLSiVwW^D*D+`*vLTeRp-4i`m?`_1CYbJvpy<
z@l1N~;<yYY_F&^DMXPU5*m7@g;FN<Bx@&JN{T}w_c6MryW8?PCKQABuSaR=@P*>ms
z{f}B|Vyvz=xz^aWy>a}RQTbw-X=&6c_0z0pr+Zxg{mb?LqU-j~8I@1Jto!Bt_sy%M
zo5j<9S*Ay{p4V|=ZC?A=bf3fQZ$&#dHVRiP?S19A_yG6D?m5+en2fl8+`gG%@ymem
z;=zcM)oDuN`%iqRFx#O1<HQ7e7QUilkH^<$9p`wMFS%_0ag9aS0;km%8gaH=?kt=l
z?KY8Tb-MIU3%hmi!!CGk_+w(FclX$|NqK$d5)&UUQ*QEWdU|15Mf0`3>M1Ly2436L
zs?izS&6e`2`F2dXebth}r3@3@o(3xLYF0-}O{)%(3i>w3q^J71^Rv0i2dr<`t^MkK
zAy_7W$?Nxm7ORuIs!O)0d##u}C(vo$3;v7d^B14t-t+eKK`lO(40qef&C_HmxD3h{
z+zV&Cw)4$N#?y8wC$zU-&dg{FEqHg#QaaFT)xD|A(`-*Jl(o#bI<+d?wyh=L#`hOH
ztGG5iy1eg}HDk=DSD6>?tY3aIy6pANDjlh!ly{dem+9>OVv=)pIs1k8%-t487wSlM
zg}$h~9{)Dt{hZkL51Web&RAQcFL1~~lb?fYbEB24L!#H|Z_NkIBTHtxnH$#WmnjNq
z99%Z9#%lIrg9PWD3+k+ApN&)wzj}$E&zGs?{;`z*?meGx8O222Qk!{oYr*sXr8)Ks
zFDLsPo-xgA-|P*HvJ%ISxCKtmT)uf?>iUa3g8c3}TrBexPFwPRY)!aj(CJ_E`lxF`
zS>u1ZtsD9;75*u!$oF~Ws4UR9$TG_A_75`!)shk!yScUp8{dezZODk3@h|b_j5GPm
zzY8l{?|b9S%cU-P+r#I258Hhg&O}@3bzgsf{9KrL{Fs5~$~QBPY+f<%$LFTG&Ob7B
z^xJr6{;HfP=9|f&KjqSsU=h#Db(@}Mx@t~dc0R2zlg0RPiu9qGkxdq+i%lA42hNf?
zqv6Y)Hf5P;+LUGI&uDb+aGuaVVZ{Wghg}hTyZFPHHqNj&Jz~B2&z+(VVFBwdZkt)q
zX#3^K<1PL_c-w8=tW=KN>Ma!6b?u#8wWQno66r~rHya|%v?k5}{(JAUhux)9wlE0Z
zs#&0YX|Im7-)>Q>S6-KA`gOd{lvm^5^UX#<Utu@9wus-M$c=erXK(N=UOs^>`NPY=
zM-#Ihxf`4^_wzShscN+{zwj-ujctvJ^Y#8u)rPja#b3WX*&FPq`t9WG8Hd&!h^lM}
z-{<(?$@(*j`kl7Vt_K~f33*rb#&m^#+<Q~keX{o_C@I}g?`b{eBvBZ@eSdSC?KF)G
zyH?(_-F@ek8t<77r|+Nid}H5c2yWb(@%*;I$`!M7oDY`0(r>Qe6l<R%w9xd7^${iO
z#A`A0wC<V+KKOCvU>djZ65n(#&(8igr!N`%ZvOo5YNY%*!N|2Y*d4>mmSsvDQY+zI
zrz7!O!ItB_693ONubp&GH!9h^3S(ein^m{(lkD8M&+qCr7_#pDwU>w!=Xs-N@WC;t
z^!3hC#sw1F_k8e4KY#e*B8Q;#C+}ap*p$+%mQ$4X|Iw$fX-_6aABj7BU}D{?1h<XP
z9nY*TnJs%|$`|IgLw--^O)X(ITgdtGS@-WrF{-az1(-75EIVSl&60!dnNR;2X7%=F
zm$Ie3lkJPOovcOrA9;49u-g@Am>d_3U-7<&_0_I(GxqCQ>AvsL%#Xaz@#~Q0pGupm
zx$^>x94C~$(CO#rVU!72u2vtqK56Ms`D^cwx7{;X=2({;H0N~IiO#3)nL8zvXLPWx
z3F((M2%hid#Ph`ImJ++nB$<gUiwq>*C#Ow2{&rh~@+I!3%d;G0+m3wstJl)Fc|z?;
z*8rch)1Mr5+`;%e^4$!Fjh^dRxnwMEl}svUpLs?}#G0|fX~E$qH<#R$y<*38Xl234
z(7nBux~xfEcbyj5Z#@3%#(9m`i|lJ7<^RuFox>#4d5ZZ~Du3W76(cK!lgWjSZ>H4z
zn)PvQ+CtxgO-f4y?u(qL5K&omW%--Wd$QK>Z{fMC5LhN3d%ik;mB<GD>mSb^`MdQ^
z*qj(iE9ukQCw`tKdvojdH)X;1j|nd6H~OeJ$*D<sO8&|}JZtJE-nZCmKK*XYg~KV1
zI@ev_Wlu>pf4AxP!IPr94|)k6bncqPG+)@n_x<bCa<MOOZ~pnXVp6O7yu{Bp*4vi8
z{`=($ugIw@f{QES((^Lk-%9Y-Z4KXisdG*(--Qo*d0e;rX9=2N!`1b4<*dH{T{|wf
zojRt)?IQLtd7pKZ@^AaZhS~?)w%p+``*9|3uB0cE{O!bVZFe6wy(#nIXo!BpZJqaq
z;q3(fIp(@vNegDXEjBHi%M*SxIOJTu^ycsTqM4Nwrc8U76X&yb9&5AX&9k?%!k=%+
z`zSL}pl(AA`>|}nb7$T5mNx5~vb;HbHAvi8gNys(0~Oib5jTTBZW8_WkbU9IEA6U*
z7F*XiG*!+r@AvQSw45h#d3XP-8l&nt`e)itK05sP$H#vk-}O&Bq<=srZ6j0neco$D
zi*(`@?rBdv&o}kxf%kFFj)z%3RzAJmY#VClG$pBCRMUF}>*Y(HVRyR^=6C&WVYs55
zvNcERz=Hzm-S4V>Dh-yG{EzA4_+E3INAvbRO<%2$vpbt=0~XHGa&1zu`D4ekPa#Qe
zX_2n9>@p6e4XI9QCyVxW_X$l@SSIwl$VjvA<ngv=-cm{H*Xe()%h51mzx%U1Y}OP0
zd%ctS{~UQ;e>{$ZaZUjLmN#b;a$H}Fe@pogJ#m-8`z2?smBpA#3OzNH?TpRmmh7FO
zR6cF9(BX<yT~}di{oW53v^tH`zrEe0_2SsP`KLo49!)dR-<q4`r<}?u$e?<$r0~dj
zAw#d%AN~JK@6Zl&=g?q$R5B$g#PIRQ*jZCQ2*k4cF+9Gl7rtymMa0TIU#3*l+b`{U
zG<TiM`7b_epKNqf{L5a|*<G?rOQbqywvYI~n8iNN*{j?+RNraDFBE;9{v$i6wCE~V
zcl+1hcISkW5BNXYezKmMx0@;K>gxL+UM|kkQQQ2fZ|d1^(gzsxy6w{@JKwoc@I$xk
z{i&OKC#clB$9%k|llZmv>7}WA&Sgg~JU`8?=HKb~H&_2PZgZd9z<sA;`KkG?(pBHn
z7Idx;-&_4T9?||3t7Zya;9-zr%D}*2#lXN|MpXMVIWajSRlmGMAKEzAD=$da_SV%p
zcjo+NqbEk*hTg`;hQ_A8#>Qse#^$EprtF{2^q!gQd&bw-SI2k3r!cpel|M7XVi;f!
zVPF6?gc*>40|^dE&d)8#%t?(e&dklpOw!NIPf5)w&dk-vZMq%#rWcl`7MCRAG25Da
zvolkR@fd7RzQGmAsX3XY_(FsNSC=Kz$kj!eWtpi(_`=$e{2)n8F3BuQ%}B|?6XFI$
z8J}4YUs{}66rYxvgA{*|ZtX<d)tfC?85kxAGcf32GcB<wIU}<y71qs-FD}i^O)RR^
zE2$_s8}6Hb+d^RP>u`a+7MfYw@4f|yoMgHc;TdDGO;P*y-N^?$O3pY5@lN`5{NJy+
zimEq*-l)7ayYV6Ev|9STJ(b4Jd+Yyeov!rfTbF6@^HqG?5pKQww)$TwW#!ecS?ebs
znD5tg!LsUI%c+Wk;W|-XALkym3UZwmxbyAHUc0Twmnq+${WIaD^n?#-7TUR!3Y^x}
z{@C&H<N^M@4^PNXc=#hr=uXwc0wcA1@{_H9m$T+QXqEf(pf%&$Z1dF@_&DYmS?j-V
zIw0SEm6KT^#z5(2kcaOMCC>PdEvhZgqbBV12;TVYC-Y2a9v4T3m?y8iuglE2>0Wfn
zUiGfj5jmF@LA?VRl@k~^GhzjK?Sz+U`ilw{f0hsr+7$CxPKB#(@vJo~l~kKOFF$wx
zVkr~f_m1t~fv^8J#d{Q(&$BJcwtW77N?-6glPXq)KZ@#`PKdf_ovb?exb>#uOs$}`
zCuVuF`5eidxS-xCLHza&ccbY_#=E^6d~5bA?wj@h<`cagU*dam&INzwHfj*aXyQ{;
zJbw49kC2zs3DFf#kKVINZJ9g&^X(5Zyln@2&ipZu>03YF^+KfK$>5Ixg*>k&ZwNk-
z+pe=R?ttZ5$GTU{4~v~X=ic5K==k8ipVNPL%V{}$iq8yLZcNk>{^jsTc3xuah9%8m
zzMgLkCx%4jE;ib!|1f0kqoo@%X3a|HPUZAEvgpCjV9g&}jvp%Ey89^0LN1AM-;AD9
zt5unLO5&c~uK33_v2X80>sc}XXMEV#?exr~G>|d(Rln!^(rJ&cD9Yxh-F-gIc$wtp
z-2Y84awIplyk7Ouy4ma2hvmBkB#S41-828I{VuN~ntQ`9GGD*?J+Eie?UeMpI(m1!
zKVR5uyL!9Y1oiOTscAEd-rm!&?k@OT^V323!rIf*1-F%!ulp@;UwiM1vaZrn)x|fT
zuefhrJSRWSpiS$q(=yG)U4lBteqIxh>(1fi^i&A_E_CebI)mKUq}?W3YuQ;^cBTa7
zd+)UP%98W->%5uf$2{B)&T3e7$mFt&-@1%b2bXuOJjpsYTaEL^*^A9?uAyON-+C`3
z1uo%?yrBB#XjtQoRgO)@OHRC=#adJHJZZ1P#>mSZoOZ<v%dch17%%-%dx~MlfrAQ{
zLMt1zLpSiJWZrBJ3w7S&vu5YE$1Lo<N6HxG%9g#C+`w_vp<8BwV?$TEYgWR+hSFtI
zXL3*O<xN?%y-_!C>g*L~d|7rDF5{59&U*85QL@Lan>WPX-YYUNHsIy&-_LAmK6&#^
zxmWW#6z8nYT_+y+zx=rj%gjg9Ww#w>-qgEtC(og|^`UplPm3*{@Fe2X@38K`3rUaC
zl2<l_ecZy*bzr{S>fDgtr#*aUrYp!ye7I3@x3tl5b)F`v?m4ClZA~k0@90}2rB_wE
zJ^$5Q)>Ax&VVze^wmsNb)9Cc4VG^UIu*Uu=$3?o9uH{<Z^O(6qMniFCK!ola1=H#?
zQ`1_W@XM$jUAL@X;Q5x$*9*DUvN_b1dc630aqi(O%azoB>&#*LJncvEn!W$i9?k6b
zwl+Uo8W3^y=+Zr>{;k<^E_sE5?!-lDTfPSSF8nN(Hhpypk6J@*M%U`?%r6hr=d;TB
z@t#OsS3O&&wMR_q-rh3Fx_94hg(YWSeY8ezQka4Ny`<>HNy|6PyS>lmYeUS_Ytb><
z*`+2omf6(x?q&Y}SLpWJBR1h($A!Ni$#$@gXTQE!#qPgZfl0eq4ELjn+gr{0uB}R}
z)r}W-)31rmXqX-87<X`I_`U}3xo#7T%8!Pd2-;ShEZoC&Va2ZUxCzHk-L(Js|6%L&
zjq*pj)#ubBjjp|_VhWx4bMHw>CI$vJ9tMUuY$Y(pz+!Pxa<P7KerZv1YH_@wer9e#
zeo;xWep-p4k%>ixVSGt`d~r!pYGSTMyrG_fesNK<esN`9a!zKFUfJ6zj`_0<M2??-
z7`!LeY=Y6HOVOKG^<K(Z8?rR$l6SQuOWX?a4a&E9o^E=-Ip5M+fU9w$hjtL(R;8mq
z-hZ$7_Wr*FPXdd*<U*mKW8n`rTc|k+xEV6IB{r^)+rqM~#Zvlk^LBw+kBkNxH=DMJ
z?^z{;<9%yHn3NtVi)KhSH~u;}Bk<%&rHMV=H7~FIc4hh@m#e{Qydk)H<#O{TPq*Cj
z+b2&AWm#`Nr)9m+zlP#x7JnBp8C*8m%KBOPYl5-ds|oAhTk<HUISMJBnZNw;?wgOl
z{7W@rzWhRPm){j%!M+LnoldLHz7Se`ef`P0EkTF!@?)QC1nk;kc|&-%Ph#g9uc!pK
z^HNf5#{=wtt(y?n@%->!R`=Y%nTxL6=Gb9)-6ugHDNNjePvr1hr@)S_Yp3a)y`S%W
zidAvpQA4lw&H3R4|56Lhas=kq3TAGYo2atEHnr?iz1rG2=C>CXOV2aP^Vod5QQP4D
zjfjG|>aC~u-VU57`Nr+VyC>g{r_@!wc<t1;E%J<^eEzIghmLaYT%i;9raLxj&9_IV
zT2rlGnO%A8q5Z6o^~5xb%|Y+ee}rhA)iM&ja@%OCQ|Yo#id#eZwj9s-_r%U-)jx(8
zj%Sapm9t+~E7j7xws6it|6}K4qr#rQd$f4P%KLZg1J)}BB}nfVw|*sRbo+nbivQ-{
zWWTRWi*3B0x!e5V-KDmwr{3Saz4n;pnH@V8S-pA`pu6Qi6Ra)D!2n8>uFGGtwX-uY
zWQj8{WYH>7Vo9)iWm_X221%O>{FAjmx@@lJ+m(uT?JQhpmrQXuyoFPCj{Fv$#}nU|
zL_Do2@;5q``PrfN^t*K><-3@Lf>xvp>11x*ee3VH%cuP3ud{u!{PP!0nLYh&($NBI
zeW%2Fw}>W~=3L|`^XI$nwrxTZTf4i;ZtnVwsnHRy9x)}^&elwxaxRt0s=aegmk#UP
zLmuxB>L(@r+HgWR@<5(p^W6xQqGd^cguIg#f;XP&jd9<)q|*QSwt&g4S6e>@uRprf
z>w!Y_Q_GUcU!PWa#n&6$dQ}s9<aKv<+}6r{T33EvIb?4j!_)rv6!Qzc>8DE<KjvY7
zy~|>`?puvJuP;{?w2D0M+}PTon`3^7d5+xNW!WD?&N3P+c844h+EujeM9WkS+ZwYP
z=FUAwKK$cPe|x56(+QO&)AsD@Iu_Q?tDLf$`NGk9t@-*o2ZBU}0&-;1#gnhLe`;=*
ze*5>+XWph`PjU}l{2|Nrs#W!*mw@B)<GUug9NgZn+@}8O3h!LwrGoR5k6zNLFtM^>
za+$SJL~p&7+J~2Go`!7Lf4^vP+@<aMwJ#?7Gig7u$+uwEUnt%2^?|6%eIL7oP0V|(
zcZmOuDegPx8dSx(QtywWM}5NM*BU0w8ERX0H8To$GVR<Ju}R5!LQ0Zr>+3~rq5Z5o
z4=AS`iulphHPhj{Xs3n9KKn}EQw@TfE89%%C%))fv)9M!?UtlZuX}!_oYZ#Fy*Xbz
zORY<k>*bF{dpA#TyJd4j=G_z57fFpPyi3CMt9R@@Y_$K?A*n|T?rO90&HV8A(1FBI
z?TQYw6>ma~woO+GKKZp~US3ihTe@G{tNha^P4+x>-7<9zhj#hbCqH(nyRLmPYw9K8
zX@&C)3}zRu?q76b;ypgWkWQa7$NkhLdNvA#)ZLro?K<saifQ-Kox&Lly>!jZ(qFG#
zeE;6ty_R-W<v)J^`&jY+tN(B1h@SOfl{RHz6SU>lMrY~>b;+#O6Facr`f<x=-FpAd
zE1&x!(Yf$7!@<di)?^&py}F`rS;_SM=eABfx${Wk;|Y7Fo&Nl6*7qIPD_ti3T5`SO
zK>Np8Gxa{)^4(g~K5hSl*grvD&w0;Ar^G!Fl~SJEGb8#Q*B;-ZpHF95x7xH{?#(@-
zBHK7c@T9|*myz8wx^{6XbE_J$FZZ%LUR0KJCiva!?H^>EyXJTFb1Cf<v7FWw-TRek
zHvbak>46I_1hnpqDRbE-qRnhyQY+F~#}NC$@yi^in1w+v?AEov`<Ezuf4>U9(yuoL
z%TJu~nD#w#5p&Y5q~&kFon5<@k<Zh4+1EMKKHS>YwOeoB{#m<jEa?`|mYa~YOZSI0
z+sV5Up$aF{f}M+}`nc$COKj3f5kIkn^_X$vy3?0lem2gMNH~yryZZMp$=-QW7c2J8
zo4&ZiP5;!z2DjNZUFn_+W<T3rG0$3j%b`X0O_xQ4KRGk4I7hcjs`!n+NzR$v4|9q)
z&8a?DEZw_P+~)Zm{pV(u3L9rc@A_i4)8vCei~e~o(E~ran%?=S&RIRr`QI{kqj@ts
z1g<r7UccXez=Ti9byvHub?K>HdEb7tH2nN`#L{>^my6e~6UpVK+Ph!f6+SzKo#nu^
z)oS4Z<*c8de`h<x>HnaRbLZvs^ty<Je9Lcev0e2E&GKYso!Niq+c*91U%#-jZJU2>
z@9E<Y^bUR9$ZdRh_7U^*P24=wKk^+pT6OjJky(cwpX%}|NlmF{)9w9cpRL2bWTHXP
z)_F$a!dXiU7r&eF<Jdu!6r*EqT|fC&i-^mXuj02j8L^PJMX|1~)8=Jp->;0RHD1$s
z{=B{Pv{`6bR`Z_KZZnq7J-0RNEAy&FvP;v-TQ((mot2m~ul%xofSAuEb1^~91x|+>
z5*|-l5pkhVUAu=P-E@UcR;tg&;`vSmTC)=5wj8YSR=ks$zgd83i_OZL()l(=Sc85{
z$k=^-@w*G{-QJ5*d%G4?mH(*Z@hJH=@#kEoj`u|pd+qPtujLMIX_(o?9l4+F<zJsG
zkE;E0K5z8a>rq#~&uP$N5&h%B8DA~#XIW|oQy0EC+4xu6Y^qC4xJL8)X3O<@2An@0
zeR%aR=7IdJvz50O?YXI){xfc-_S68EeXAee_i@lH+2xwRH@m=3!_L4&t~E{~NF>ze
z#f5V}pN2eBcocE&<wv1es=XOAf9?K1>C<%m)vsq=o|}2l@bUDij~xR=W{6$h<n>XR
zXTif2=bzmc&{%C!vpHcVTVHsqj9sLY;3~b45_c8ZaF3#iMslirHoFe-XShUiu9w*Q
z)Tr9PN0h&DWzb1=!>>E06fNMoAIzgQW#VSbMz1M1KIUC-Ty()iXPc1pz6U#2X}|V;
zESJ0Q_Syr_R{Rm$vamaNu4=>FO{Ww>zr>Yw9Oh=eE%eGDY9DLB_Y<7+7nZQIY`XLC
z^CWY}8_Sm48*1EM7|*%x`-{H6*=6blLc2Gcwe!7`_vE>HSNW{p=k$)>Vwd(`z9%ht
zK=o<VX}`>uTmNPq`4?*Y=s-^Wxi4o6er$TZ>|3jV<%`{gM-69)#-CtsXLnCEce)@j
z^I^zmRoDH86F&rHMe#iQd%!U3?(vv>O%A_QrWK3g4nCexynSza=>C%CxsNCR^}m&v
z`M*l5w}tWkK2`6MyqW6n#Lu1Ek7y2Tu4W2NYqLq4$H~CJ5KE&rDrkf(KQA?}M6V(@
z=WR@6@gpm-y7%!DKUFi#KD$Kfok2@Uu=&d+4Jq%=bbH@0%6Qb8EzR`zwR@b3{-lGR
zcV=!m?eBT+)5|%F{oS`I|9&mcetE|Y=i{#1Oht~kdGBbLmX&=Xiof;v)3Zx;{uuuH
zboH(hdu8~l+`L@wsC%qsoA0b<Hkwc>!6kkEcAV*KeSQ7jfGY>4Ii-mFTGrz<F)MoA
z+lq{Ivz+w1e_p>UTbQ?ib5?iz&6;gFUA8-`HMd4FH<c6way?rrYmp>u_-&udwAYN@
zt%qKmKFZoz!>@a`%x&FTsf4G$^5SP_h90`%pv`V^{NlM*K2zmGEpu6YEH2pwzB<7k
z_%Y|`R~ZhUnZH=rR%$dk^%u+)KHR>k<!09Nb2|K1RsjoNYyVgkFq!jsquv)CwI-fp
zpLVp0ul&>QRP^kUB|oe9THS<zo&8oKO$%4(xGqX7^NA@r&$y~x_mp&W;hu=Ps+#Kz
z)h9f*&!{U;kiI%&ai=I}*^TTaOph6(Rj$sgoS{GMjwc6?=JFo_CLL!lK7HBkUzy-7
zQnMpsuAim$a@R!{8QJ?=cAn6dzxeSI7gNoS{j!f;|GodSLHVbgg!L)$CA_Wmc6w>%
z{EvVB@T-)%Z|5id`DN0sKNl4`rU<?|=B72rxmKfPzZP4OZR&!PtEZ`TAIh+aJU4II
zskeXkKf3y&|CqL)nPQl8m{#Bh@2ww{!g|y5Vo${#T$Q-`JZpHsO>GN_-^S}7oP0YU
z<jm8t2P;3zO4OZtY8|KZPJQ#oqN=qlr}gdsc+}NNKCUv~w83fHPSLpe`95kLtNx@g
z?KSwscWY|#g}C{=t2H;?uITLWdS%wZGb8fLgN8dzum8&aeRk!=`WF^z1%`ae=kzq(
z4k!Eg%|CJG$fv43GR4o840N}@e2^J#!&~7H_U3c)C&$gP&%&>;=&!i>^(RB|g?m9F
zdvqp#+u3b2zi+*NjP>89MGvf{->z5yQu?`T($wiUu1}h~?Ok>ui+r8x*M+%fJ8wt5
zOwrw}CV%T%)1sE#x5461oo`14Oxdt@>b=*SKNaWpuI8BIabnq8M`fo@mui;y8LzA2
zPx$#x2)hw2k|4{Qu(mvb_wM4SxeL1Q%=y!~yY0?e#y<O+r%fL{vn0ba-lj`!v00*A
zW7~cBHuG6O8?`-2$sW56I#hmK6fO~1=H$b@C?Tfl5$ngfRWahxh749l516WoSA6DZ
z&rfxHQL*Sqm%VWpf6My}p%AroI?F4XgZhf|?pxeiVsx0ze$Gj@Rp;NGJ2Ug&690<z
zmqMenc3(cdx7E|-d}rg;qhFRbaQ@rZd0Bf0V|9x4fr5!UjT`n~e)i<}QuEhe{OUG0
zOjWX2f6w%~<*rRT>TawnuiS0Xf3bgacXYv)@{cZi`Y*8C)F=xclr;OC_Kjt8(;KaW
z^0f*F8}G>1Nd04Qzq`OTWLw|g_!Y-WZT%NoKUsC*fVSMN-J8DE3MZR2Y3j}PoN1%&
zsAlkjKOsD}mStv;QqfZ{h7VtLiqF2}zUjrP`EuSOsq;I_WsiJgwS1YPw6pE$!M&e2
zRKF)HJ*oKN@vrx*>6KvPBU?SBkEqFovETWS`*KIftjABMpT7QkPvUpaZ&v1+|J6M1
zU8|Ox8}&q_X}Q0hn8zwfG1Zj;J#y=^uYOta(($jd=0f&+YH#lR{`}~VNBqAlEGvZ^
zbHs0!a<7zh`m3DTrdTSxQWMNlvd`|iBBJ<jqDg|&KhC+2uB`YjF81kr`mvLjr<+<<
zTn-oc^j+P(@v+KL&7gc;nG;<FPrg{Li9ayWHmo(@c7ql3D>+NAMYsDn_bg1faV<*X
ztLBdU!{5s;R84*?xBshvM4|RMwquI9zS(+K{oC#+efEyDTk9_`rS12+sys#UzrKj4
zPha!5%Ky(UEZ{3^`#!}+ZSFgkB%Ar1(Rm6t8@*C98;u=~Mn>)U`RwYn?1{(wW-a@<
zRA;{Oa(@xA=N=dRj^#CPTz7B&=D6jW5u#!0KfbJcChh-OJ!9W;|E1IRZ}{YOdg}>g
z_p_J&1c@#6@DlkE%xU}D>k`lX`#o%)+%GvMnmpitU+b@TxI=tPnOaE`)5Pme`_J#I
zU2f<3xAOWE>7_mDSC4#5cS$r<3M>&*om{PQ_L$I;W1k+Jkqn7*teJgej+$<)dv21;
zRfpBb=5bGI`>1JjtKD5v{M)&}$D+<xdlvtH_m}tLxp#8!p8u;ZG2eV!v(#_qgb$NX
ztUuFPT=c2=)9jl0e*a=@?rE--lWC}1UTt(-W<t5Brs|?2RnoUBVwbDQSzl6DxVQUL
zwRyUq%-0%K<3GwP_ZVqa2WFbuTz$Y)ysFdpewgR3mYKox_hdb5`1AE`;W8WF=iN8|
z^1E7f2E3{fu`>91O4Bi#OZ=dD-6CCa-Q`lApUbBxXnVh1Csh*4p4)uavfo}rA#=`w
z6Z2N4Jh{1wb*KM{?Ily>fB5IccGMPJnH+P<`oh*;TN$o8&ll45|GZzU{C+<8#g#K<
zCNFqc11;v~JgU*0y3{CX>B>`W`X+w-a$EkC3wq`rT3WyK7T=jyNo#lC{w3ZTu$xhB
z+63<XOFG|W_laMOXS?+9$qK0*I{bZW-!`qTPyF&Z<L}<vQvW7Cof3U!K{4~Bhc*Qp
zbZ<Xt6MEUV_?hy&NjI5Ymv+4=(2+XmCAae2e5JlZG4@v{oa#gmm6_dQ`YQSU?8lq$
zZ4UDUSoB`+oVX}oBar1<6Zc1p{j#q2^So+XI}J}&{Pvl7*p|y~l1kw3DKj1$9sK%f
z^DZ{I7$uo0S0*hvJ+0>Eq-jady`*BcKK;Msf&_mXQ}(+j>p409F72MKn)Ty+mz3QT
zsVH9G|L)thPiaTK(s=yyNp(fNfuw$6zqs4k-rPgWzAfrrrZMr5M)s45_w_^PPiNm;
znz?HCGnF5YKdp21HO;v7W6_DP3tpNzM<316+_!OGEHmrO+iH17`R?4h!)x?IBy`T{
z+d@~i+*@`3Ww@Dr;N@Gk7Z|7dZqW7C_RZU_H9LXdAvXW}(^qO5>#Jg8V?xajZo3m|
zy<rz;*WRfbC#y<#XY6lYzW%OUh}pq1_bXOGrRAJ~G9|Y!d9BH5vR!$Zaj)a{O`K)b
zf9-O<-=6BbLHVWb&efSyeK)K>Shrn0ykdGotnaI@t8TmgzU${5_44Xo={Mc0L-%k0
zHFuUzklVZv!HM%DzXghFy8j4ajeI?G>1`36pf>w?hw=-5o|iw;<`H=LRL^p$y|R8@
zZ&!U2yKeP0SD{g(nY}cElWpy`b*nqy*UokOEZ<&N{O0bo##i3CJNI9DdMMyveZgi8
z2jOU~eZ_ixPV<%17XJG2ZueDb2PW6mC$8An)tt1cTcY(#^z+5(|KX#Tm{X#fL=6;W
z7Nn%6AtvM?(@^C)4rP1T85rtK85pFo8B>;7mY9;Smz7_7HR^8hEenDA=j$){#J`i{
znXx4E(RP!UXO~RBR}ysV_lp#hLt+b#ZHw_-RxtP9`|Xo*lAC2c3@)7BVtnIX|NOG8
zyDxd^&w2j8G;V=^jvG^7TJygHZ+E?zzBxGk$d&aUo*th6qV&`uhPga`@pI?QSCU)&
z(8M+Wvc%5XCvg?(>2d!>tIBO%W=Tin-P4ae_iMTOtf%G&b-KHM)xKx>w^wI#O@NEW
zk>eggnvxfUpDs-Fx|nL^n9*=2`2Ckd(lHso7%%J>zr*fTQv7yd`1(83o4G40r*b(a
zw=$`%Sid8pVukrr!MCjUkL5k#tD5v%QPR^UQS1NPA2AwM{lEO4EZ?jB`N5vo;!7BN
zEBy7AESmTxGD_y_Ml~_5Ba>XC4EvRY*fmlNzg{?VLn!Y4Cr+u&6XaOj&aZmgR>QRF
z{-=;5DmHt5>D#>B6EQcz|Ho?&Tj38Xsj~AfNT@f}Gp4^Q<#?RpWY9h7Uc}Dk%b$NT
zX!k7@n&M)*e%EK0h@8a?OT5fFFMglTF;8S4%f^)r3<vY_MZV~G{FwXyMPHNrTocZY
zMK_)YGEHVF77S>Vu}xG7T_JFRGsB~ikL|R3yvi?|g<kd>B6<sbrn;2Z$IegwzVF%T
zDS?f@BhEH|ewzL{bw#Dgy@bHD*i*p_eI_-tCQe{|ns3K@*k^Y2ea0VEw^Tw_uy%R6
zOq{_UTEZ!D!)vv2_}3>=pZCt4FMROw65)yL$<teo3SHj0NbLz%*k7qszM|=TR>%L!
zF>F${IsRs!^Wy_tIj-9-ZCaZeJw3M|`tx?Z+Yh#F`WcrJUA<lJ_KhRAcI*7!xMAaG
zPKo#16@q8^Oq!{<N$`$fiBqyx$)7`~C+JkHveKDZ9q06i-Dsify%Lt^T+Xg{ve{BO
z#Y`Tan0fHWP6tWv>D`<~PG&+bIssaxO@S%rlI3&*-YeT24m#LbF`-T5=}At@39lWj
z%vP>Yvso+c<>xT}?1kexY}&7m@I1(nY+fE(y_4zu+i&5A>=KL^wI5aeta$e5-!!jl
zGhS~Ae91jcWAC}h#re@QzjCbWDOeTq=xfn&DgCX>1H?sy^b52O{nc6}9hp6gC*S3$
z(UcALsvldN=5jjC5nz0!;C({u%7zM_so7J!WWR;<aEip4q;Hrtr~KfoxR2MAi`5L*
z>@fM9*A={B?p4301*>jPJ005+euss}OCbJy*%~p<qni!p<=Waz=3hPS;s+VKYn;M&
zHqB-Z+mPiOonRxi?^I0uu9pWCyk5TkZP`@2=wg~>oeWoyVY%<x4v(g`@_fDZ|Lvyy
z>++oR(#dFkOKWnMsN=-brVC_No!PkV@J;h~QHN`H?b*B2PN1Q;?ew(izHOT$u0MPu
zUB33=I{o(P?3eam%)42(=wu$-E2~+xhtHi=YiykPH7j%`^ZA^d(qD?-<u6=)`#$!^
z{>itNok}Y!+kN70e(L29QJeqBY2B9lC>mvu!>-ZAkz;%$a6(Ado1#N95=W|fLqD%M
zqIBbp>dLAmm$q@Q=~$ZkId1nW`IFU8bN{}pTpxO4YufFA^k~)%7xN-lFFl#(zhd*+
zN9#=Qv`vj&&0r?wcjI2v<cIS%Y|0k>K5go?7dd+`<pu1T|7o9N=56KNbwYJNF1&dX
zQ=Z*d$Ks*m^Ld}(>AUTT-}`r)%irUPZb_c;`ErZqSNRmFw`!NWOl<uRZ`-ZosJza4
zMQZUDW9?Z-r}ymL-8M^Z;>@z8Q|G+Pn{>h0c;8&Lz{SsU=B?E>e;*yPPxF{}XR2h&
z?~n*DEo<#HM>ak?(sXWy<v+PMYBxXp`oMI|aQ>1r-!4T@*x7DizNu%adQ+of+4LJh
zk5=qpPj#2EP|VW0Sm$5!`SFw}*=IHu)_Lz$yMJW+@kuk?zt?bKLuuOn^Zb>KhuTv&
z?UN43E`FYUN@3pIohQ1F8|S7ad;AEVwtGPt&)ZuoYxXsmTJ34$W8U>{zfNXiNv2GZ
zP=s6UwS&pIh1;1u9mU#N-FNKy@K1hweb?U=`pxa94u90sF>%iNJ;~{%in({Sa<wjl
z<*wI^7rSLH|I8>TeHw86ik>~w9ElV1D^9JC4Dqk?etzPq598Lx8@0c^pUm6ITvAl@
zG5P7LLun6>``EYs|MX*(^NQRM?nQ?7S0|e%*Oh<$`0d%(vdFcn%dhWYw>O`2F*^L(
zrj(UUY(AM&a%OVPF`3CBbRaBfiHPM==I5(8YPt5LXyt9Oz1nvEb9M2ZRZmTqr0rlo
zxFa#|Ti2C4bKM_at9)|9(?<Gin|7SL_lwsNS#ewE-O0}1J%ii&K8xq1rju^V{{Gx=
zeB4$=cV5Y<^7w=ZnHdV+2cnoKEx7YO>s9Arruim4SyC-Wo!>2bcV^j<$9Md1nPuC&
zX9~WWzAG<Xl)KlH!|(Ln8SA^(UgZ*g;k9AkmOqkbHcoPxA9Q&^K!S7C8mVoG8TPCl
z&&5{0s?vzJpVG8>S4GW}MIqbdPpQ6|x&7Mo8;`8Qr`C(!e-)GQPP<lrzE4PBxz^h6
z@@Ls+XzyL_&bIC9PdSaa{3&5Ac9&Ft$L-??vRtzMPD#bPj5l$=E&s0a4Z9e-)opdg
ziyZIOIZolX_f@mZt=oD}WwoKVnAcUG?#(PbTAz2Up3J~$`|YsFiAhDl(rY7MXO*vM
zE85C<*<;78)2kFCr*6G>W@VyPM1R`rn21waPu0#zC9dq<{ME;DWoky@vOnyIQ6<op
zilwb<ycY;DFl_I{U+L%Mr@yt$Exv7b>Hb%3gUkG0^DTo^zOH+|&bV*xmVKwY&zIfW
z{kp<Jgwu1y&oUJa?~_mV-)B-#4Pw!aT%>F5yKHW!1H<p8yGP$K-T1TM&Hv>enSV_^
zqpR*v>}*^T>b|~8Hr3}v|A(iq%)eMEu4}&Kw*0<aNx*}}uOplO&HLeTeS)3L)@tRo
z{rBd_Dw|2Q&52*r{$-2bY~D&~K|>e!S!P*>>+k-Vpq=F^!YVBC*h1~X{YA<pa}!D?
z`3M?KxF=cKrks4@m-L1IN?bWFI?tVVTXFyT?qdQ{{*yHh*}3v{Zt!i+uyk4*`QYKS
zV)Ki(cQcMQzKwc(V~)_Qzp)#eJ07(z*PJ(Zi{DTFr+c@(dX=D`arE?zB>lY3ean{5
zTvO~4Ypf>6EK@P>sr3m}JGq6H&s9zKb1%zqiut3Gv4th#D(^CeU+*1-eop)S<-vcB
zNyqqSGkt5Y@15b<Wa;an%&{@QE${=o&a=gn3^<oh^W3w+bm6Xxk~%z-+0uNJb1EmP
zl?uA`YTy1;`^Z0#r-#imBy{V?X+KovC9)rtmY04mf3Hqv;r;XaXSU}Ruv;ybczcd_
z*OAE_$BnNEho~J&6c84OR+3%#-SjP+%c&v;C!xnH4AMGh1@RT$y0kU3)%*W`U7=Yy
zA;D7*7~HC=W>q%joE@;npeOpjlESO*X)i7bxh;Mgai!_yQseFHhad7<vF>9L@ilZU
zX%qbRT!pKq|8>rT$RqCio+g@XS4!%Q?NM_)VtuPooXzgF+3|hMy=!K7tut8KQ@O_b
z9rGf_EF->^jwY-*pNd%AS{?esKlUr9v~&KF-t6{a{=&uo-EV9?B%yI$YO7+<#p(&t
z3V*KtzHXp$<eF~HyYE{XZ(YA-kalWA+qA}8nb{wt!$cMrZ0qUdef8b^iu5b1*T-)+
z#?1PVcKCwTEWH3}YlS(6Gk?A4F5&H0ep;Avd~HaB?_SfgC??Mz)!)QR-_+#BB%My|
zHYj8MEw;49U~}`oUyoM&>|FV=^YF{a(=s0qs{J(c^9&K$^5D^Wr|A>LEjqg$m#Qrm
zS+kGLTH@uZHW8JdNm=|XE{7&=RX8Ag!Km0t?cj+A#p2S5w^koXi+-$9cvp4Bx~B)~
zGJKU!JJ+A}_{(|3@WZ}d)!P>qYO!8V<>LG2-P-hh>$+8q-J606e6O0Utm9|fJ1=Da
zSHJxeTQ(ToNb%-*W7>Rzarat-u;U5L;YUnm-Xy(X4`F$1pY+8#!sA=>kCLQcGmgFZ
z6rau<ynkZNOhK8MvpmJmCH$RPzcVdaLVs>*-HR%_Q%BwYW#;WXa<YE&#@EX(e3{L*
z;Ji;(hw?5FH}fb9*EdcPHHNd-SWhiax46$CpCHBRdE>*H=yTHrrW`)P-L*4%v(%|s
zPhVYSYGG+*o_xn7p;|!rnvr>GG55J^cIL;UH|+nm)AC-@y9a^K#Qv<S%{wQ2@co}V
z-&gidP?xCK>}-B&*U@Wp%7xmNe2f+e=(+GhRm%0tqYeHXe@wo5UOy=89xTjc;!@F7
zD`Uvbbw4IsQsv9cpVL%gdfXPK-j532(-k^JgJT6};ETm>x+|6Yr-<w=;c({B)RS}<
zdy{1o5U^q^$Daeyi>|5v;Fa5}bZ1)0d-KvI2b2!IQM*4YZqA3A>P7!w>!-iJaJ;3B
z)3sc1p~!EaFLLHn>J>Z}%n=ni>OKG5wbe%TFP{j!zpa?|Y{zQ(XR#~~Z6r2VriI1N
zU)Z<q#Vkg#ujz?3k!F38p4-~3v^R6QJ-M@7;t>~@uF|9l@9ui!?uj(GeQ0f_!lRz)
z2Ul7br!{8I^|`j%e)nwCpnVL+amAa?|8OtK?Jl|9t;%N>IrUav-@f=YCw6XD;!*MI
z@ZX`ar`Av<FJj?M*&El7<*QGZKWG0Z=8J;W;ke&vTP0@&S+aS~i!_vCKOp=;=?=?c
ziz8+;1>UT9Ar+!j$}F=?y8KA#MTtd9Ji-FA4TV$eJ0DutEZ$r)FHP^j{~YyQ*BH~4
z775H;RTcc`)t9Yt|JiC2eoN1d6zQET(J0-$xHC2RicRfze$jvVMLxO{j<Fu7t^WCJ
z{xkjmi6_4<Teq}+7Eh|s@|GtXSSLwrDmNBrvP|2>x3@vz5W~hVEUGak2j*+dU<f^T
zGjBb+;gf8K$)$H)E^`+2%(!mGd|f*7-zE=%3j)mtI2z_;w}c(Ye0{f$^W4*`TYo+L
zboT1(*UviYneR36v){jX^mw`Y^yk<Ar<Kf|6F2|=uVXdeKbkZ63vLcw@zPz#C4bX<
zo`e4%+t)5p*w7rtGcS08f&Qg=i5nQsD6C8CX??D7x=HF6!;Zp4-JQ`@o&RS~==d0P
zAVHHcF>WDa2~)TaV~bJY?v4ZP%=w?6w^&3($Voh(Xz}bq>b%U*B9~;zo}eO^^*((i
zw_h#TA6&HLx|zyJ!CH$e)svPq1nik}YvFxM$%Gn(vgAs+W7GC5w@%`Fr*S!ETHb9B
zGYb_y#Ug{JpJx}#eyK87SbESX!(yAVP?2-wt9WyRhu>$ja-~mcTO5{_R;d#p@9>PZ
zVbUzmCw6)YlBruAA0^w$ti5_@OQQCirk#xUPsH5p_+em>det^<j+W`H^VPSL#m>&I
z5-F{IFrn$L4eJz(wKcMD4lF;QyW#1l$?IqBnP_s#&$gc_`%0^?nD0IZhpOO9i#1z%
ze+bLW+^}`yl;CY!p9cSqTz%q$`<189+1NYdnHEhboFwbt?0D&S7hg5|@1|M)%knk(
zb&hKmIjHpT&)AV+l)%udGdnVFvYvC!x!C%B#*-`EHtewDu~nV1VT$66j>A0%+1Bw~
z;<J$B-QOg$X8Oy{i6?TG#<OMkXtb-j)zoTD3EOmfbMidVMXyhrtEd03)B3?WEoI)-
zti&+Ok5l6h3Y-e)HI6y`!p7`g(6PT&pWgj>(<yM{)Q&F=OS=l0t{YkP_imq3n67?Z
z-Jhji`~D^7ty=pELr&kYF}o#sds9K7@C>H?CtVI~sl24t>&VZf{qdt!ZE`@D^X7{3
z7C)J?&1rkt*D+sucJk`g<Ci~Aer=xq?6rUR^ZeO|5{2}_g$>U8NuRRTwD-1c={tVc
zQ?hF7+Aqp)mh^Yr=jwXNDzKzF?98=a5;H`;ec5`z#!%>~?OeS}y0WY`i|fvxi_=fi
zj=gpD+%@iha@Mo$J?!tCyVkXBN^bPGuTg?GPHq2E<Scq$Zo~TPUE8M=M%$bO3GVQ?
zleRMH4ztb4sE_vw)1Mn;-?>@N6t&%Yqws}YnrrW==6v5)HPQISR^2bQ9UU<>rh2b!
z>U&@8nW8gg<@-79r}C6H8FyQJ<a<0}#-#f*A06hKug&!9ChwX*kFF^{zIyq&%ku(`
zNjCD~i{`|i3R*kO`q8gw|3&L%noCO8)-!)(S2*l9{n$}sCx;a$&oRyYIx){qcDDNj
z#*9Vbf7X5Y`qH{Y$X9sUihqG+2CBU^5*w-($w}r1?+!RNZ@YZ^-kUoghVgx_^FN(f
zC=&Icpes)-D(_}>k@UT);v17US~H%>En{c?vyG=J(x$I+&zC(LG%JL1LL09aADS;J
z)qYYyKHIqQ;IpJz0)_FL+AQT0v!4|g&Yk7PB2jpu=P7I5sogv`FBmM@*8QvNp5&Lj
zBX_$^8y9~u<60aVbDHDeo&@!+xu%s`tT&xjO3hyAnr>Ki=X><c+IY>LQ{{E>7vFEI
z5IcP#t?#4nH!aqx8)92;GzXr%Wpk1FXw^(*Q`g^$VJ8DMdy;2auiU1+pueGQQ^%$Q
znf{I9ze`fidn~gLD!aP7FEYGs?#T__`sz>29S`{Z^*JQ9!n;Pi#hE8Yw{@lYfsY;G
z(_Q*L$oza{zw4S|u7CI3+lTtazq0JiTPG5`{86dsGr!YUHs_r=uYYgu{%MI9W<Bm`
za9u0d-7dN4Z$e1$uYX^JCup&TUeErxCn@x9z!dxYZ^G^d$Vjx^dcR4#Gdf>mTea*<
z-lK8p6?2~7yc$)1UV741-RI9gsQeD#`c~2Ad+1_%0IzXjX3EUOoJWDtxyr1$Ti$(s
zQ}yte-bTaosu~(s&K{5vUUl6-@S$*N=7rUXMtxH^o_7)W+@x$_6f*bh6V|@eIy2YD
z4?g^qn7Qcbhn*IA2NidmoDue#Ym2;H;G0N6)>$=a3`cW*F8iAz#`gL3FXgcF>~`y=
zUd>y_=lWpIYr7hyY{xU19z|OPew?rMXyH9!c5uT?CBy5YD@3Kf&)mj!*mg&l>D4%^
z{TmtPe>anB?c7mUw0hg|n4SeJNA9VLJkK~Y>)XRR)hg@E%w5mdHggDZnCs8g|Gkqx
zZTHnr6(6=Ff4}x+L%QEad#M$&GmNiqI^UARdQ9*_#^n>Tr8_=}-zuBE<%rj9=K6-6
zylO7f5>H)7dfdGtwP?fo&Dnp2o-NI@IuNz~5Tl$#mA~w_BL9+Ghx@W#tXcSk>3g;F
zN^Tp8Z|&CM2A$Va<u3hs5pjjbk!$yYR)v7@AF697sdy~X(BpHGSnykS*`@&QBgwHT
zO7o{OdkU-%+g~#A-euk^dHnnHt{C35`)L?lyZhL#PbMy@2Q=Qt^=|I?`%gvkNNlAZ
zZ|nENdx{ojwFI7>8=4Y7d7sxUM_28v^&GlW_&g^U-B6suDG{lDcZv$j?e_^Ti&>Og
zpF5=nZzwN&?YKH?0>9}0zeko=IWKr^e)j4MJI=mnmpxl=oxIxm+{>j<|LVI9?Wa=@
zw*Gr9o;qn_Y3j@%&HIzmFR^XP-4?&|tdw)9MMCnnr!%Xfsx@w>{C?Y~x3r3%?|PP;
zoa?46lbrKMDyBJpZNDpBvh_>uwmh9*ACi0WJ_=RNh~g4Hp~W1oImM^Q%gJ(uvj*=q
zU!^Izx#{QM-&n4)az(DD@JDqU!<F&!a?6TKBj3fIV?W^H9kS$A%>zcQOK*8op2~i`
zS8&1l+)szd9jd<8Zu5`ZYilgl%e*ylmhCxSK8^do{uB$Rx_Qkid;0d=@5U`z^7?;g
zgw6J1?~HKx^Y!S)$83j|DC8X2!l13{G?T@E<IyArraqM}`R~h)FrQqdH@T$Val;&2
z`(LutA76>Qb9MXO^#aL(O%bOweYY*>eA>j3>NNH40m1AYNsQesPmkK(YBqbbZ+?wI
zuEev=iSbXCwMVNQ%bgHEWm=<;{@c{4Hg2M~>+kaDcCTEL>E4<XcE#dn*iD5eYU?h<
zt+X%uf3!64LDu~4*N1AEk6V0xy=43K_wD<huWq^P;H`gd`Imdu<#wxIhVC)mzfN2&
zb+gE=#_L~#Q^FrOTrk+pm90@Fz2ns6_h-76g*E+jd^%4yZQuGemak{r<hSOSe&$+J
zO_PnG^VU=I%&$)4`r~`I$n}r5wwKJ=t!2CKieA6Wy5~;I{p2;yg4TXLq0_{i&+qTm
zIB~k_sjj(tmbLcp^5EcW|DUI4ExEmN%RJ@hFXFb!oK~s5{{QW-_zRcJCYRjyt+*ns
zYUj`)JpEXV_v}4vt9I(G`qr@ULE;WkWz!oTmn^LB76#0zkh^WSqxh(qNSLIb1n<wh
zlouN=h&xEIa9J`d%RJoLy7I<p9@&U$E=AWP|MqUURPn99(C~4X>5kJ5-He(N?0YBa
zx%(Dv$`&}dZ~2lLlFW9KKe%g(?v*Z)U0`{ze9qn3-VfP=FW7(iy!`Y2HK(TTI<hbI
zzfAOJpA_YFN8Hx@Dd`mt`Kj4$WF&HFWyr1tXZI^ah)nw^)L+#V_ob`*rqvq1yH}1K
zTN0{i6I=ErDMVDU)`M&P-Kl9itM|rj|L|*-M0Dz(`nVr*C$;P!ChJG8sP8eIAb0(s
z)R$BJZu457YRKIRlQHx>e_^HgtUa$+T^61{Ghgv-q{7C7@tqCtAMf1L<6Ib7`J(#W
zJX?p;R+na{C%o9#==^cg{W60j>mO~F68!}Ny2jf}@ANS^PPoSTeq*@BZaJHrJ3*)W
za*I5-Jes<%deyyU{al+RXHLAoga5>an^D}mE$W2#`)<|_a}Im)$a~+G(1msp3(GEF
zKXmtQ&XzS^@q!ySy|^RqXguR!tzn5^nO)aCjiSJWl{dP#O<Be~>9lDb*ONQJJx{&&
zrDZLgm%32nMexUo2UWIyn5eut+^{!SL}pIXgej#9_pI@*d>dIg@zmDmXKod~-CpPv
zbv#8{y|41m*F76<8nkTsCFPp-X<2o%PDG!m*CfdaP8ExoydOPCpT-c+o{`gjO6zRH
z_Odqhut!1LE-wFHaix{j%Ft=K<0C7Z2}%7oEI(iWxBZUbij&SaZ+^dfXI0nnlL|uB
zOaB&ofBukDocQ7I%r(b7n_jZ@JXu~)qf#(4sk~DsPxSI>In9GM@>BQmxUW=MK66!g
zLf?V@ABOHXz4CZ`Gt1d3HEga58QtxkQF%J`bWnK)%awK0T-&~WzjAl6=E?cyrRw`@
z!<}O;y!>eHvvkJ-Ynd0;Z?w(}++X!5@T&B)G+zzR^JgFFZ|X}Gf229N>gEM2ZHu=D
zI*LSPPA>2{@$<_0LzA8;ovisfJLq`K-`Um9SNF7Eo5puzo%em)E$`)SmGiI7<9}Np
z;LXS+!i@X05C#SY21W)3h9!+47W#^QeRKg_XNMqL1KN;?eliEhaELX(u}z|3SW{6@
zglr_X&6WrwtGS6e^#t42ON1SmlZK#ulps487z7yJI<oK(ZwF}281`M2u(-gq4YaQk
zVOtXUw!wE<;<gL4V-aE3KJx8??7GBl5oq5f!Xj~AvV#z@3lq0xsJ<#8-!jOqOxzZs
z`sytC79n<N;<gO5PZJS@T6|;&VItD5P2ARj_H81p>m<rL^j(}V(;*Y+==(T9rb9}C
z>)1@kv#S%4Ss`0N(Dx@HOpX*GCYUJMt%U9t^ld2!x4aXhkz25CQbBeXw)L?Hcm0*4
zfxAE@Up{QLEW$0A#T{rx2FNXt!c|<87`MRJXP_o9^c5N)V?hb*ZDSlZV-f2$5blGd
mRP<RNgh9cESlkCSC?`KXz?+o~q*#bSh#`fYfkDRw!~+0sA@0}!

diff --git a/socket/vivado_lib/ft1248x1_to_stream8_1.0/soclabs.org_user_ft1248x1_to_stream8_1.0.zip b/socket/vivado_lib/ft1248x1_to_stream8_1.0/soclabs.org_user_ft1248x1_to_stream8_1.0.zip
deleted file mode 100644
index bd8f20f74f0cc9c44da89578d526ab1afbd7f276..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 22475
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
a;5x}7z?+o~q=uD&l_7wUfgv>v!~+0G+E0-H

diff --git a/socket/vivado_lib/ft1248x1_to_stream8_1.0/src/ft1248x1_to_stream8.v b/socket/vivado_lib/ft1248x1_to_stream8_1.0/src/ft1248x1_to_stream8.v
deleted file mode 100755
index 6c55abc..0000000
--- a/socket/vivado_lib/ft1248x1_to_stream8_1.0/src/ft1248x1_to_stream8.v
+++ /dev/null
@@ -1,187 +0,0 @@
-//-----------------------------------------------------------------------------
-// FT1248 1-bit-data to 8-bit AXI-Stream IO
-// A joint work commissioned on behalf of SoC Labs, under Arm Academic Access license.
-//
-// Contributors
-//
-// David Flynn (d.w.flynn@soton.ac.uk)
-//
-// Copyright � 2022, SoC Labs (www.soclabs.org)
-//-----------------------------------------------------------------------------
-
-//-----------------------------------------------------------------------------
-// Abstract : FT1248 1-bit data off-chip interface (emulate FT232H device)
-//-----------------------------------------------------------------------------
-
-
-module ft1248x1_to_stream8
-  (
-  input  wire  ft_clk_i,         // SCLK
-  input  wire  ft_ssn_i,         // SS_N
-  output wire  ft_miso_o,        // MISO
-//  inout  wire  ft_miosio_io,   // MIOSIO tristate output control
-  input  wire ft_miosio_i,
-  output wire ft_miosio_o,
-  output wire ft_miosio_z,
-// assign ft_miosio_io = (ft_miosio_z) ? 1'bz : ft_miosio_o;// tri-state pad control for MIOSIO
-// 
-// assign #1 ft_miosio_i  = ft_miosio_io; //add notional delay on inout to ensure last "half-bit" on FT1248TXD is sampled before tri-stated
-
-  input  wire  clk,             // external primary clock
-  input  wire  resetn,          // external reset (active low)
-  
-  // Ports of Axi stream Bus Interface TXD
-  output wire  txd_tvalid_o,
-  output wire [7 : 0] txd_tdata8_o,
-  input  wire  txd_tready_i,
-
-  // Ports of Axi stream Bus Interface RXD
-  output wire  rxd_tready_o,
-  input  wire [7 : 0] rxd_tdata8_i,
-  input  wire  rxd_tvalid_i
-
-  );
-
-//wire ft_clk;
-wire ft_clk_rising;
-wire ft_clk_falling;
-
-wire ft_ssn;
-//wire ft_ssn_rising;
-//wire ft_ssn_falling;
-
-SYNCHRONIZER_EDGES u_xync_ft_clk (
-	.testmode_i(1'b0),
-	.clk_i(clk),
-	.reset_n_i(resetn),
-	.asyn_i(ft_clk_i),
-	.syn_o(),
-	.posedge_o(ft_clk_rising),
-	.negedge_o(ft_clk_falling)
-	);
-
-SYNCHRONIZER_EDGES u_xync_ft_ssn (
-	.testmode_i(1'b0),
-	.clk_i(clk),
-	.reset_n_i(resetn),
-	.asyn_i(ft_ssn_i),
-	.syn_o(ft_ssn),
-	.posedge_o( ),
-	.negedge_o( )
-	);
-
-//----------------------------------------------
-//-- FT1248 1-bit protocol State Machine
-//----------------------------------------------
-
-reg [4:0] ft_state; // 17-state for bit-serial
-wire [4:0] ft_nextstate = ft_state + 5'b00001;
-
-// advance state count on rising edge of ft_clk
-always @(posedge clk or negedge resetn)
-  if (!resetn)
-    ft_state <= 5'b11111;  
-  else if (ft_ssn) // sync reset
-    ft_state <= 5'b11111;
-  else if (ft_clk_rising) // loop if multi-data
-//    ft_state <= (ft_state == 5'b01111) ? 5'b01000 : ft_nextstate;
-    ft_state <= ft_nextstate;
-
-// 16: bus turnaround (or bit[5])
-// 0 for CMD3
-// 3 for CMD2
-// 5 for CMD1
-// 6 for CMD0
-// 7 for cmd turnaround
-// 8 for data bit0
-// 9 for data bit1
-// 10 for data bit2
-// 11 for data bit3
-// 12 for data bit4
-// 13 for data bit5
-// 14 for data bit6
-// 15 for data bit7
-
-// capture 7-bit CMD on falling edge of clock (mid-data)
-reg [7:0] ft_cmd;
-// - valid sample ready after 7th edge (ready RX or TX data phase functionality)
-always @(posedge clk or negedge resetn)
-  if (!resetn)
-    ft_cmd <= 8'b00000001;
-  else if (ft_ssn) // sync reset
-    ft_cmd <= 8'b00000001;
-  else if (ft_clk_falling & !ft_state[3] & !ft_nextstate[3]) // on shift if CMD phase)
-    ft_cmd <= {ft_cmd[6:0],ft_miosio_i};
-
-wire ft_cmd_valid = ft_cmd[7];
-wire ft_cmd_rxd =  ft_cmd[7] & !ft_cmd[6] & !ft_cmd[3] & !ft_cmd[1] &  ft_cmd[0];
-wire ft_cmd_txd =  ft_cmd[7] & !ft_cmd[6] & !ft_cmd[3] & !ft_cmd[1] & !ft_cmd[0];
-
-// tristate enable for miosio (deselected status or serialized data for read command)
-wire ft_miosio_e = ft_ssn_i | (ft_cmd_rxd & !ft_state[4] & ft_state[3]);
-assign ft_miosio_z = !ft_miosio_e;
-
-// capture (ft_cmd_txd) serial data out on falling edge of clock
-// bit [0] indicated byte valid
-reg [7:0] rxd_sr;
-always @(posedge clk or negedge resetn)
-  if (!resetn)
-    rxd_sr <= 8'b00000000;
-  else if (ft_ssn) // sync reset
-    rxd_sr <= 8'b00000000;
-  else if (ft_clk_falling & ft_cmd_txd & (ft_state[4:3] == 2'b01))  //serial shift
-    rxd_sr <= {ft_miosio_i, rxd_sr[7:1]};
-   
-// AXI STREAM handshake interfaces
-// TX stream delivers valid FT1248 read data transfer
-// 8-bit write port with extra top-bit used as valid qualifer
-reg [8:0] txstream;
-always @(posedge clk or negedge resetn)
-  if (!resetn)
-    txstream <= 9'b000000000;
-  else if (txstream[8] & txd_tready_i) // priority clear stream data valid when accepted
-    txstream[8] <= 1'b0;
-  else if (ft_clk_falling & ft_cmd_txd & (ft_state==5'b01111))  //load as last shift arrives
-    txstream[8:0] <= {1'b1, 1'b0, rxd_sr[7:1]};
-
-assign txd_tvalid_o = txstream[8];
-assign txd_tdata8_o = txstream[7:0];
-
-
-// AXI STREAM handshake interfaces
-// RX stream accepts 8-bit data to transfer over FT1248 channel
-// 8-bit write port with extra top-bit used as valid qualifer
-reg [8:0] rxstream;
-always @(posedge clk or negedge resetn)
-  if (!resetn)
-    rxstream <= 9'b000000000;
-  else if (!rxstream[8] & rxd_tvalid_i) // if empty can accept valid RX stream data
-    rxstream[8:0] <= {1'b1,rxd_tdata8_i};
-  else if (rxstream[8] & ft_clk_rising & ft_cmd_rxd &  (ft_state==5'b01111)) // hold until final shift completion
-    rxstream[8] <= 1'b0;
-assign rxd_tready_o = !rxstream[8]; // ready until loaded
-
-// shift TXD on rising edge of clock
-reg [7:0] txd_sr;
-// rewrite for clocked
-always @(posedge clk or negedge resetn)
-  if (!resetn)
-    txd_sr <= 8'b00000000;
-  else if (ft_ssn) // sync reset
-    txd_sr <= 8'b00000000;
-  else if (ft_clk_falling & ft_cmd_rxd & (ft_state == 5'b00111))
-    txd_sr <=  rxstream[8] ? rxstream[7:0] : 8'b00000000;
-  else if (ft_clk_rising & ft_cmd_rxd & (ft_state[4:3] == 2'b01))  //serial shift
-    txd_sr <= {1'b0,txd_sr[7:1]};
-
-
-//FT1248 FIFO status signals
-
-// ft_miso_o reflects TXF when deselected
-assign ft_miosio_o =  (ft_ssn_i) ? !txstream[8] : txd_sr[0];
-
-// ft_miso_o reflects RXE when deselected
-assign ft_miso_o = (ft_ssn_i) ? rxstream[8] : (ft_state == 5'b00111);
-
-
-endmodule
diff --git a/socket/vivado_lib/ft1248x1_to_stream8_1.0/src/synclib.v b/socket/vivado_lib/ft1248x1_to_stream8_1.0/src/synclib.v
deleted file mode 100755
index 1daf61f..0000000
--- a/socket/vivado_lib/ft1248x1_to_stream8_1.0/src/synclib.v
+++ /dev/null
@@ -1,139 +0,0 @@
-// A joint work commissioned on behalf of SoC Labs, under Arm Academic Access license.
-//
-// Contributors
-//
-// David Flynn (d.w.flynn@soton.ac.uk)
-//
-// Copyright � 2022, SoC Labs (www.soclabs.org)
-//-----------------------------------------------------------------------------
-
-module SYNCHRONIZER (
-	input wire        testmode_i
-	,input wire       clk_i
-        ,input wire       reset_n_i
-	,input wire       asyn_i
-	,output wire      syn_o
-	);
-
-reg sync_stage1;
-reg sync_stage2;
-
-  always @(posedge clk_i or negedge reset_n_i)
-    if(~reset_n_i) begin
-        sync_stage1 <= 1'b0;
-        sync_stage2 <= 1'b0;
-      end
-    else begin
-        sync_stage1 <= asyn_i;
-        sync_stage2 <= sync_stage1;
-      end
-
-assign syn_o = (testmode_i) ? asyn_i : sync_stage2;
-
-endmodule
-
-module SYNCHRONIZER_EDGES (
-	input wire        testmode_i
-	,input wire       clk_i
-        ,input wire       reset_n_i
-	,input wire       asyn_i
-	,output wire      syn_o
-	,output wire      posedge_o
-	,output wire      negedge_o
-	);
-
-reg sync_stage1;
-reg sync_stage2;
-reg sync_stage3;
-
-  always @(posedge clk_i or negedge reset_n_i)
-    if(~reset_n_i) begin
-        sync_stage1 <= 1'b0;
-        sync_stage2 <= 1'b0;
-        sync_stage3 <= 1'b0;
-      end
-    else begin
-        sync_stage1 <= asyn_i;
-        sync_stage2 <= sync_stage1;
-        sync_stage3 <= sync_stage2;
-      end
-
-assign syn_o     = (testmode_i) ? asyn_i : sync_stage2;
-assign posedge_o = (testmode_i) ? asyn_i : ( sync_stage2 & !sync_stage3);
-assign negedge_o = (testmode_i) ? asyn_i : (!sync_stage2 &  sync_stage3);
-
-endmodule
-
-module SYNCHRONIZER_RST_LO (
-  	 input wire       reset_n_i
-	,input wire       testmode_i
-	,input wire       clk_i
-	,input wire       asyn_i
-	,output wire      syn_o
-	);
-
-reg sync_stage1;
-reg sync_stage2;
-
-  always @(posedge clk_i or negedge reset_n_i)
-    if(~reset_n_i) begin
-        sync_stage1 <= 1'b0;
-        sync_stage2 <= 1'b0;
-      end
-    else begin
-        sync_stage1 <= asyn_i;
-        sync_stage2 <= sync_stage1;
-      end
-assign syn_o = (testmode_i) ? asyn_i : sync_stage2;
-
-endmodule
-
-module SYNCHRONIZER_RST_HI (
-  	 input wire       reset_n_i
-	,input wire       testmode_i
-	,input wire       clk_i
-	,input wire       asyn_i
-	,output wire      syn_o
-	);
-
-reg sync_stage1;
-reg sync_stage2;
-
-  always @(posedge clk_i or negedge reset_n_i)
-    if(~reset_n_i) begin
-        sync_stage1 <= 1'b1;
-        sync_stage2 <= 1'b1;
-      end
-    else begin
-        sync_stage1 <= asyn_i;
-        sync_stage2 <= sync_stage1;
-      end
-
-assign syn_o = (testmode_i) ? asyn_i : sync_stage2;
-
-endmodule
-
-
-module NRST_SYNCHRONIZER_LO (
-  	 input wire       reset_n_i
-	,input wire       testmode_i
-	,input wire       clk_i
-	,output wire      synreset_n_o
-	);
-
-reg sync_stage1;
-reg sync_stage2;
-
-  always @(posedge clk_i or negedge reset_n_i)
-    if(~reset_n_i) begin
-        sync_stage1 <= 1'b0;
-        sync_stage2 <= 1'b0;
-      end
-    else begin
-        sync_stage1 <= 1'b1;
-        sync_stage2 <= sync_stage1;
-      end
-
-assign synreset_n_o = (testmode_i) ? reset_n_i : sync_stage2;
-
-endmodule
diff --git a/socket/vivado_lib/ft1248x1_to_stream8_1.0/xgui/ft1248x1_to_stream8_v1_0.tcl b/socket/vivado_lib/ft1248x1_to_stream8_1.0/xgui/ft1248x1_to_stream8_v1_0.tcl
deleted file mode 100644
index 0db18e9..0000000
--- a/socket/vivado_lib/ft1248x1_to_stream8_1.0/xgui/ft1248x1_to_stream8_v1_0.tcl
+++ /dev/null
@@ -1,10 +0,0 @@
-# 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"
-
-
-}
-
-
diff --git a/socket/vivado_lib/uart_to_AXI_master_1.0/bd/bd.tcl b/socket/vivado_lib/uart_to_AXI_master_1.0/bd/bd.tcl
deleted file mode 100644
index 4804aeb..0000000
--- a/socket/vivado_lib/uart_to_AXI_master_1.0/bd/bd.tcl
+++ /dev/null
@@ -1,86 +0,0 @@
-
-proc init { cellpath otherInfo } {                                                                   
-                                                                                                             
-	set cell_handle [get_bd_cells $cellpath]                                                                 
-	set all_busif [get_bd_intf_pins $cellpath/*]		                                                     
-	set axi_standard_param_list [list ID_WIDTH AWUSER_WIDTH ARUSER_WIDTH WUSER_WIDTH RUSER_WIDTH BUSER_WIDTH]
-	set full_sbusif_list [list  ]
-			                                                                                                 
-	foreach busif $all_busif {                                                                               
-		if { [string equal -nocase [get_property MODE $busif] "slave"] == 1 } {                            
-			set busif_param_list [list]                                                                      
-			set busif_name [get_property NAME $busif]					                                     
-			if { [lsearch -exact -nocase $full_sbusif_list $busif_name ] == -1 } {					         
-			    continue                                                                                     
-			}                                                                                                
-			foreach tparam $axi_standard_param_list {                                                        
-				lappend busif_param_list "C_${busif_name}_${tparam}"                                       
-			}                                                                                                
-			bd::mark_propagate_only $cell_handle $busif_param_list			                                 
-		}		                                                                                             
-	}                                                                                                        
-}
-
-
-proc pre_propagate {cellpath otherInfo } {                                                           
-                                                                                                             
-	set cell_handle [get_bd_cells $cellpath]                                                                 
-	set all_busif [get_bd_intf_pins $cellpath/*]		                                                     
-	set axi_standard_param_list [list ID_WIDTH AWUSER_WIDTH ARUSER_WIDTH WUSER_WIDTH RUSER_WIDTH BUSER_WIDTH]
-	                                                                                                         
-	foreach busif $all_busif {	                                                                             
-		if { [string equal -nocase [get_property CONFIG.PROTOCOL $busif] "AXI4"] != 1 } {                  
-			continue                                                                                         
-		}                                                                                                    
-		if { [string equal -nocase [get_property MODE $busif] "master"] != 1 } {                           
-			continue                                                                                         
-		}			                                                                                         
-		                                                                                                     
-		set busif_name [get_property NAME $busif]			                                                 
-		foreach tparam $axi_standard_param_list {		                                                     
-			set busif_param_name "C_${busif_name}_${tparam}"			                                     
-			                                                                                                 
-			set val_on_cell_intf_pin [get_property CONFIG.${tparam} $busif]                                  
-			set val_on_cell [get_property CONFIG.${busif_param_name} $cell_handle]                           
-			                                                                                                 
-			if { [string equal -nocase $val_on_cell_intf_pin $val_on_cell] != 1 } {                          
-				if { $val_on_cell != "" } {                                                                  
-					set_property CONFIG.${tparam} $val_on_cell $busif                                        
-				}                                                                                            
-			}			                                                                                     
-		}		                                                                                             
-	}                                                                                                        
-}
-
-
-proc propagate {cellpath otherInfo } {                                                               
-                                                                                                             
-	set cell_handle [get_bd_cells $cellpath]                                                                 
-	set all_busif [get_bd_intf_pins $cellpath/*]		                                                     
-	set axi_standard_param_list [list ID_WIDTH AWUSER_WIDTH ARUSER_WIDTH WUSER_WIDTH RUSER_WIDTH BUSER_WIDTH]
-	                                                                                                         
-	foreach busif $all_busif {                                                                               
-		if { [string equal -nocase [get_property CONFIG.PROTOCOL $busif] "AXI4"] != 1 } {                  
-			continue                                                                                         
-		}                                                                                                    
-		if { [string equal -nocase [get_property MODE $busif] "slave"] != 1 } {                            
-			continue                                                                                         
-		}			                                                                                         
-	                                                                                                         
-		set busif_name [get_property NAME $busif]		                                                     
-		foreach tparam $axi_standard_param_list {			                                                 
-			set busif_param_name "C_${busif_name}_${tparam}"			                                     
-                                                                                                             
-			set val_on_cell_intf_pin [get_property CONFIG.${tparam} $busif]                                  
-			set val_on_cell [get_property CONFIG.${busif_param_name} $cell_handle]                           
-			                                                                                                 
-			if { [string equal -nocase $val_on_cell_intf_pin $val_on_cell] != 1 } {                          
-				#override property of bd_interface_net to bd_cell -- only for slaves.  May check for supported values..
-				if { $val_on_cell_intf_pin != "" } {                                                         
-					set_property CONFIG.${busif_param_name} $val_on_cell_intf_pin $cell_handle               
-				}                                                                                            
-			}                                                                                                
-		}		                                                                                             
-	}                                                                                                        
-}
-
diff --git a/socket/vivado_lib/ADPcontrol_1.0/bd/bd.tcl b/socket/vivado_packages/ADPcontrol_1.0/bd/bd.tcl
similarity index 100%
rename from socket/vivado_lib/ADPcontrol_1.0/bd/bd.tcl
rename to socket/vivado_packages/ADPcontrol_1.0/bd/bd.tcl
diff --git a/socket/vivado_lib/ADPcontrol_1.0/component.xml b/socket/vivado_packages/ADPcontrol_1.0/component.xml
similarity index 100%
rename from socket/vivado_lib/ADPcontrol_1.0/component.xml
rename to socket/vivado_packages/ADPcontrol_1.0/component.xml
diff --git a/socket/vivado_lib/ADPcontrol_1.0/hdl/ADPcontrol_v1_0.v b/socket/vivado_packages/ADPcontrol_1.0/hdl/ADPcontrol_v1_0.v
similarity index 100%
rename from socket/vivado_lib/ADPcontrol_1.0/hdl/ADPcontrol_v1_0.v
rename to socket/vivado_packages/ADPcontrol_1.0/hdl/ADPcontrol_v1_0.v
diff --git a/socket/vivado_lib/ADPcontrol_1.0/hdl/ADPcontrol_v1_0_com_rx.v b/socket/vivado_packages/ADPcontrol_1.0/hdl/ADPcontrol_v1_0_com_rx.v
similarity index 100%
rename from socket/vivado_lib/ADPcontrol_1.0/hdl/ADPcontrol_v1_0_com_rx.v
rename to socket/vivado_packages/ADPcontrol_1.0/hdl/ADPcontrol_v1_0_com_rx.v
diff --git a/socket/vivado_lib/ADPcontrol_1.0/hdl/ADPcontrol_v1_0_com_tx.v b/socket/vivado_packages/ADPcontrol_1.0/hdl/ADPcontrol_v1_0_com_tx.v
similarity index 100%
rename from socket/vivado_lib/ADPcontrol_1.0/hdl/ADPcontrol_v1_0_com_tx.v
rename to socket/vivado_packages/ADPcontrol_1.0/hdl/ADPcontrol_v1_0_com_tx.v
diff --git a/socket/vivado_lib/ADPcontrol_1.0/hdl/ADPcontrol_v1_0_stdio_rx.v b/socket/vivado_packages/ADPcontrol_1.0/hdl/ADPcontrol_v1_0_stdio_rx.v
similarity index 100%
rename from socket/vivado_lib/ADPcontrol_1.0/hdl/ADPcontrol_v1_0_stdio_rx.v
rename to socket/vivado_packages/ADPcontrol_1.0/hdl/ADPcontrol_v1_0_stdio_rx.v
diff --git a/socket/vivado_lib/ADPcontrol_1.0/hdl/ADPcontrol_v1_0_stdio_tx.v b/socket/vivado_packages/ADPcontrol_1.0/hdl/ADPcontrol_v1_0_stdio_tx.v
similarity index 100%
rename from socket/vivado_lib/ADPcontrol_1.0/hdl/ADPcontrol_v1_0_stdio_tx.v
rename to socket/vivado_packages/ADPcontrol_1.0/hdl/ADPcontrol_v1_0_stdio_tx.v
diff --git a/socket/vivado_lib/ADPcontrol_1.0/soclabs.org_user_ADPcontrol_1.0.zip b/socket/vivado_packages/ADPcontrol_1.0/soclabs.org_user_ADPcontrol_1.0.zip
similarity index 100%
rename from socket/vivado_lib/ADPcontrol_1.0/soclabs.org_user_ADPcontrol_1.0.zip
rename to socket/vivado_packages/ADPcontrol_1.0/soclabs.org_user_ADPcontrol_1.0.zip
diff --git a/socket/vivado_lib/ADPcontrol_1.0/src/ADPcontrol_v1_0.v b/socket/vivado_packages/ADPcontrol_1.0/src/ADPcontrol_v1_0.v
similarity index 100%
rename from socket/vivado_lib/ADPcontrol_1.0/src/ADPcontrol_v1_0.v
rename to socket/vivado_packages/ADPcontrol_1.0/src/ADPcontrol_v1_0.v
diff --git a/socket/vivado_lib/ADPcontrol_1.0/src/ADPmanager.v b/socket/vivado_packages/ADPcontrol_1.0/src/ADPmanager.v
similarity index 100%
rename from socket/vivado_lib/ADPcontrol_1.0/src/ADPmanager.v
rename to socket/vivado_packages/ADPcontrol_1.0/src/ADPmanager.v
diff --git a/socket/vivado_lib/ADPcontrol_1.0/xgui/ADPcontrol_v1_0.tcl b/socket/vivado_packages/ADPcontrol_1.0/xgui/ADPcontrol_v1_0.tcl
similarity index 100%
rename from socket/vivado_lib/ADPcontrol_1.0/xgui/ADPcontrol_v1_0.tcl
rename to socket/vivado_packages/ADPcontrol_1.0/xgui/ADPcontrol_v1_0.tcl
diff --git a/socket/vivado_lib/axi_stream_io_1.0/bd/bd.tcl b/socket/vivado_packages/axi_stream_io_1.0/bd/bd.tcl
similarity index 100%
rename from socket/vivado_lib/axi_stream_io_1.0/bd/bd.tcl
rename to socket/vivado_packages/axi_stream_io_1.0/bd/bd.tcl
diff --git a/socket/vivado_lib/axi_stream_io_1.0/component.xml b/socket/vivado_packages/axi_stream_io_1.0/component.xml
similarity index 100%
rename from socket/vivado_lib/axi_stream_io_1.0/component.xml
rename to socket/vivado_packages/axi_stream_io_1.0/component.xml
diff --git a/socket/vivado_lib/axi_stream_io_1.0/drivers/axi_stream_io_v1_0/data/axi_stream_io.mdd b/socket/vivado_packages/axi_stream_io_1.0/drivers/axi_stream_io_v1_0/data/axi_stream_io.mdd
similarity index 100%
rename from socket/vivado_lib/axi_stream_io_1.0/drivers/axi_stream_io_v1_0/data/axi_stream_io.mdd
rename to socket/vivado_packages/axi_stream_io_1.0/drivers/axi_stream_io_v1_0/data/axi_stream_io.mdd
diff --git a/socket/vivado_lib/axi_stream_io_1.0/drivers/axi_stream_io_v1_0/data/axi_stream_io.tcl b/socket/vivado_packages/axi_stream_io_1.0/drivers/axi_stream_io_v1_0/data/axi_stream_io.tcl
similarity index 100%
rename from socket/vivado_lib/axi_stream_io_1.0/drivers/axi_stream_io_v1_0/data/axi_stream_io.tcl
rename to socket/vivado_packages/axi_stream_io_1.0/drivers/axi_stream_io_v1_0/data/axi_stream_io.tcl
diff --git a/socket/vivado_lib/axi_stream_io_1.0/drivers/axi_stream_io_v1_0/src/Makefile b/socket/vivado_packages/axi_stream_io_1.0/drivers/axi_stream_io_v1_0/src/Makefile
similarity index 100%
rename from socket/vivado_lib/axi_stream_io_1.0/drivers/axi_stream_io_v1_0/src/Makefile
rename to socket/vivado_packages/axi_stream_io_1.0/drivers/axi_stream_io_v1_0/src/Makefile
diff --git a/socket/vivado_lib/axi_stream_io_1.0/drivers/axi_stream_io_v1_0/src/axi_stream_io.c b/socket/vivado_packages/axi_stream_io_1.0/drivers/axi_stream_io_v1_0/src/axi_stream_io.c
similarity index 100%
rename from socket/vivado_lib/axi_stream_io_1.0/drivers/axi_stream_io_v1_0/src/axi_stream_io.c
rename to socket/vivado_packages/axi_stream_io_1.0/drivers/axi_stream_io_v1_0/src/axi_stream_io.c
diff --git a/socket/vivado_lib/axi_stream_io_1.0/drivers/axi_stream_io_v1_0/src/axi_stream_io.h b/socket/vivado_packages/axi_stream_io_1.0/drivers/axi_stream_io_v1_0/src/axi_stream_io.h
similarity index 100%
rename from socket/vivado_lib/axi_stream_io_1.0/drivers/axi_stream_io_v1_0/src/axi_stream_io.h
rename to socket/vivado_packages/axi_stream_io_1.0/drivers/axi_stream_io_v1_0/src/axi_stream_io.h
diff --git a/socket/vivado_lib/axi_stream_io_1.0/drivers/axi_stream_io_v1_0/src/axi_stream_io_selftest.c b/socket/vivado_packages/axi_stream_io_1.0/drivers/axi_stream_io_v1_0/src/axi_stream_io_selftest.c
similarity index 100%
rename from socket/vivado_lib/axi_stream_io_1.0/drivers/axi_stream_io_v1_0/src/axi_stream_io_selftest.c
rename to socket/vivado_packages/axi_stream_io_1.0/drivers/axi_stream_io_v1_0/src/axi_stream_io_selftest.c
diff --git a/socket/vivado_lib/axi_stream_io_1.0/soclabs.org_user_axi_stream_io_1.0.zip b/socket/vivado_packages/axi_stream_io_1.0/soclabs.org_user_axi_stream_io_1.0.zip
similarity index 100%
rename from socket/vivado_lib/axi_stream_io_1.0/soclabs.org_user_axi_stream_io_1.0.zip
rename to socket/vivado_packages/axi_stream_io_1.0/soclabs.org_user_axi_stream_io_1.0.zip
diff --git a/socket/vivado_lib/axi_stream_io_1.0/src/axi_stream_io_v1_0_axi_s.v b/socket/vivado_packages/axi_stream_io_1.0/src/axi_stream_io_v1_0_axi_s.v
similarity index 100%
rename from socket/vivado_lib/axi_stream_io_1.0/src/axi_stream_io_v1_0_axi_s.v
rename to socket/vivado_packages/axi_stream_io_1.0/src/axi_stream_io_v1_0_axi_s.v
diff --git a/socket/vivado_lib/axi_stream_io_1.0/xgui/axi_stream_io_v1_0.tcl b/socket/vivado_packages/axi_stream_io_1.0/xgui/axi_stream_io_v1_0.tcl
similarity index 100%
rename from socket/vivado_lib/axi_stream_io_1.0/xgui/axi_stream_io_v1_0.tcl
rename to socket/vivado_packages/axi_stream_io_1.0/xgui/axi_stream_io_v1_0.tcl
diff --git a/socket/vivado_lib/ft1248x1_to_axi_streamio_1.0/bd/bd.tcl b/socket/vivado_packages/ft1248x1_to_axi_streamio_1.0/bd/bd.tcl
similarity index 100%
rename from socket/vivado_lib/ft1248x1_to_axi_streamio_1.0/bd/bd.tcl
rename to socket/vivado_packages/ft1248x1_to_axi_streamio_1.0/bd/bd.tcl
diff --git a/socket/vivado_lib/ft1248x1_to_axi_streamio_1.0/component.xml b/socket/vivado_packages/ft1248x1_to_axi_streamio_1.0/component.xml
similarity index 100%
rename from socket/vivado_lib/ft1248x1_to_axi_streamio_1.0/component.xml
rename to socket/vivado_packages/ft1248x1_to_axi_streamio_1.0/component.xml
diff --git a/socket/vivado_lib/ft1248x1_to_axi_streamio_1.0/ft1248x1_to_axi_streamio_0_2.xcix b/socket/vivado_packages/ft1248x1_to_axi_streamio_1.0/ft1248x1_to_axi_streamio_0_2.xcix
similarity index 100%
rename from socket/vivado_lib/ft1248x1_to_axi_streamio_1.0/ft1248x1_to_axi_streamio_0_2.xcix
rename to socket/vivado_packages/ft1248x1_to_axi_streamio_1.0/ft1248x1_to_axi_streamio_0_2.xcix
diff --git a/socket/vivado_lib/ft1248x1_to_axi_streamio_1.0/hdl/SYNCHRONIZER_EDGES.v b/socket/vivado_packages/ft1248x1_to_axi_streamio_1.0/hdl/SYNCHRONIZER_EDGES.v
similarity index 100%
rename from socket/vivado_lib/ft1248x1_to_axi_streamio_1.0/hdl/SYNCHRONIZER_EDGES.v
rename to socket/vivado_packages/ft1248x1_to_axi_streamio_1.0/hdl/SYNCHRONIZER_EDGES.v
diff --git a/socket/vivado_lib/ft1248x1_to_axi_streamio_1.0/hdl/ft1248x1_to_axi_streamio_v1_0.v b/socket/vivado_packages/ft1248x1_to_axi_streamio_1.0/hdl/ft1248x1_to_axi_streamio_v1_0.v
similarity index 100%
rename from socket/vivado_lib/ft1248x1_to_axi_streamio_1.0/hdl/ft1248x1_to_axi_streamio_v1_0.v
rename to socket/vivado_packages/ft1248x1_to_axi_streamio_1.0/hdl/ft1248x1_to_axi_streamio_v1_0.v
diff --git a/socket/vivado_lib/ft1248x1_to_axi_streamio_1.0/hdl/ft1248x1_to_axi_streamio_v1_0_rxd8.v b/socket/vivado_packages/ft1248x1_to_axi_streamio_1.0/hdl/ft1248x1_to_axi_streamio_v1_0_rxd8.v
similarity index 100%
rename from socket/vivado_lib/ft1248x1_to_axi_streamio_1.0/hdl/ft1248x1_to_axi_streamio_v1_0_rxd8.v
rename to socket/vivado_packages/ft1248x1_to_axi_streamio_1.0/hdl/ft1248x1_to_axi_streamio_v1_0_rxd8.v
diff --git a/socket/vivado_lib/ft1248x1_to_axi_streamio_1.0/hdl/ft1248x1_to_axi_streamio_v1_0_txd8.v b/socket/vivado_packages/ft1248x1_to_axi_streamio_1.0/hdl/ft1248x1_to_axi_streamio_v1_0_txd8.v
similarity index 100%
rename from socket/vivado_lib/ft1248x1_to_axi_streamio_1.0/hdl/ft1248x1_to_axi_streamio_v1_0_txd8.v
rename to socket/vivado_packages/ft1248x1_to_axi_streamio_1.0/hdl/ft1248x1_to_axi_streamio_v1_0_txd8.v
diff --git a/socket/vivado_lib/ft1248x1_to_axi_streamio_1.0/soclabs.org_user_ft1248x1_to_axi_streamio_1.0.zip b/socket/vivado_packages/ft1248x1_to_axi_streamio_1.0/soclabs.org_user_ft1248x1_to_axi_streamio_1.0.zip
similarity index 100%
rename from socket/vivado_lib/ft1248x1_to_axi_streamio_1.0/soclabs.org_user_ft1248x1_to_axi_streamio_1.0.zip
rename to socket/vivado_packages/ft1248x1_to_axi_streamio_1.0/soclabs.org_user_ft1248x1_to_axi_streamio_1.0.zip
diff --git a/socket/vivado_lib/ft1248x1_to_axi_streamio_1.0/xgui/ft1248x1_to_axi_streamio_v1_0.tcl b/socket/vivado_packages/ft1248x1_to_axi_streamio_1.0/xgui/ft1248x1_to_axi_streamio_v1_0.tcl
similarity index 100%
rename from socket/vivado_lib/ft1248x1_to_axi_streamio_1.0/xgui/ft1248x1_to_axi_streamio_v1_0.tcl
rename to socket/vivado_packages/ft1248x1_to_axi_streamio_1.0/xgui/ft1248x1_to_axi_streamio_v1_0.tcl
diff --git a/socket/vivado_lib/ft1248x1_to_stream8_1.0/bd/bd.tcl b/socket/vivado_packages/uart_to_AXI_master_1.0/bd/bd.tcl
similarity index 100%
rename from socket/vivado_lib/ft1248x1_to_stream8_1.0/bd/bd.tcl
rename to socket/vivado_packages/uart_to_AXI_master_1.0/bd/bd.tcl
diff --git a/socket/vivado_lib/uart_to_AXI_master_1.0/component.xml b/socket/vivado_packages/uart_to_AXI_master_1.0/component.xml
similarity index 100%
rename from socket/vivado_lib/uart_to_AXI_master_1.0/component.xml
rename to socket/vivado_packages/uart_to_AXI_master_1.0/component.xml
diff --git a/socket/vivado_lib/uart_to_AXI_master_1.0/hdl/uart_to_AXI_master_v1_0.v b/socket/vivado_packages/uart_to_AXI_master_1.0/hdl/uart_to_AXI_master_v1_0.v
similarity index 100%
rename from socket/vivado_lib/uart_to_AXI_master_1.0/hdl/uart_to_AXI_master_v1_0.v
rename to socket/vivado_packages/uart_to_AXI_master_1.0/hdl/uart_to_AXI_master_v1_0.v
diff --git a/socket/vivado_lib/uart_to_AXI_master_1.0/hdl/uart_to_AXI_master_v1_0_M00_AXI.v b/socket/vivado_packages/uart_to_AXI_master_1.0/hdl/uart_to_AXI_master_v1_0_M00_AXI.v
similarity index 100%
rename from socket/vivado_lib/uart_to_AXI_master_1.0/hdl/uart_to_AXI_master_v1_0_M00_AXI.v
rename to socket/vivado_packages/uart_to_AXI_master_1.0/hdl/uart_to_AXI_master_v1_0_M00_AXI.v
diff --git a/socket/vivado_lib/uart_to_AXI_master_1.0/src/dbg_bridge.v b/socket/vivado_packages/uart_to_AXI_master_1.0/src/dbg_bridge.v
similarity index 100%
rename from socket/vivado_lib/uart_to_AXI_master_1.0/src/dbg_bridge.v
rename to socket/vivado_packages/uart_to_AXI_master_1.0/src/dbg_bridge.v
diff --git a/socket/vivado_lib/uart_to_AXI_master_1.0/src/dbg_bridge_fifo.v b/socket/vivado_packages/uart_to_AXI_master_1.0/src/dbg_bridge_fifo.v
similarity index 100%
rename from socket/vivado_lib/uart_to_AXI_master_1.0/src/dbg_bridge_fifo.v
rename to socket/vivado_packages/uart_to_AXI_master_1.0/src/dbg_bridge_fifo.v
diff --git a/socket/vivado_lib/uart_to_AXI_master_1.0/src/dbg_bridge_uart.v b/socket/vivado_packages/uart_to_AXI_master_1.0/src/dbg_bridge_uart.v
similarity index 100%
rename from socket/vivado_lib/uart_to_AXI_master_1.0/src/dbg_bridge_uart.v
rename to socket/vivado_packages/uart_to_AXI_master_1.0/src/dbg_bridge_uart.v
diff --git a/socket/vivado_lib/uart_to_AXI_master_1.0/xgui/uart_to_AXI_master_v1_0.tcl b/socket/vivado_packages/uart_to_AXI_master_1.0/xgui/uart_to_AXI_master_v1_0.tcl
similarity index 100%
rename from socket/vivado_lib/uart_to_AXI_master_1.0/xgui/uart_to_AXI_master_v1_0.tcl
rename to socket/vivado_packages/uart_to_AXI_master_1.0/xgui/uart_to_AXI_master_v1_0.tcl
-- 
GitLab