diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 8051159d9a5f00157c952e5020603bb341968a78..afbaa2f2f982bed4dd400e64e29ebd4e5ca92ca3 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -49,8 +49,8 @@ simulate-nanosoc:
 build-job-Z2:       # This job runs in the build stage, which runs first.
   stage: build
   script:
-    # move to fpga_imp directory and run the fpga build script for pynq z2
-    - cd .nanosoc_tech/fpga_imp/
+    # move to fpga directory and run the fpga build script for pynq z2
+    - cd .nanosoc_tech/fpga/
     - source ../set_env.sh
     - if source ./build_fpga_pynq_z2.scr; then echo "Vivado Finished"; fi
     - FILE=./pynq_export/pz2/pynq/overlays/soclabs/design_1.bit 
@@ -63,16 +63,16 @@ build-job-Z2:       # This job runs in the build stage, which runs first.
   artifacts:
     paths:
       # Keep the generated bit and hwh file from fpga build script
-      - ./nanosoc_tech/fpga_imp/pynq_export/pz2/pynq/overlays/soclabs/design_1.bit
-      - ./nanosoc_tech/fpga_imp/pynq_export/pz2/pynq/overlays/soclabs/design_1.hwh
+      - ./nanosoc_tech/fpga/pynq_export/pz2/pynq/overlays/soclabs/design_1.bit
+      - ./nanosoc_tech/fpga/pynq_export/pz2/pynq/overlays/soclabs/design_1.hwh
   tags:
     - Vivado2021.1
 
 build-job-ZCU104:       # This job runs in the build stage, which runs first.
   stage: build
   script:
-   # move to fpga_imp directory and run the fpga build script for pynq z2 
-    - cd ./nanosoc_tech/fpga_imp/
+   # move to fpga directory and run the fpga build script for pynq z2 
+    - cd ./nanosoc_tech/fpga/
     - source ../../set_env.sh
     - if source ./build_fpga_pynq_zcu104.scr; then echo "Vivado Finished"; fi
     - FILE=./pynq_export/pz104/pynq/overlays/soclabs/design_1.bit 
@@ -85,8 +85,8 @@ build-job-ZCU104:       # This job runs in the build stage, which runs first.
   artifacts:
     paths:
     # Keep the generated bit and hwh file from fpga build script
-      - ./nanosoc_tech/fpga_imp/pynq_export/pz104/pynq/overlays/soclabs/design_1.bit
-      - ./nanosoc_tech/fpga_imp/pynq_export/pz104/pynq/overlays/soclabs/design_1.hwh
+      - ./nanosoc_tech/fpga/pynq_export/pz104/pynq/overlays/soclabs/design_1.bit
+      - ./nanosoc_tech/fpga/pynq_export/pz104/pynq/overlays/soclabs/design_1.hwh
   tags:
     - Vivado2021.1
 
@@ -97,7 +97,7 @@ build-job-ZCU104:       # This job runs in the build stage, which runs first.
 #    - echo "Deploying application to Z2"
 #    # use smbclient to transfer accross the bit, hwh and python script files to the z2 xilinx board
 #    # could probably set this up as scp with RSA keys in future
-#    - smbclient //192.168.2.99/xilinx -m SMB3 -U xilinx%xilinx -c 'cd ./pynq/overlays/soclabs/ ; put ./nanosoc/fpga_imp/pynq_export/pz2/pynq/overlays/#soclabs/design_1.bit ./design_1.bit' -E 2>errorlog
+#    - smbclient //192.168.2.99/xilinx -m SMB3 -U xilinx%xilinx -c 'cd ./pynq/overlays/soclabs/ ; put ./nanosoc/fpga/pynq_export/pz2/pynq/overlays/#soclabs/design_1.bit ./design_1.bit' -E 2>errorlog
 #    - if (grep -r "Connection to 192.168.2.99 failed" ./errorlog)
 #    - then
 #    -   echo "Connection to Z2 Board Failed"
@@ -106,7 +106,7 @@ build-job-ZCU104:       # This job runs in the build stage, which runs first.
 #    -   echo "Connection to Z2 Board successful"
 #    - fi
 #    - rm errorlog
-#    - smbclient //192.168.2.99/xilinx -m SMB3 -U xilinx%xilinx -c 'cd ./pynq/overlays/soclabs/ ; put ./nanosoc/fpga_imp/pynq_export/pz2/pynq/overlays/#soclabs/design_1.hwh ./design_1.hwh' -E 2>errorlog
+#    - smbclient //192.168.2.99/xilinx -m SMB3 -U xilinx%xilinx -c 'cd ./pynq/overlays/soclabs/ ; put ./nanosoc/fpga/pynq_export/pz2/pynq/overlays/#soclabs/design_1.hwh ./design_1.hwh' -E 2>errorlog
 #    - if (grep -r "Connection to 192.168.2.99 failed" ./errorlog)
 #    - then
 #    -   echo "Connection to Z2 Board Failed"
