From 7a98766304ae8119a0ddc1e60a179befaaff5094 Mon Sep 17 00:00:00 2001 From: Filip Leonarski Date: Wed, 7 Jun 2023 21:18:53 +0200 Subject: [PATCH] FPGA: Split receiver and FPGA design directories --- .gitlab-ci.yml | 22 +++++++------- CMakeLists.txt | 1 + fpga/CMakeLists.txt | 30 +++++++++++++++++++ {receiver => fpga}/README.md | 6 ++-- {receiver => fpga}/hdl/action_config.v | 0 {receiver => fpga}/hdl/action_wrapper.v | 0 .../hdl/check_datamover_error.v | 0 {receiver => fpga}/hdl/check_eth_busy.v | 0 {receiver => fpga}/hdl/gen_xdma_descriptor.v | 0 {receiver => fpga}/hdl/refclk300to100.v | 0 {receiver => fpga}/hdl/resetn_sync.v | 0 {receiver => fpga}/hls/CMakeLists.txt | 0 {receiver => fpga}/hls/arp.cpp | 0 .../hls/data_collection_fsm.cpp | 0 .../include => fpga/hls}/datamover_model.h | 3 +- {receiver => fpga}/hls/ethernet.cpp | 0 {receiver => fpga}/hls/hls_jfjoch.h | 2 +- {receiver => fpga}/hls/host_writer.cpp | 0 {receiver => fpga}/hls/icmp.cpp | 0 .../hls/internal_packet_generator.cpp | 0 {receiver => fpga}/hls/ip_header_checksum.h | 0 {receiver => fpga}/hls/ipv4.cpp | 0 {receiver => fpga}/hls/jf_conversion.cpp | 0 {receiver => fpga}/hls/load_calibration.cpp | 0 .../include => fpga/hls}/parallel_stream.h | 0 {receiver => fpga}/hls/sls_detector.cpp | 0 {receiver => fpga}/hls/timer.cpp | 0 {receiver => fpga}/hls/udp.cpp | 0 .../include/LICENSE.HLS_Headers | 0 {receiver => fpga}/include/ap_common.h | 0 {receiver => fpga}/include/ap_decl.h | 0 {receiver => fpga}/include/ap_fixed.h | 0 {receiver => fpga}/include/ap_fixed_base.h | 0 {receiver => fpga}/include/ap_fixed_ref.h | 0 {receiver => fpga}/include/ap_fixed_special.h | 0 {receiver => fpga}/include/ap_int.h | 0 {receiver => fpga}/include/ap_int_base.h | 0 {receiver => fpga}/include/ap_int_ref.h | 0 {receiver => fpga}/include/ap_int_special.h | 0 {receiver => fpga}/include/ap_shift_reg.h | 0 {receiver => fpga}/include/etc/ap_private.h | 0 {receiver => fpga}/include/hls_burst_maxi.h | 0 .../host => fpga/pcie_driver}/ActionConfig.h | 0 {receiver => fpga}/pcie_driver/CMakeLists.txt | 0 {receiver => fpga}/pcie_driver/Makefile | 0 {receiver => fpga}/pcie_driver/jfjoch_drv.c | 0 {receiver => fpga}/pcie_driver/jfjoch_drv.h | 0 .../pcie_driver/jfjoch_function.c | 0 {receiver => fpga}/pcie_driver/jfjoch_ioctl.c | 0 {receiver => fpga}/pcie_driver/jfjoch_ioctl.h | 2 +- .../pcie_driver/jfjoch_memory.c | 0 .../pcie_driver/jfjoch_miscdev.c | 0 .../pcie_driver/jfjoch_pcie_setup.c | 0 {receiver => fpga}/scripts/bd_pcie.tcl | 0 .../scripts/build_pcie_design.tcl | 0 {receiver => fpga}/scripts/check_hls.sh | 0 {receiver => fpga}/scripts/hbm_u55c.tcl | 0 {receiver => fpga}/scripts/jfjoch.tcl | 0 {receiver => fpga}/scripts/mac_100g_pcie.tcl | 0 {receiver => fpga}/scripts/network_stack.tcl | 0 {receiver => fpga}/scripts/pcie_dma.tcl | 0 {receiver => fpga}/scripts/setup_action.sh | 0 {receiver => fpga}/scripts/snap_env.sh | 0 {receiver => fpga}/scripts/synth_and_impl.tcl | 0 .../scripts/synth_hls_function.tcl | 0 {receiver => fpga}/xdc/pcie_timing.xdc | 0 {receiver => fpga}/xdc/pcie_u55c.xdc | 0 receiver/CMakeLists.txt | 30 ------------------- receiver/host/CMakeLists.txt | 2 +- receiver/host/FPGAAcquisitionDevice.h | 2 +- receiver/host/HLSSimulatedDevice.cpp | 3 +- receiver/host/HLSSimulatedDevice.h | 5 ++-- tests/ActionConfigTest.cpp | 2 +- 73 files changed, 57 insertions(+), 53 deletions(-) create mode 100644 fpga/CMakeLists.txt rename {receiver => fpga}/README.md (99%) rename {receiver => fpga}/hdl/action_config.v (100%) rename {receiver => fpga}/hdl/action_wrapper.v (100%) rename {receiver => fpga}/hdl/check_datamover_error.v (100%) rename {receiver => fpga}/hdl/check_eth_busy.v (100%) rename {receiver => fpga}/hdl/gen_xdma_descriptor.v (100%) rename {receiver => fpga}/hdl/refclk300to100.v (100%) rename {receiver => fpga}/hdl/resetn_sync.v (100%) rename {receiver => fpga}/hls/CMakeLists.txt (100%) rename {receiver => fpga}/hls/arp.cpp (100%) rename {receiver => fpga}/hls/data_collection_fsm.cpp (100%) rename {receiver/include => fpga/hls}/datamover_model.h (99%) rename {receiver => fpga}/hls/ethernet.cpp (100%) rename {receiver => fpga}/hls/hls_jfjoch.h (99%) rename {receiver => fpga}/hls/host_writer.cpp (100%) rename {receiver => fpga}/hls/icmp.cpp (100%) rename {receiver => fpga}/hls/internal_packet_generator.cpp (100%) rename {receiver => fpga}/hls/ip_header_checksum.h (100%) rename {receiver => fpga}/hls/ipv4.cpp (100%) rename {receiver => fpga}/hls/jf_conversion.cpp (100%) rename {receiver => fpga}/hls/load_calibration.cpp (100%) rename {receiver/include => fpga/hls}/parallel_stream.h (100%) rename {receiver => fpga}/hls/sls_detector.cpp (100%) rename {receiver => fpga}/hls/timer.cpp (100%) rename {receiver => fpga}/hls/udp.cpp (100%) rename {receiver => fpga}/include/LICENSE.HLS_Headers (100%) rename {receiver => fpga}/include/ap_common.h (100%) rename {receiver => fpga}/include/ap_decl.h (100%) rename {receiver => fpga}/include/ap_fixed.h (100%) rename {receiver => fpga}/include/ap_fixed_base.h (100%) rename {receiver => fpga}/include/ap_fixed_ref.h (100%) rename {receiver => fpga}/include/ap_fixed_special.h (100%) rename {receiver => fpga}/include/ap_int.h (100%) rename {receiver => fpga}/include/ap_int_base.h (100%) rename {receiver => fpga}/include/ap_int_ref.h (100%) rename {receiver => fpga}/include/ap_int_special.h (100%) rename {receiver => fpga}/include/ap_shift_reg.h (100%) rename {receiver => fpga}/include/etc/ap_private.h (100%) rename {receiver => fpga}/include/hls_burst_maxi.h (100%) rename {receiver/host => fpga/pcie_driver}/ActionConfig.h (100%) rename {receiver => fpga}/pcie_driver/CMakeLists.txt (100%) rename {receiver => fpga}/pcie_driver/Makefile (100%) rename {receiver => fpga}/pcie_driver/jfjoch_drv.c (100%) rename {receiver => fpga}/pcie_driver/jfjoch_drv.h (100%) rename {receiver => fpga}/pcie_driver/jfjoch_function.c (100%) rename {receiver => fpga}/pcie_driver/jfjoch_ioctl.c (100%) rename {receiver => fpga}/pcie_driver/jfjoch_ioctl.h (98%) rename {receiver => fpga}/pcie_driver/jfjoch_memory.c (100%) rename {receiver => fpga}/pcie_driver/jfjoch_miscdev.c (100%) rename {receiver => fpga}/pcie_driver/jfjoch_pcie_setup.c (100%) rename {receiver => fpga}/scripts/bd_pcie.tcl (100%) rename {receiver => fpga}/scripts/build_pcie_design.tcl (100%) rename {receiver => fpga}/scripts/check_hls.sh (100%) rename {receiver => fpga}/scripts/hbm_u55c.tcl (100%) rename {receiver => fpga}/scripts/jfjoch.tcl (100%) rename {receiver => fpga}/scripts/mac_100g_pcie.tcl (100%) rename {receiver => fpga}/scripts/network_stack.tcl (100%) rename {receiver => fpga}/scripts/pcie_dma.tcl (100%) rename {receiver => fpga}/scripts/setup_action.sh (100%) rename {receiver => fpga}/scripts/snap_env.sh (100%) rename {receiver => fpga}/scripts/synth_and_impl.tcl (100%) rename {receiver => fpga}/scripts/synth_hls_function.tcl (100%) rename {receiver => fpga}/xdc/pcie_timing.xdc (100%) rename {receiver => fpga}/xdc/pcie_u55c.xdc (100%) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8fbfdfc0..1654014a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -65,11 +65,11 @@ build:x86:vitis_hls: rules: - if: '$CI_PIPELINE_SOURCE == "push"' changes: - - receiver/hls/* - - receiver/hdl/* - - receiver/scripts/* - - receiver/xdc/* - - receiver/microblaze/* + - fpga/hls/* + - fpga/hdl/* + - fpga/scripts/* + - fpga/xdc/* + - fpga/microblaze/* - common/Definitions.h script: - source /opt/Xilinx/Vitis_HLS/2022.1/settings64.sh @@ -196,17 +196,17 @@ synthesis:vivado_pcie: rules: - if: '$CI_PIPELINE_SOURCE == "push"' changes: - - receiver/hls/* - - receiver/hdl/* - - receiver/scripts/* - - receiver/xdc/* + - fpga/hls/* + - fpga/hdl/* + - fpga/scripts/* + - fpga/xdc/* - common/Definitions.h tags: - vivado artifacts: paths: - - build/receiver/*.mcs - - build/receiver/*.bit + - build/fpga/*.mcs + - build/fpga/*.bit expire_in: 1 week script: - source /opt/grpc/grpc.sh diff --git a/CMakeLists.txt b/CMakeLists.txt index 70480655..54aca17c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -47,6 +47,7 @@ ADD_SUBDIRECTORY(etc) SET(jfjoch_executables jfjoch_broker) IF (JFJOCH_COMPILE_TESTS OR JFJOCH_COMPILE_RECEIVER) + ADD_SUBDIRECTORY(fpga) ADD_SUBDIRECTORY(receiver) ADD_SUBDIRECTORY(image_analysis) LIST(APPEND jfjoch_executables jfjoch_receiver) diff --git a/fpga/CMakeLists.txt b/fpga/CMakeLists.txt new file mode 100644 index 00000000..5befc498 --- /dev/null +++ b/fpga/CMakeLists.txt @@ -0,0 +1,30 @@ +FIND_PROGRAM(VIVADO vivado DOC "Xilinx Vivado") +IF (VIVADO) + MESSAGE(STATUS "Xilinx Vivado found: ${VIVADO}") +ELSE() + MESSAGE(STATUS "Xilinx Vivado not found") +ENDIF() + +FIND_PROGRAM(VIVADO_HLS NAMES vitis_hls DOC "Xilinx HLS") +IF (VIVADO_HLS) + MESSAGE(STATUS "Xilinx HLS compiler found: ${VIVADO_HLS}") +ELSE() + MESSAGE(STATUS "Xilinx HLS compiler not found") +ENDIF() + +INCLUDE_DIRECTORIES(include) + +ADD_SUBDIRECTORY(hls) +ADD_SUBDIRECTORY(pcie_driver) + +IF(VIVADO_HLS AND VIVADO) + ADD_CUSTOM_COMMAND(OUTPUT action/hw/hdl/action_config.v + COMMAND ${CMAKE_COMMAND} -E env SRC_DIR=${CMAKE_CURRENT_SOURCE_DIR} HLS_IP_DIR=${CMAKE_CURRENT_BINARY_DIR}/action/ip/hls bash ${CMAKE_CURRENT_SOURCE_DIR}/scripts/setup_action.sh + DEPENDS hls hdl/action_config.v hdl/check_datamover_error.v hdl/check_eth_busy.v hdl/gen_xdma_descriptor.v hdl/refclk300to100.v hdl/action_wrapper.v hdl/resetn_sync.v scripts/bd_pcie.tcl scripts/jfjoch.tcl scripts/network_stack.tcl scripts/hbm_u55c.tcl scripts/mac_100g_pcie.tcl scripts/pcie_dma.tcl scripts/setup_action.sh + ) + + ADD_CUSTOM_TARGET(action_pcie DEPENDS action/hw/hdl/action_config.v hls + COMMAND ${VIVADO} -notrace -mode batch -source ${CMAKE_CURRENT_SOURCE_DIR}/scripts/build_pcie_design.tcl + COMMAND ${CMAKE_COMMAND} -E env FLOW=pcie VIV_PROJECT_PATH=${CMAKE_CURRENT_BINARY_DIR}/vivado/jfjoch_pcie.xpr ${VIVADO} -notrace -mode batch -source ${CMAKE_CURRENT_BINARY_DIR}/action/scripts/synth_and_impl.tcl + ) +ENDIF() diff --git a/receiver/README.md b/fpga/README.md similarity index 99% rename from receiver/README.md rename to fpga/README.md index b565c035..907b46e6 100644 --- a/receiver/README.md +++ b/fpga/README.md @@ -1,10 +1,12 @@ -# Image receiver +# FPGA Smart Network Interface Card + +## Hardware +Currently supported FPGA is only Xilinx Alveo U55C ## Content of directories CPU Part: -* `host` Host side API to access the acquisition device, implements high level operations * `pcie_driver` Linux kernel driver for PCIe version of the FPGA board FPGA part: diff --git a/receiver/hdl/action_config.v b/fpga/hdl/action_config.v similarity index 100% rename from receiver/hdl/action_config.v rename to fpga/hdl/action_config.v diff --git a/receiver/hdl/action_wrapper.v b/fpga/hdl/action_wrapper.v similarity index 100% rename from receiver/hdl/action_wrapper.v rename to fpga/hdl/action_wrapper.v diff --git a/receiver/hdl/check_datamover_error.v b/fpga/hdl/check_datamover_error.v similarity index 100% rename from receiver/hdl/check_datamover_error.v rename to fpga/hdl/check_datamover_error.v diff --git a/receiver/hdl/check_eth_busy.v b/fpga/hdl/check_eth_busy.v similarity index 100% rename from receiver/hdl/check_eth_busy.v rename to fpga/hdl/check_eth_busy.v diff --git a/receiver/hdl/gen_xdma_descriptor.v b/fpga/hdl/gen_xdma_descriptor.v similarity index 100% rename from receiver/hdl/gen_xdma_descriptor.v rename to fpga/hdl/gen_xdma_descriptor.v diff --git a/receiver/hdl/refclk300to100.v b/fpga/hdl/refclk300to100.v similarity index 100% rename from receiver/hdl/refclk300to100.v rename to fpga/hdl/refclk300to100.v diff --git a/receiver/hdl/resetn_sync.v b/fpga/hdl/resetn_sync.v similarity index 100% rename from receiver/hdl/resetn_sync.v rename to fpga/hdl/resetn_sync.v diff --git a/receiver/hls/CMakeLists.txt b/fpga/hls/CMakeLists.txt similarity index 100% rename from receiver/hls/CMakeLists.txt rename to fpga/hls/CMakeLists.txt diff --git a/receiver/hls/arp.cpp b/fpga/hls/arp.cpp similarity index 100% rename from receiver/hls/arp.cpp rename to fpga/hls/arp.cpp diff --git a/receiver/hls/data_collection_fsm.cpp b/fpga/hls/data_collection_fsm.cpp similarity index 100% rename from receiver/hls/data_collection_fsm.cpp rename to fpga/hls/data_collection_fsm.cpp diff --git a/receiver/include/datamover_model.h b/fpga/hls/datamover_model.h similarity index 99% rename from receiver/include/datamover_model.h rename to fpga/hls/datamover_model.h index 603eabff..bf16f985 100644 --- a/receiver/include/datamover_model.h +++ b/fpga/hls/datamover_model.h @@ -4,8 +4,8 @@ #ifndef JUNGFRAUJOCH_DATAMOVER_MODEL_H #define JUNGFRAUJOCH_DATAMOVER_MODEL_H -#include "../hls/hls_jfjoch.h" #include +#include "hls_jfjoch.h" enum class Direction {Input, Output}; @@ -84,4 +84,5 @@ public: hls::stream >& GetDataStream() { return data; } ~Datamover() { Stop(); } }; + #endif //JUNGFRAUJOCH_DATAMOVER_MODEL_H diff --git a/receiver/hls/ethernet.cpp b/fpga/hls/ethernet.cpp similarity index 100% rename from receiver/hls/ethernet.cpp rename to fpga/hls/ethernet.cpp diff --git a/receiver/hls/hls_jfjoch.h b/fpga/hls/hls_jfjoch.h similarity index 99% rename from receiver/hls/hls_jfjoch.h rename to fpga/hls/hls_jfjoch.h index c1d5a271..887a25f2 100644 --- a/receiver/hls/hls_jfjoch.h +++ b/fpga/hls/hls_jfjoch.h @@ -14,7 +14,7 @@ #include #else #include "../include/hls_burst_maxi.h" -#include +#include "parallel_stream.h" #endif #include "../../common/Definitions.h" diff --git a/receiver/hls/host_writer.cpp b/fpga/hls/host_writer.cpp similarity index 100% rename from receiver/hls/host_writer.cpp rename to fpga/hls/host_writer.cpp diff --git a/receiver/hls/icmp.cpp b/fpga/hls/icmp.cpp similarity index 100% rename from receiver/hls/icmp.cpp rename to fpga/hls/icmp.cpp diff --git a/receiver/hls/internal_packet_generator.cpp b/fpga/hls/internal_packet_generator.cpp similarity index 100% rename from receiver/hls/internal_packet_generator.cpp rename to fpga/hls/internal_packet_generator.cpp diff --git a/receiver/hls/ip_header_checksum.h b/fpga/hls/ip_header_checksum.h similarity index 100% rename from receiver/hls/ip_header_checksum.h rename to fpga/hls/ip_header_checksum.h diff --git a/receiver/hls/ipv4.cpp b/fpga/hls/ipv4.cpp similarity index 100% rename from receiver/hls/ipv4.cpp rename to fpga/hls/ipv4.cpp diff --git a/receiver/hls/jf_conversion.cpp b/fpga/hls/jf_conversion.cpp similarity index 100% rename from receiver/hls/jf_conversion.cpp rename to fpga/hls/jf_conversion.cpp diff --git a/receiver/hls/load_calibration.cpp b/fpga/hls/load_calibration.cpp similarity index 100% rename from receiver/hls/load_calibration.cpp rename to fpga/hls/load_calibration.cpp diff --git a/receiver/include/parallel_stream.h b/fpga/hls/parallel_stream.h similarity index 100% rename from receiver/include/parallel_stream.h rename to fpga/hls/parallel_stream.h diff --git a/receiver/hls/sls_detector.cpp b/fpga/hls/sls_detector.cpp similarity index 100% rename from receiver/hls/sls_detector.cpp rename to fpga/hls/sls_detector.cpp diff --git a/receiver/hls/timer.cpp b/fpga/hls/timer.cpp similarity index 100% rename from receiver/hls/timer.cpp rename to fpga/hls/timer.cpp diff --git a/receiver/hls/udp.cpp b/fpga/hls/udp.cpp similarity index 100% rename from receiver/hls/udp.cpp rename to fpga/hls/udp.cpp diff --git a/receiver/include/LICENSE.HLS_Headers b/fpga/include/LICENSE.HLS_Headers similarity index 100% rename from receiver/include/LICENSE.HLS_Headers rename to fpga/include/LICENSE.HLS_Headers diff --git a/receiver/include/ap_common.h b/fpga/include/ap_common.h similarity index 100% rename from receiver/include/ap_common.h rename to fpga/include/ap_common.h diff --git a/receiver/include/ap_decl.h b/fpga/include/ap_decl.h similarity index 100% rename from receiver/include/ap_decl.h rename to fpga/include/ap_decl.h diff --git a/receiver/include/ap_fixed.h b/fpga/include/ap_fixed.h similarity index 100% rename from receiver/include/ap_fixed.h rename to fpga/include/ap_fixed.h diff --git a/receiver/include/ap_fixed_base.h b/fpga/include/ap_fixed_base.h similarity index 100% rename from receiver/include/ap_fixed_base.h rename to fpga/include/ap_fixed_base.h diff --git a/receiver/include/ap_fixed_ref.h b/fpga/include/ap_fixed_ref.h similarity index 100% rename from receiver/include/ap_fixed_ref.h rename to fpga/include/ap_fixed_ref.h diff --git a/receiver/include/ap_fixed_special.h b/fpga/include/ap_fixed_special.h similarity index 100% rename from receiver/include/ap_fixed_special.h rename to fpga/include/ap_fixed_special.h diff --git a/receiver/include/ap_int.h b/fpga/include/ap_int.h similarity index 100% rename from receiver/include/ap_int.h rename to fpga/include/ap_int.h diff --git a/receiver/include/ap_int_base.h b/fpga/include/ap_int_base.h similarity index 100% rename from receiver/include/ap_int_base.h rename to fpga/include/ap_int_base.h diff --git a/receiver/include/ap_int_ref.h b/fpga/include/ap_int_ref.h similarity index 100% rename from receiver/include/ap_int_ref.h rename to fpga/include/ap_int_ref.h diff --git a/receiver/include/ap_int_special.h b/fpga/include/ap_int_special.h similarity index 100% rename from receiver/include/ap_int_special.h rename to fpga/include/ap_int_special.h diff --git a/receiver/include/ap_shift_reg.h b/fpga/include/ap_shift_reg.h similarity index 100% rename from receiver/include/ap_shift_reg.h rename to fpga/include/ap_shift_reg.h diff --git a/receiver/include/etc/ap_private.h b/fpga/include/etc/ap_private.h similarity index 100% rename from receiver/include/etc/ap_private.h rename to fpga/include/etc/ap_private.h diff --git a/receiver/include/hls_burst_maxi.h b/fpga/include/hls_burst_maxi.h similarity index 100% rename from receiver/include/hls_burst_maxi.h rename to fpga/include/hls_burst_maxi.h diff --git a/receiver/host/ActionConfig.h b/fpga/pcie_driver/ActionConfig.h similarity index 100% rename from receiver/host/ActionConfig.h rename to fpga/pcie_driver/ActionConfig.h diff --git a/receiver/pcie_driver/CMakeLists.txt b/fpga/pcie_driver/CMakeLists.txt similarity index 100% rename from receiver/pcie_driver/CMakeLists.txt rename to fpga/pcie_driver/CMakeLists.txt diff --git a/receiver/pcie_driver/Makefile b/fpga/pcie_driver/Makefile similarity index 100% rename from receiver/pcie_driver/Makefile rename to fpga/pcie_driver/Makefile diff --git a/receiver/pcie_driver/jfjoch_drv.c b/fpga/pcie_driver/jfjoch_drv.c similarity index 100% rename from receiver/pcie_driver/jfjoch_drv.c rename to fpga/pcie_driver/jfjoch_drv.c diff --git a/receiver/pcie_driver/jfjoch_drv.h b/fpga/pcie_driver/jfjoch_drv.h similarity index 100% rename from receiver/pcie_driver/jfjoch_drv.h rename to fpga/pcie_driver/jfjoch_drv.h diff --git a/receiver/pcie_driver/jfjoch_function.c b/fpga/pcie_driver/jfjoch_function.c similarity index 100% rename from receiver/pcie_driver/jfjoch_function.c rename to fpga/pcie_driver/jfjoch_function.c diff --git a/receiver/pcie_driver/jfjoch_ioctl.c b/fpga/pcie_driver/jfjoch_ioctl.c similarity index 100% rename from receiver/pcie_driver/jfjoch_ioctl.c rename to fpga/pcie_driver/jfjoch_ioctl.c diff --git a/receiver/pcie_driver/jfjoch_ioctl.h b/fpga/pcie_driver/jfjoch_ioctl.h similarity index 98% rename from receiver/pcie_driver/jfjoch_ioctl.h rename to fpga/pcie_driver/jfjoch_ioctl.h index 3667db83..1fcdef6a 100644 --- a/receiver/pcie_driver/jfjoch_ioctl.h +++ b/fpga/pcie_driver/jfjoch_ioctl.h @@ -4,7 +4,7 @@ #ifndef JUNGFRAUJOCH_JFJOCH_IOCTL_H #define JUNGFRAUJOCH_JFJOCH_IOCTL_H -#include "../host/ActionConfig.h" +#include "ActionConfig.h" #ifdef __KERNEL__ #include diff --git a/receiver/pcie_driver/jfjoch_memory.c b/fpga/pcie_driver/jfjoch_memory.c similarity index 100% rename from receiver/pcie_driver/jfjoch_memory.c rename to fpga/pcie_driver/jfjoch_memory.c diff --git a/receiver/pcie_driver/jfjoch_miscdev.c b/fpga/pcie_driver/jfjoch_miscdev.c similarity index 100% rename from receiver/pcie_driver/jfjoch_miscdev.c rename to fpga/pcie_driver/jfjoch_miscdev.c diff --git a/receiver/pcie_driver/jfjoch_pcie_setup.c b/fpga/pcie_driver/jfjoch_pcie_setup.c similarity index 100% rename from receiver/pcie_driver/jfjoch_pcie_setup.c rename to fpga/pcie_driver/jfjoch_pcie_setup.c diff --git a/receiver/scripts/bd_pcie.tcl b/fpga/scripts/bd_pcie.tcl similarity index 100% rename from receiver/scripts/bd_pcie.tcl rename to fpga/scripts/bd_pcie.tcl diff --git a/receiver/scripts/build_pcie_design.tcl b/fpga/scripts/build_pcie_design.tcl similarity index 100% rename from receiver/scripts/build_pcie_design.tcl rename to fpga/scripts/build_pcie_design.tcl diff --git a/receiver/scripts/check_hls.sh b/fpga/scripts/check_hls.sh similarity index 100% rename from receiver/scripts/check_hls.sh rename to fpga/scripts/check_hls.sh diff --git a/receiver/scripts/hbm_u55c.tcl b/fpga/scripts/hbm_u55c.tcl similarity index 100% rename from receiver/scripts/hbm_u55c.tcl rename to fpga/scripts/hbm_u55c.tcl diff --git a/receiver/scripts/jfjoch.tcl b/fpga/scripts/jfjoch.tcl similarity index 100% rename from receiver/scripts/jfjoch.tcl rename to fpga/scripts/jfjoch.tcl diff --git a/receiver/scripts/mac_100g_pcie.tcl b/fpga/scripts/mac_100g_pcie.tcl similarity index 100% rename from receiver/scripts/mac_100g_pcie.tcl rename to fpga/scripts/mac_100g_pcie.tcl diff --git a/receiver/scripts/network_stack.tcl b/fpga/scripts/network_stack.tcl similarity index 100% rename from receiver/scripts/network_stack.tcl rename to fpga/scripts/network_stack.tcl diff --git a/receiver/scripts/pcie_dma.tcl b/fpga/scripts/pcie_dma.tcl similarity index 100% rename from receiver/scripts/pcie_dma.tcl rename to fpga/scripts/pcie_dma.tcl diff --git a/receiver/scripts/setup_action.sh b/fpga/scripts/setup_action.sh similarity index 100% rename from receiver/scripts/setup_action.sh rename to fpga/scripts/setup_action.sh diff --git a/receiver/scripts/snap_env.sh b/fpga/scripts/snap_env.sh similarity index 100% rename from receiver/scripts/snap_env.sh rename to fpga/scripts/snap_env.sh diff --git a/receiver/scripts/synth_and_impl.tcl b/fpga/scripts/synth_and_impl.tcl similarity index 100% rename from receiver/scripts/synth_and_impl.tcl rename to fpga/scripts/synth_and_impl.tcl diff --git a/receiver/scripts/synth_hls_function.tcl b/fpga/scripts/synth_hls_function.tcl similarity index 100% rename from receiver/scripts/synth_hls_function.tcl rename to fpga/scripts/synth_hls_function.tcl diff --git a/receiver/xdc/pcie_timing.xdc b/fpga/xdc/pcie_timing.xdc similarity index 100% rename from receiver/xdc/pcie_timing.xdc rename to fpga/xdc/pcie_timing.xdc diff --git a/receiver/xdc/pcie_u55c.xdc b/fpga/xdc/pcie_u55c.xdc similarity index 100% rename from receiver/xdc/pcie_u55c.xdc rename to fpga/xdc/pcie_u55c.xdc diff --git a/receiver/CMakeLists.txt b/receiver/CMakeLists.txt index 3a619260..daecc3bf 100644 --- a/receiver/CMakeLists.txt +++ b/receiver/CMakeLists.txt @@ -1,34 +1,4 @@ -FIND_PROGRAM(VIVADO vivado DOC "Xilinx Vivado") -IF (VIVADO) - MESSAGE(STATUS "Xilinx Vivado found: ${VIVADO}") -ELSE() - MESSAGE(STATUS "Xilinx Vivado not found") -ENDIF() - -FIND_PROGRAM(VIVADO_HLS NAMES vitis_hls DOC "Xilinx HLS") -IF (VIVADO_HLS) - MESSAGE(STATUS "Xilinx HLS compiler found: ${VIVADO_HLS}") -ELSE() - MESSAGE(STATUS "Xilinx HLS compiler not found") -ENDIF() - -INCLUDE_DIRECTORIES(include) - -ADD_SUBDIRECTORY(hls) ADD_SUBDIRECTORY(host) -ADD_SUBDIRECTORY(pcie_driver) - -IF(VIVADO_HLS AND VIVADO) - ADD_CUSTOM_COMMAND(OUTPUT action/hw/hdl/action_config.v - COMMAND ${CMAKE_COMMAND} -E env SRC_DIR=${CMAKE_CURRENT_SOURCE_DIR} HLS_IP_DIR=${CMAKE_CURRENT_BINARY_DIR}/action/ip/hls bash ${CMAKE_CURRENT_SOURCE_DIR}/scripts/setup_action.sh - DEPENDS hls hdl/action_config.v hdl/check_datamover_error.v hdl/check_eth_busy.v hdl/gen_xdma_descriptor.v hdl/refclk300to100.v hdl/action_wrapper.v hdl/resetn_sync.v scripts/bd_pcie.tcl scripts/jfjoch.tcl scripts/network_stack.tcl scripts/hbm_u55c.tcl scripts/mac_100g_pcie.tcl scripts/pcie_dma.tcl scripts/setup_action.sh - ) - - ADD_CUSTOM_TARGET(action_pcie DEPENDS action/hw/hdl/action_config.v hls - COMMAND ${VIVADO} -notrace -mode batch -source ${CMAKE_CURRENT_SOURCE_DIR}/scripts/build_pcie_design.tcl - COMMAND ${CMAKE_COMMAND} -E env FLOW=pcie VIV_PROJECT_PATH=${CMAKE_CURRENT_BINARY_DIR}/vivado/jfjoch_pcie.xpr ${VIVADO} -notrace -mode batch -source ${CMAKE_CURRENT_BINARY_DIR}/action/scripts/synth_and_impl.tcl - ) -ENDIF() ADD_LIBRARY(JFJochReceiver STATIC JFJochReceiverService.cpp JFJochReceiverService.h diff --git a/receiver/host/CMakeLists.txt b/receiver/host/CMakeLists.txt index 61898b19..ebdff51f 100644 --- a/receiver/host/CMakeLists.txt +++ b/receiver/host/CMakeLists.txt @@ -3,7 +3,7 @@ ADD_LIBRARY(JungfraujochHost STATIC AcquisitionCounters.cpp AcquisitionCounters.h MockAcquisitionDevice.cpp MockAcquisitionDevice.h HLSSimulatedDevice.cpp HLSSimulatedDevice.h - Completion.cpp Completion.h ActionConfig.h + Completion.cpp Completion.h ../../fpga/pcie_driver/ActionConfig.h PCIExpressDevice.cpp PCIExpressDevice.h IBWrappers.cpp IBWrappers.h MlxRawEthDevice.cpp MlxRawEthDevice.h diff --git a/receiver/host/FPGAAcquisitionDevice.h b/receiver/host/FPGAAcquisitionDevice.h index 928626a5..aac404a0 100644 --- a/receiver/host/FPGAAcquisitionDevice.h +++ b/receiver/host/FPGAAcquisitionDevice.h @@ -5,7 +5,7 @@ #define JUNGFRAUJOCH_FPGAACQUISITIONDEVICE_H #include "AcquisitionDevice.h" -#include "ActionConfig.h" +#include "../../fpga/pcie_driver/ActionConfig.h" class FPGAAcquisitionDevice : public AcquisitionDevice { uint16_t data_collection_id = 0; diff --git a/receiver/host/HLSSimulatedDevice.cpp b/receiver/host/HLSSimulatedDevice.cpp index 53e2bdc1..f151bd05 100644 --- a/receiver/host/HLSSimulatedDevice.cpp +++ b/receiver/host/HLSSimulatedDevice.cpp @@ -5,7 +5,8 @@ #include #include -#include "datamover_model.h" +#include "../../fpga/hls/datamover_model.h" +#include "../../fpga/hls/hls_jfjoch.h" uint16_t checksum(const uint16_t *addr, size_t count) { /* Compute Internet Checksum for "count" bytes diff --git a/receiver/host/HLSSimulatedDevice.h b/receiver/host/HLSSimulatedDevice.h index d44b8ac7..208d1ba9 100644 --- a/receiver/host/HLSSimulatedDevice.h +++ b/receiver/host/HLSSimulatedDevice.h @@ -6,13 +6,12 @@ #include -#include "datamover_model.h" +#include "../../fpga/hls/hls_jfjoch.h" +#include "../../fpga/hls/datamover_model.h" #include "../../common/DiffractionExperiment.h" #include "FPGAAcquisitionDevice.h" #include "../../jungfrau/jf_packet.h" - - uint16_t checksum(const uint16_t *addr, size_t count); class HLSSimulatedDevice : public FPGAAcquisitionDevice { diff --git a/tests/ActionConfigTest.cpp b/tests/ActionConfigTest.cpp index 47430f90..12532120 100644 --- a/tests/ActionConfigTest.cpp +++ b/tests/ActionConfigTest.cpp @@ -3,7 +3,7 @@ #include #include "../common/Definitions.h" -#include "../receiver/host/ActionConfig.h" +#include "../fpga/pcie_driver/ActionConfig.h" TEST_CASE("ActionStatus") { ActionStatus status{};