Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
99 changes: 99 additions & 0 deletions deploy/aved.patch
Original file line number Diff line number Diff line change
Expand Up @@ -2723,3 +2723,102 @@ index 87da637..4bec2d8 100644

/**
* update_fpt() - Download a PDI containing an FPT onto a device.
diff --git a/hw/amd_v80_gen5x8_24.1/src/constraints/impl.pins.xdc b/hw/amd_v80_gen5x8_24.1/src/constraints/impl.pins.xdc
index cef537a..b1c0bb0 100644
--- a/hw/amd_v80_gen5x8_24.1/src/constraints/impl.pins.xdc
+++ b/hw/amd_v80_gen5x8_24.1/src/constraints/impl.pins.xdc
@@ -272,50 +272,50 @@ set_property -dict { PACKAGE_PIN CG6 IOSTANDARD LVCMOS12 SLEW SLOW DRIV
set_property -dict { PACKAGE_PIN CH7 IOSTANDARD LVCMOS12 SLEW SLOW DRIVE 8 } [get_ports "smbus_0_sda_io"] ;# Bank 702 VCCO - VR_1V2_VCCO_DDR4

# Uncomment below qsfp and mcio pins as design requires
-# set_property -dict { PACKAGE_PIN AR51 } [get_ports "qsfp0_322mhz_clk_p"] ;# Bank 209 " GTM_REFCLKP0_209
-#
-# set_property -dict { PACKAGE_PIN AE67 } [get_ports "qsfp0_4x_grx_p[0]"] ;# Bank 209 " GTM_RXP0_209
-# set_property -dict { PACKAGE_PIN AE64 } [get_ports "qsfp0_4x_grx_p[1]"] ;# Bank 209 " GTM_RXP1_209
-# set_property -dict { PACKAGE_PIN AC67 } [get_ports "qsfp0_4x_grx_p[2]"] ;# Bank 209 " GTM_RXP2_209
-# set_property -dict { PACKAGE_PIN AC64 } [get_ports "qsfp0_4x_grx_p[3]"] ;# Bank 209 " GTM_RXP3_209
-#
-# set_property -dict { PACKAGE_PIN AG61 } [get_ports "qsfp0_4x_gtx_p[0]"] ;# Bank 209 " GTM_TXP0_209
-# set_property -dict { PACKAGE_PIN AG58 } [get_ports "qsfp0_4x_gtx_p[1]"] ;# Bank 209 " GTM_TXP1_209
-# set_property -dict { PACKAGE_PIN AE61 } [get_ports "qsfp0_4x_gtx_p[2]"] ;# Bank 209 " GTM_TXP2_209
-# set_property -dict { PACKAGE_PIN AE58 } [get_ports "qsfp0_4x_gtx_p[3]"] ;# Bank 209 " GTM_TXP3_209
-#
-# set_property -dict { PACKAGE_PIN AA67 } [get_ports "qsfp1_4x_grx_p[0]"] ;# Bank 210 " GTM_RXP0_210
-# set_property -dict { PACKAGE_PIN AA64 } [get_ports "qsfp1_4x_grx_p[1]"] ;# Bank 210 " GTM_RXP1_210
-# set_property -dict { PACKAGE_PIN W67 } [get_ports "qsfp1_4x_grx_p[2]"] ;# Bank 210 " GTM_RXP2_210
-# set_property -dict { PACKAGE_PIN W64 } [get_ports "qsfp1_4x_grx_p[3]"] ;# Bank 210 " GTM_RXP3_210
-#
-# set_property -dict { PACKAGE_PIN AC61 } [get_ports "qsfp1_4x_gtx_p[0]"] ;# Bank 210 " GTM_TXP0_210
-# set_property -dict { PACKAGE_PIN AC58 } [get_ports "qsfp1_4x_gtx_p[1]"] ;# Bank 210 " GTM_TXP1_210
-# set_property -dict { PACKAGE_PIN AA61 } [get_ports "qsfp1_4x_gtx_p[2]"] ;# Bank 210 " GTM_TXP2_210
-# set_property -dict { PACKAGE_PIN AA58 } [get_ports "qsfp1_4x_gtx_p[3]"] ;# Bank 210 " GTM_TXP3_210
-#
-# set_property -dict { PACKAGE_PIN AL17 } [get_ports "qsfp2_322mhz_clk_p"] ;# Bank 111 " GTM_REFCLKP0_111
-#
-# set_property -dict { PACKAGE_PIN U3 } [get_ports "qsfp2_4x_grx_p[0]"] ;# Bank 112 " GTM_RXP0_112
-# set_property -dict { PACKAGE_PIN U6 } [get_ports "qsfp2_4x_grx_p[1]"] ;# Bank 112 " GTM_RXP1_112
-# set_property -dict { PACKAGE_PIN R3 } [get_ports "qsfp2_4x_grx_p[2]"] ;# Bank 112 " GTM_RXP2_112
-# set_property -dict { PACKAGE_PIN R6 } [get_ports "qsfp2_4x_grx_p[3]"] ;# Bank 112 " GTM_RXP3_112
-#
-# set_property -dict { PACKAGE_PIN U9 } [get_ports "qsfp2_4x_gtx_p[0]"] ;# Bank 112 " GTM_TXP0_112
-# set_property -dict { PACKAGE_PIN U12 } [get_ports "qsfp2_4x_gtx_p[1]"] ;# Bank 112 " GTM_TXP1_112
-# set_property -dict { PACKAGE_PIN R9 } [get_ports "qsfp2_4x_gtx_p[2]"] ;# Bank 112 " GTM_TXP2_112
-# set_property -dict { PACKAGE_PIN R12 } [get_ports "qsfp2_4x_gtx_p[3]"] ;# Bank 112 " GTM_TXP3_112
-#
-# set_property -dict { PACKAGE_PIN AA3 } [get_ports "qsfp3_4x_grx_p[0]"] ;# Bank 111 " GTM_RXP0_111
-# set_property -dict { PACKAGE_PIN AA6 } [get_ports "qsfp3_4x_grx_p[1]"] ;# Bank 111 " GTM_RXP1_111
-# set_property -dict { PACKAGE_PIN W3 } [get_ports "qsfp3_4x_grx_p[2]"] ;# Bank 111 " GTM_RXP2_111
-# set_property -dict { PACKAGE_PIN W6 } [get_ports "qsfp3_4x_grx_p[3]"] ;# Bank 111 " GTM_RXP3_111
-#
-# set_property -dict { PACKAGE_PIN AA9 } [get_ports "qsfp3_4x_gtx_p[0]"] ;# Bank 111 " GTM_TXP0_111
-# set_property -dict { PACKAGE_PIN AA12 } [get_ports "qsfp3_4x_gtx_p[1]"] ;# Bank 111 " GTM_TXP1_111
-# set_property -dict { PACKAGE_PIN W9 } [get_ports "qsfp3_4x_gtx_p[2]"] ;# Bank 111 " GTM_TXP2_111
-# set_property -dict { PACKAGE_PIN W12 } [get_ports "qsfp3_4x_gtx_p[3]"] ;# Bank 111 " GTM_TXP3_111
-#
+ set_property -dict { PACKAGE_PIN AR51 } [get_ports "qsfp0_322mhz_clk_p"] ;# Bank 209 " GTM_REFCLKP0_209
+
+ set_property -dict { PACKAGE_PIN AE67 } [get_ports "qsfp0_4x_grx_p[0]"] ;# Bank 209 " GTM_RXP0_209
+ set_property -dict { PACKAGE_PIN AE64 } [get_ports "qsfp0_4x_grx_p[1]"] ;# Bank 209 " GTM_RXP1_209
+ set_property -dict { PACKAGE_PIN AC67 } [get_ports "qsfp0_4x_grx_p[2]"] ;# Bank 209 " GTM_RXP2_209
+ set_property -dict { PACKAGE_PIN AC64 } [get_ports "qsfp0_4x_grx_p[3]"] ;# Bank 209 " GTM_RXP3_209
+
+ set_property -dict { PACKAGE_PIN AG61 } [get_ports "qsfp0_4x_gtx_p[0]"] ;# Bank 209 " GTM_TXP0_209
+ set_property -dict { PACKAGE_PIN AG58 } [get_ports "qsfp0_4x_gtx_p[1]"] ;# Bank 209 " GTM_TXP1_209
+ set_property -dict { PACKAGE_PIN AE61 } [get_ports "qsfp0_4x_gtx_p[2]"] ;# Bank 209 " GTM_TXP2_209
+ set_property -dict { PACKAGE_PIN AE58 } [get_ports "qsfp0_4x_gtx_p[3]"] ;# Bank 209 " GTM_TXP3_209
+
+ set_property -dict { PACKAGE_PIN AA67 } [get_ports "qsfp1_4x_grx_p[0]"] ;# Bank 210 " GTM_RXP0_210
+ set_property -dict { PACKAGE_PIN AA64 } [get_ports "qsfp1_4x_grx_p[1]"] ;# Bank 210 " GTM_RXP1_210
+ set_property -dict { PACKAGE_PIN W67 } [get_ports "qsfp1_4x_grx_p[2]"] ;# Bank 210 " GTM_RXP2_210
+ set_property -dict { PACKAGE_PIN W64 } [get_ports "qsfp1_4x_grx_p[3]"] ;# Bank 210 " GTM_RXP3_210
+
+ set_property -dict { PACKAGE_PIN AC61 } [get_ports "qsfp1_4x_gtx_p[0]"] ;# Bank 210 " GTM_TXP0_210
+ set_property -dict { PACKAGE_PIN AC58 } [get_ports "qsfp1_4x_gtx_p[1]"] ;# Bank 210 " GTM_TXP1_210
+ set_property -dict { PACKAGE_PIN AA61 } [get_ports "qsfp1_4x_gtx_p[2]"] ;# Bank 210 " GTM_TXP2_210
+ set_property -dict { PACKAGE_PIN AA58 } [get_ports "qsfp1_4x_gtx_p[3]"] ;# Bank 210 " GTM_TXP3_210
+
+ set_property -dict { PACKAGE_PIN AL17 } [get_ports "qsfp2_322mhz_clk_p"] ;# Bank 111 " GTM_REFCLKP0_111
+
+ set_property -dict { PACKAGE_PIN U3 } [get_ports "qsfp2_4x_grx_p[0]"] ;# Bank 112 " GTM_RXP0_112
+ set_property -dict { PACKAGE_PIN U6 } [get_ports "qsfp2_4x_grx_p[1]"] ;# Bank 112 " GTM_RXP1_112
+ set_property -dict { PACKAGE_PIN R3 } [get_ports "qsfp2_4x_grx_p[2]"] ;# Bank 112 " GTM_RXP2_112
+ set_property -dict { PACKAGE_PIN R6 } [get_ports "qsfp2_4x_grx_p[3]"] ;# Bank 112 " GTM_RXP3_112
+
+ set_property -dict { PACKAGE_PIN U9 } [get_ports "qsfp2_4x_gtx_p[0]"] ;# Bank 112 " GTM_TXP0_112
+ set_property -dict { PACKAGE_PIN U12 } [get_ports "qsfp2_4x_gtx_p[1]"] ;# Bank 112 " GTM_TXP1_112
+ set_property -dict { PACKAGE_PIN R9 } [get_ports "qsfp2_4x_gtx_p[2]"] ;# Bank 112 " GTM_TXP2_112
+ set_property -dict { PACKAGE_PIN R12 } [get_ports "qsfp2_4x_gtx_p[3]"] ;# Bank 112 " GTM_TXP3_112
+
+ set_property -dict { PACKAGE_PIN AA3 } [get_ports "qsfp3_4x_grx_p[0]"] ;# Bank 111 " GTM_RXP0_111
+ set_property -dict { PACKAGE_PIN AA6 } [get_ports "qsfp3_4x_grx_p[1]"] ;# Bank 111 " GTM_RXP1_111
+ set_property -dict { PACKAGE_PIN W3 } [get_ports "qsfp3_4x_grx_p[2]"] ;# Bank 111 " GTM_RXP2_111
+ set_property -dict { PACKAGE_PIN W6 } [get_ports "qsfp3_4x_grx_p[3]"] ;# Bank 111 " GTM_RXP3_111
+
+ set_property -dict { PACKAGE_PIN AA9 } [get_ports "qsfp3_4x_gtx_p[0]"] ;# Bank 111 " GTM_TXP0_111
+ set_property -dict { PACKAGE_PIN AA12 } [get_ports "qsfp3_4x_gtx_p[1]"] ;# Bank 111 " GTM_TXP1_111
+ set_property -dict { PACKAGE_PIN W9 } [get_ports "qsfp3_4x_gtx_p[2]"] ;# Bank 111 " GTM_TXP2_111
+ set_property -dict { PACKAGE_PIN W12 } [get_ports "qsfp3_4x_gtx_p[3]"] ;# Bank 111 " GTM_TXP3_111
+
# set_property -dict { PACKAGE_PIN BP53 } [get_ports "mcio0_100mhz_clk_p"] ;# Bank 200 " GTYP_REFCLKP0_200
#
# set_property -dict { PACKAGE_PIN BP66 } [get_ports "mcio0_4x_grx_p[0]"] ;# Bank 200 " GTYP_RXP0_200
51 changes: 51 additions & 0 deletions examples/06_dcmac/06_dcmac.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
/**
* The MIT License (MIT)
* Copyright (c) 2025 Advanced Micro Devices, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy of this software
* and associated documentation files (the "Software"), to deal in the Software without restriction,
* including without limitation the rights to use, copy, modify, merge, publish, distribute,
* sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all copies or
* substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
* NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/

#include <iostream>
#include <cstring>

#include <api/device.hpp>
#include <api/buffer.hpp>
#include <api/kernel.hpp>

int main(int argc, char* argv[]) {
try {
if (argc < 3) {
std::cerr << "Usage: " << argv[0] << " <BDF> <vrtbin file>" << std::endl;
return 1;
}
std::string bdf = argv[1];
std::string vrtbinFile = argv[2];
vrt::utils::Logger::setLogLevel(vrt::utils::LogLevel::DEBUG);
uint32_t size = 1024;

vrt::Device device(bdf, vrtbinFile);
vrt::Kernel traffic_producer_0(device, "traffic_producer_0");
vrt::Kernel traffic_producer_1(device, "traffic_producer_1");
traffic_producer_0.start(100, 0);
traffic_producer_0.wait();
traffic_producer_1.start(100, 1);
traffic_producer_1.wait();
device.cleanup();
} catch (std::exception const& e) {
std::cerr << "Exception: " << e.what() << std::endl;
return 1;
}
}
41 changes: 41 additions & 0 deletions examples/06_dcmac/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# ##################################################################################################
# The MIT License (MIT)
# Copyright (c) 2025 Advanced Micro Devices, Inc. All rights reserved.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy of this software
# and associated documentation files (the "Software"), to deal in the Software without restriction,
# including without limitation the rights to use, copy, modify, merge, publish, distribute,
# sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all copies or
# substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
# NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
# DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
# ##################################################################################################

cmake_minimum_required(VERSION 3.10)
project(00_axilite)

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_FLAGS "-O3")

# Include directories
include_directories(/usr/local/vrt/include
/usr/include/ami
/usr/include/libxml2
/usr/include/jsoncpp)

# Define sources for the executable
set(EXE_SOURCES 06_dcmac.cpp)

# Create the executable
add_executable(${PROJECT_NAME} ${EXE_SOURCES})

# Link the library to the executable
target_link_libraries(${PROJECT_NAME} vrt ami xml2 zmq jsoncpp)
61 changes: 61 additions & 0 deletions examples/06_dcmac/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# ##################################################################################################
# The MIT License (MIT)
# Copyright (c) 2025 Advanced Micro Devices, Inc. All rights reserved.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy of this software
# and associated documentation files (the "Software"), to deal in the Software without restriction,
# including without limitation the rights to use, copy, modify, merge, publish, distribute,
# sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all copies or
# substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
# NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
# DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
# ##################################################################################################

HLS_BUILD_DIR_TRAFFIC_PRODUCER=build_traffic_producer.xcv80-lsva4737-2MHP-e-S
DESIGN_NAME=06_dcmac
HOME_DIR=$(shell realpath .)
BUILD_DIR=$(shell realpath ./build)
HLS_DIR=$(shell realpath ./hls)
V80PP_PATH=$(shell realpath ../../submodules/v80-vitis-flow)
VPP_DIR=$(BUILD_DIR)/v80-vitis-flow

.PHONY: all setup hls hw app clean

all: setup hls hw app

hw_all: setup hls hw app

setup:
mkdir -p $(BUILD_DIR)
cp -r $(V80PP_PATH) $(BUILD_DIR)

hls:
@echo "Running HLS step"
$(MAKE) -C $(HLS_DIR)

hw: setup hls
@echo "Running HW step"
cd $(VPP_DIR) && \
./scripts/v80++ --design-name $(DESIGN_NAME) --cfg $(HOME_DIR)/config.cfg --platform hw --segmented --kernels $(HLS_DIR)/$(HLS_BUILD_DIR_TRAFFIC_PRODUCER)/sol1 && \
cp build/$(DESIGN_NAME)_hw.vrtbin $(BUILD_DIR)

app: setup
@echo "Running user app build step"
mkdir -p $(BUILD_DIR) && cd $(BUILD_DIR) && \
cmake .. && \
make -j9
@echo "Setting LD_LIBRARY_PATH"
export LD_LIBRARY_PATH=$$(dirname $$(which vivado))/../lib/lnx64.o:$$LD_LIBRARY_PATH
@echo "Setting PATH"
export PATH=$$PATH:/usr/local/sbin

clean:
rm -rf $(BUILD_DIR)
make -C $(HLS_DIR) clean
Loading