@@ -115,7 +115,7 @@ build-job-ZCU104:       # This job runs in the build stage, which runs first.
 #    -   echo "Connection to Z2 Board successful"
 #    - fi
 #    - rm errorlog
-#    - cd ./nanosoc/fpga_imp/CI_verification
+#    - cd ./nanosoc/fpga/ci_tools
 #    - smbclient //192.168.2.99/xilinx -m SMB3 -U xilinx%xilinx -c 'put ./load_bitfile.py ./load_bitfile.py' -E 2>errorlog
 #    - if (grep -r "Connection to 192.168.2.99 failed" ./errorlog)
 #    - then
@@ -174,11 +174,11 @@ deploy-job-ZCU104:      # This job runs in the deploy stage.
     - screen -r zynq -X stuff "./ZCU104_connect.sh\n"
     - sleep 10
     # use scp to copy over bit files and python script
-    - screen -r zynq -X stuff "scp -i ~/.ssh/id_rsa dwn1c21@soclabs.soton.ac.uk:~/builds/wzndG1mA/0/soclabs/nanosoc_tech/nanosoc/fpga_imp/CI_verification/load_bitfile.py ./ \n"
+    - screen -r zynq -X stuff "scp -i ~/.ssh/id_rsa dwn1c21@soclabs.soton.ac.uk:~/builds/wzndG1mA/0/soclabs/nanosoc_tech/nanosoc/fpga/ci_tools/load_bitfile.py ./ \n"
     - sleep 2
-    - screen -r zynq -X stuff "scp -i ~/.ssh/id_rsa dwn1c21@soclabs.soton.ac.uk:~/builds/wzndG1mA/0/soclabs/nanosoc_tech/nanosoc/fpga_imp/pynq_export/pz104/pynq/overlays/soclabs/design_1.bit ./pynq/overlays/soclabs/design_1.bit \n"
+    - screen -r zynq -X stuff "scp -i ~/.ssh/id_rsa dwn1c21@soclabs.soton.ac.uk:~/builds/wzndG1mA/0/soclabs/nanosoc_tech/nanosoc/fpga/pynq_export/pz104/pynq/overlays/soclabs/design_1.bit ./pynq/overlays/soclabs/design_1.bit \n"
     - sleep 2
-    - screen -r zynq -X stuff "scp -i ~/.ssh/id_rsa dwn1c21@soclabs.soton.ac.uk:~/builds/wzndG1mA/0/soclabs/nanosoc_tech/nanosoc/fpga_imp/pynq_export/pz104/pynq/overlays/soclabs/design_1.hwh ./pynq/overlays/soclabs/design_1.hwh \n"
+    - screen -r zynq -X stuff "scp -i ~/.ssh/id_rsa dwn1c21@soclabs.soton.ac.uk:~/builds/wzndG1mA/0/soclabs/nanosoc_tech/nanosoc/fpga/pynq_export/pz104/pynq/overlays/soclabs/design_1.hwh ./pynq/overlays/soclabs/design_1.hwh \n"
     - sleep 2
     # Need root access to load the overlay onto the FPGA
     - screen -r zynq -X stuff "sudo su\n"
@@ -196,7 +196,7 @@ deploy-job-ZCU104:      # This job runs in the deploy stage.
     - screen -r zynq -X stuff "deactivate \n"
     - screen -r zynq -X stuff "exit \n"
     # test the screenlog for "Overlay Loaded"
-    - cp ./nanosoc/fpga_imp/CI_verification/test_bitfile_ZCU104.sh ./
+    - cp ./nanosoc/fpga/ci_tools/test_bitfile_ZCU104.sh ./
     - chmod +x test_bitfile_ZCU104.sh
     - ./test_bitfile_ZCU104.sh
 
diff --git a/fpga_imp/build_fpga.tcl b/fpga/build_fpga.tcl
similarity index 100%
rename from fpga_imp/build_fpga.tcl
rename to fpga/build_fpga.tcl
diff --git a/fpga_imp/build_nanosoc.tcl b/fpga/build_nanosoc.tcl
similarity index 100%
rename from fpga_imp/build_nanosoc.tcl
rename to fpga/build_nanosoc.tcl
diff --git a/fpga_imp/CI_verification/.gitkeep b/fpga/ci_tools/.gitkeep
similarity index 100%
rename from fpga_imp/CI_verification/.gitkeep
rename to fpga/ci_tools/.gitkeep
diff --git a/fpga_imp/CI_verification/load_bitfile.py b/fpga/ci_tools/load_bitfile.py
similarity index 100%
rename from fpga_imp/CI_verification/load_bitfile.py
rename to fpga/ci_tools/load_bitfile.py
diff --git a/fpga_imp/CI_verification/load_file_output b/fpga/ci_tools/load_file_output
similarity index 100%
rename from fpga_imp/CI_verification/load_file_output
rename to fpga/ci_tools/load_file_output
diff --git a/fpga_imp/CI_verification/run_ADP_verification.py b/fpga/ci_tools/run_ADP_verification.py
similarity index 100%
rename from fpga_imp/CI_verification/run_ADP_verification.py
rename to fpga/ci_tools/run_ADP_verification.py
diff --git a/fpga_imp/CI_verification/run_AES_verification.py b/fpga/ci_tools/run_AES_verification.py
similarity index 100%
rename from fpga_imp/CI_verification/run_AES_verification.py
rename to fpga/ci_tools/run_AES_verification.py
diff --git a/fpga_imp/CI_verification/test_bitfile_ZCU104.sh b/fpga/ci_tools/test_bitfile_ZCU104.sh
similarity index 100%
rename from fpga_imp/CI_verification/test_bitfile_ZCU104.sh
rename to fpga/ci_tools/test_bitfile_ZCU104.sh
diff --git a/fpga_imp/makefile b/fpga/makefile
similarity index 91%
rename from fpga_imp/makefile
rename to fpga/makefile
index 3afcaac1f36671376e07133fc4515ce0adb8050b..9c2fa1ba5c8694df00c94c08acc6dedc61518953 100644
--- a/fpga_imp/makefile
+++ b/fpga/makefile
@@ -56,7 +56,7 @@ VIVIADO_VERSION ?= 2021_1
 TEMP_RTL_NANOSOC_DIR := $(IMP_DIR)/nanosoc_lib
 RTL_SOCKET_DIR  := $(SOCLABS_NANOSOC_TECH_DIR)/socket/xilinx_lib
 
-NANOSOC_FPGA_FLOW_DIR := $(SOCLABS_NANOSOC_TECH_DIR)/fpga_imp
+NANOSOC_FPGA_FLOW_DIR := $(SOCLABS_NANOSOC_TECH_DIR)/fpga
 
 RUN_DIR := $(IMP_DIR)/run
 PROJECT_DIR := $(IMP_DIR)/targets/$(BOARD_NAME)
@@ -68,7 +68,8 @@ TARGET_TCL_DIR ?= $(NANOSOC_FPGA_FLOW_DIR)/targets/$(BOARD_NAME)/vivado_script/$
 ifeq ($(PLATFORM), bare)
 	OUTPUT_DIR ?=  $(FPGA_IMP_DIR)/output/$(BOARD_NAME)
 else ifeq ($(PLATFORM), pynq)
-	OUTPUT_DIR ?=  $(FPGA_IMP_DIR)/output/$(BOARD_NAME)/pynq/overlays/soclabs
+	OUTPUT_DIR ?=  $(FPGA_IMP_DIR)/output/$(BOARD_NAME)/overlays
+# OUTPUT_DIR ?=  $(FPGA_IMP_DIR)/output/$(BOARD_NAME)/pynq/overlays/soclabs
 endif
 
 # FPGA_Flow
@@ -94,14 +95,18 @@ tcl_flist:
 	@(cd $(TCL_FLIST_DIR); \
 	$(SOCLABS_SOCTOOLS_FLOW_DIR)/bin/filelist_compile.py -t -f $(DESIGN_VC) -o $(TCL_OUTPUT_FILELIST) -r $(TEMP_RTL_NANOSOC_DIR);)
 
-build_fpga: tcl_flist clean_run 
+build_fpga: tcl_flist clean_fpga 
 	@echo Starting Vivado Run
 	@mkdir -p $(RUN_DIR)
 	@cd $(RUN_DIR); vivado -mode batch -source $(NANOSOC_FPGA_FLOW_DIR)/build_fpga.tcl
 	@echo Vivado Build Complete
 
-clean_run:
+clean_fpga:
 	@echo Cleaning Previous Runs of $(BOARD_NAME)
 	@rm -rf $(PROJECT_DIR)
 	@rm -rf $(TEMP_RTL_NANOSOC_DIR)
-	@rm -rf $(RUN_DIR)
\ No newline at end of file
+	@rm -rf $(RUN_DIR)
+	
+clean_fpga_all:
+	@echo Cleaning FPGA Implementation Directory
+	@rm -rf $(IMP_DIR)
\ No newline at end of file
diff --git a/fpga_imp/targets/arm_mps3/fpga_pinmap.xdc b/fpga/targets/arm_mps3/fpga_pinmap.xdc
similarity index 100%
rename from fpga_imp/targets/arm_mps3/fpga_pinmap.xdc
rename to fpga/targets/arm_mps3/fpga_pinmap.xdc
diff --git a/fpga_imp/targets/arm_mps3/fpga_timing.xdc b/fpga/targets/arm_mps3/fpga_timing.xdc
similarity index 100%
rename from fpga_imp/targets/arm_mps3/fpga_timing.xdc
rename to fpga/targets/arm_mps3/fpga_timing.xdc
diff --git a/fpga_imp/targets/arm_mps3/nanosoc_design_wrapper.v b/fpga/targets/arm_mps3/nanosoc_design_wrapper.v
similarity index 100%
rename from fpga_imp/targets/arm_mps3/nanosoc_design_wrapper.v
rename to fpga/targets/arm_mps3/nanosoc_design_wrapper.v
diff --git a/fpga_imp/targets/arm_mps3/vivado_script/2021_1/nanosoc_design.tcl b/fpga/targets/arm_mps3/vivado_script/2021_1/nanosoc_design.tcl
similarity index 100%
rename from fpga_imp/targets/arm_mps3/vivado_script/2021_1/nanosoc_design.tcl
rename to fpga/targets/arm_mps3/vivado_script/2021_1/nanosoc_design.tcl
diff --git a/fpga_imp/targets/pynq_z2/fpga_pinmap.xdc b/fpga/targets/pynq_z2/fpga_pinmap.xdc
similarity index 100%
rename from fpga_imp/targets/pynq_z2/fpga_pinmap.xdc
rename to fpga/targets/pynq_z2/fpga_pinmap.xdc
diff --git a/fpga_imp/targets/pynq_z2/fpga_timing.xdc b/fpga/targets/pynq_z2/fpga_timing.xdc
similarity index 100%
rename from fpga_imp/targets/pynq_z2/fpga_timing.xdc
rename to fpga/targets/pynq_z2/fpga_timing.xdc
diff --git a/fpga_imp/targets/pynq_z2/nanosoc_design_wrapper.v b/fpga/targets/pynq_z2/nanosoc_design_wrapper.v
similarity index 100%
rename from fpga_imp/targets/pynq_z2/nanosoc_design_wrapper.v
rename to fpga/targets/pynq_z2/nanosoc_design_wrapper.v
diff --git a/fpga_imp/targets/pynq_z2/vivado_script/2021_1/nanosoc_design.tcl b/fpga/targets/pynq_z2/vivado_script/2021_1/nanosoc_design.tcl
similarity index 100%
rename from fpga_imp/targets/pynq_z2/vivado_script/2021_1/nanosoc_design.tcl
rename to fpga/targets/pynq_z2/vivado_script/2021_1/nanosoc_design.tcl
diff --git a/fpga_imp/targets/pynq_zcu104/fpga_pinmap.xdc b/fpga/targets/pynq_zcu104/fpga_pinmap.xdc
similarity index 100%
rename from fpga_imp/targets/pynq_zcu104/fpga_pinmap.xdc
rename to fpga/targets/pynq_zcu104/fpga_pinmap.xdc
diff --git a/fpga_imp/targets/pynq_zcu104/fpga_timing.xdc b/fpga/targets/pynq_zcu104/fpga_timing.xdc
similarity index 100%
rename from fpga_imp/targets/pynq_zcu104/fpga_timing.xdc
rename to fpga/targets/pynq_zcu104/fpga_timing.xdc
diff --git a/fpga_imp/targets/pynq_zcu104/nanosoc_design_wrapper.v b/fpga/targets/pynq_zcu104/nanosoc_design_wrapper.v
similarity index 100%
rename from fpga_imp/targets/pynq_zcu104/nanosoc_design_wrapper.v
rename to fpga/targets/pynq_zcu104/nanosoc_design_wrapper.v
diff --git a/fpga_imp/targets/pynq_zcu104/vivado_script/2021_1/nanosoc_design.tcl b/fpga/targets/pynq_zcu104/vivado_script/2021_1/nanosoc_design.tcl
similarity index 100%
rename from fpga_imp/targets/pynq_zcu104/vivado_script/2021_1/nanosoc_design.tcl
rename to fpga/targets/pynq_zcu104/vivado_script/2021_1/nanosoc_design.tcl