Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
107 commits
Select commit Hold shift + click to select a range
92c22f4
Added support for dcmac integration in linker.
hpc-aulmamei May 14, 2025
823a24d
Fixed a compilation bug.
hpc-aulmamei Jun 11, 2025
c76eade
First iteration of changes. ioctl, pcie register
hpc-aulmamei Jun 13, 2025
e91ae6d
Added error print.
hpc-aulmamei Jun 13, 2025
61c95d2
Updated module device table.
hpc-aulmamei Jun 13, 2025
287d2e6
Reverted to non bound driver.
hpc-aulmamei Jun 13, 2025
cda722a
Updated discover_and_add_devices
hpc-aulmamei Jun 13, 2025
747ba91
Added bar read.
hpc-aulmamei Jun 13, 2025
0f3b8ec
Fixed struct positioning.
hpc-aulmamei Jun 13, 2025
28b4e26
Added bar write.
hpc-aulmamei Jun 13, 2025
45f1919
Fixed bug in bar read
hpc-aulmamei Jun 13, 2025
110a6f7
Added bar write.
hpc-aulmamei Jun 16, 2025
c0d3e40
Fixed bug in bar write
hpc-aulmamei Jun 16, 2025
e81ee06
added resources/dcmac directory, added empty dcmac.tcl file
serbuvlad Jun 17, 2025
d78e404
Merge pull request #27 from serbuvlad/1-dmarc-integration
hpc-aulmamei Jun 17, 2025
da28afb
Integrate DCMAC logic supporting 200G interfaces (#28)
mariodruiz Jun 24, 2025
abefb38
Added ioctl and bar access. TODO: qdma mastering
hpc-aulmamei Jun 30, 2025
23b60ae
Added DCMAC example with two interfaces.
hpc-aulmamei Jul 21, 2025
342c2ee
DCMAC and related infrastructure driver
mariodruiz Jul 21, 2025
d1aa4b3
Add requirements.txt
mariodruiz Jul 21, 2025
16a1cbd
Merge pull request #35 from mariodruiz/network-drive
hpc-aulmamei Jul 22, 2025
0536e2c
Initial slash_driver/vrt version
serbuvlad Sep 11, 2025
dd01d81
Added Doxygen comments and documentation for libvrtd and libvrtdpp
serbuvlad Sep 17, 2025
38c30d3
Added copyright headers to files
serbuvlad Sep 17, 2025
c4e4584
Updated noc export tcl to not cause VSEC error. This is a temporary f…
hpc-aulmamei Jul 8, 2025
e436009
Changed slash_driver to slash for naming
serbuvlad Oct 1, 2025
f8e2d89
Added vrtd documentation
serbuvlad Oct 1, 2025
b8952bb
added preliminary support for mock device in vrt
serbuvlad Oct 22, 2025
f7353ef
qdma driver work
serbuvlad Nov 18, 2025
12a69a5
Added qdma to vrtd
serbuvlad Nov 18, 2025
dd4b840
readthedocs
quetric May 16, 2025
25a611d
Add doc root page
quetric May 19, 2025
90d3504
Add VRT Doxy to RTD
quetric May 19, 2025
5798fb7
Fix doxy html path
quetric May 19, 2025
43ebccf
Doxy RTD
quetric May 19, 2025
a114869
Changed package.py to support deb install without V80 card present.
hpc-aulmamei May 19, 2025
1968a50
Updated driver Makefile to support loading without V80 present.
hpc-aulmamei May 19, 2025
f60e119
Updated aved patch to support building vivado project.
hpc-aulmamei May 19, 2025
4677231
Fix Doxy path
quetric May 19, 2025
dcdf3f2
Contribution guidelines
quetric May 20, 2025
5c35983
Update CONTRIBUTING.md
quetric May 20, 2025
9894e75
Added support for generation of base pdi.
hpc-aulmamei May 29, 2025
0a9c97d
Fixed minor bug where the lock file will not be deleted.
hpc-aulmamei May 30, 2025
d2c7b22
Fix cahcing in multi-user systems using XDG dirs
serbuvlad May 20, 2025
e2a270c
Fixed build for base pdi without noc solution present. Fixed build de…
hpc-aulmamei Jun 3, 2025
aec7b98
Fixed missing script copy.
hpc-aulmamei Jun 5, 2025
0dc40fc
Add CI test for driver and linker build (#25)
quetric Jun 12, 2025
ac36f6e
Updated noc export tcl to not cause VSEC error. This is a temporary f…
hpc-aulmamei Jul 8, 2025
e4215d6
Fixed vsec table error in AMI.
hpc-aulmamei Sep 2, 2025
7a530e5
Fixed bug in build.py for noc export
hpc-aulmamei Aug 19, 2025
21377d1
Added delay to toggle_sbr for smi.
hpc-aulmamei Sep 2, 2025
79f6f6f
Added RHEL support for driver
hpc-aulmamei Sep 5, 2025
fb8bb1b
Add warning in README
quetric Sep 3, 2025
0fc3de3
Updated driver for compatibility with RHEL
hpc-aulmamei Sep 5, 2025
e73dec7
Updated driver for compatibility with RHEL
hpc-aulmamei Sep 5, 2025
b9cde75
Updated driver.
hpc-aulmamei Sep 6, 2025
d10c174
Updated driver.
hpc-aulmamei Sep 6, 2025
5203396
Updated setup_queues.sh to include path for qdma tools.
hpc-aulmamei Sep 8, 2025
6f9f72e
Updated package script to support rpm generation.
hpc-aulmamei Sep 8, 2025
5893bfa
Added tcl injection to run_pre.tcl and run_post.tcl
serbuvlad Oct 24, 2025
0c82bdc
Removed duplicate initialization from bash script
serbuvlad Oct 25, 2025
788987a
WIP: New linker
hpc-aulmamei Dec 15, 2025
084a4f9
QDMA bug fix
serbuvlad Dec 17, 2025
1cc2db8
Moved linker to root directory. Added address generation.
hpc-aulmamei Dec 28, 2025
2fed838
Moved dcmac to linker "
hpc-aulmamei Dec 28, 2025
4e4c1b4
Merge branch 'dev' into dev
hpc-aulmamei Dec 28, 2025
3f03b2c
Merge pull request #1 from serbuvlad/dev
hpc-aulmamei Dec 28, 2025
5d47e63
Merge branch 'dev' of github.com:Xilinx/SLASH into dev
hpc-aulmamei Dec 28, 2025
6097d7d
Merge branch 'dev' of github.com:hpc-aulmamei/SLASH into dev
hpc-aulmamei Dec 28, 2025
96aced1
Updated design files. Added create_project script which takes output …
hpc-aulmamei Dec 29, 2025
2214450
Removed unused .venv
hpc-aulmamei Dec 30, 2025
196c341
Removed pycache
hpc-aulmamei Dec 30, 2025
709180a
Small changes in slash base.
hpc-aulmamei Jan 3, 2026
f7a1813
Added project generation tcl files.
hpc-aulmamei Jan 5, 2026
dd59842
Added pblock constraints
hpc-aulmamei Jan 5, 2026
bac0077
Updated slash and service layer tcl templates
hpc-aulmamei Jan 5, 2026
488205a
Added support for hls kernel data width allignment for modules connec…
hpc-aulmamei Jan 5, 2026
a6097e0
Temporary add of hls cores.
hpc-aulmamei Jan 7, 2026
23dd592
Added iprepo
hpc-aulmamei Jan 7, 2026
b7a7ebe
Added Makefile
hpc-aulmamei Jan 7, 2026
65e6917
Added temp config file
hpc-aulmamei Jan 7, 2026
1b719b4
Added bd ports file.
hpc-aulmamei Jan 8, 2026
07b1e7a
Updated .gitignore
hpc-aulmamei Jan 16, 2026
18c4e85
Updated DFX project
hpc-aulmamei Jan 16, 2026
c828d94
Updated linker structure
hpc-aulmamei Jan 16, 2026
9b22c40
Updated main to include system map generation.
hpc-aulmamei Jan 16, 2026
0e665cd
Added system map template and software emulation glue logic
hpc-aulmamei Jan 16, 2026
a88c52b
Added axi4_passthrough initial code.
hpc-aulmamei Jan 16, 2026
fc251f1
Updated project to version that is building.
hpc-aulmamei Jan 23, 2026
df96716
Updated project generation scripts.
hpc-aulmamei Jan 23, 2026
e6ad136
Updated HLS for 2025.1
hpc-aulmamei Jan 26, 2026
e4c5c30
Updated HLS to v2025.1
hpc-aulmamei Jan 26, 2026
d16695a
Updated slash project for 2025.1 tools version
hpc-aulmamei Jan 26, 2026
d6768e6
Removed iprepos from user IPs
hpc-aulmamei Jan 26, 2026
75cb0f2
Added license.
hpc-aulmamei Jan 28, 2026
6826b88
Added report utilization generation script.
hpc-aulmamei Jan 28, 2026
368e393
Updated project with BUFG driven reset.
hpc-aulmamei Feb 1, 2026
427fbba
Added clock connection to shift reg.
hpc-aulmamei Feb 1, 2026
e7a11f3
Added impl version 2025 to child run.
hpc-aulmamei Feb 2, 2026
e2059bf
Updated CI pipeline
hpc-aulmamei Feb 2, 2026
da2db2e
Added simulation. Added some fixes to hw build
hpc-aulmamei Feb 3, 2026
513e8a5
Added CMake based build
hpc-aulmamei Feb 3, 2026
2bf1e32
Fixed busif vs physical port naming.
hpc-aulmamei Feb 4, 2026
bc9f62c
Fixed a bug for FINN cores.
hpc-aulmamei Feb 5, 2026
2d567db
Refactored PortType into BusType for logical flow.
hpc-aulmamei Feb 5, 2026
064da00
Added base image generation with AVED.
hpc-aulmamei Feb 5, 2026
4d4089e
Added AVED glue logic for image generation.
hpc-aulmamei Feb 5, 2026
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
8 changes: 2 additions & 6 deletions .github/workflows/ci-build-sw.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,11 +37,7 @@ jobs:
sudo apt-get update -qq
sudo apt-get install -y build-essential linux-headers-$(uname -r) libxml2-dev libzmq3-dev libjsoncpp-dev

- name: Build hotplug driver
- name: Build SLASH driver
if: ${{ false }}
run: |
cd ${{ github.workspace }}/submodules/pcie-hotplug-drv/ && make

- name: Build linker
run: |
cd ${{ github.workspace }}/submodules/v80-vitis-flow && cmake . && make
cd ${{ github.workspace }}/driver/ && make
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -55,3 +55,7 @@ Thumbs.db
!build_all.sh

.clang-format
.cache

__pycache__/
*.pyc
31 changes: 31 additions & 0 deletions cmake/ExampleInit.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# ##################################################################################################
# The MIT License (MIT)
# Copyright (c) 2025-2026 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.
# ##################################################################################################

get_filename_component(REPO_ROOT "${CMAKE_CURRENT_LIST_DIR}/.." REALPATH)

set(REPO_ROOT "${REPO_ROOT}" CACHE PATH "Repo root" FORCE)

find_package(Python3 REQUIRED COMPONENTS Interpreter)

list(APPEND CMAKE_MODULE_PATH "${REPO_ROOT}/cmake")
include(SlashHw)
include(SlashSim)

set(SLASH_LINKER_DIR "${REPO_ROOT}/linker" CACHE PATH "Linker dir")
34 changes: 34 additions & 0 deletions cmake/FindVivado.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# ##################################################################################################
# The MIT License (MIT)
# Copyright (c) 2025-2026 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.
# ##################################################################################################

find_path(VIVADO_PATH
NAMES vivado
PATHS ${VIVADO_ROOT_DIR} ENV XILINX_VIVADO
PATH_SUFFIXES bin
)

if(NOT EXISTS ${VIVADO_PATH})
message(FATAL_ERROR "Vivado not found.")
else()
get_filename_component(VIVADO_ROOT_DIR ${VIVADO_PATH} DIRECTORY)
set(VIVADO_FOUND TRUE)
set(VIVADO_BINARY ${VIVADO_ROOT_DIR}/bin/vivado)
message(STATUS "Found Vivado at ${VIVADO_ROOT_DIR}.")
endif()
163 changes: 163 additions & 0 deletions cmake/SlashHw.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,163 @@
# ##################################################################################################
# The MIT License (MIT)
# Copyright (c) 2025-2026 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_guard(GLOBAL)
include(FindVivado)

function(build_hw)
set(options USE_SYMLINK)
set(oneValueArgs TARGET LINKER_DIR EXAMPLE CFG IP_REPO OUT_DIR)
set(multiValueArgs KERNELS)
cmake_parse_arguments(BHW "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})

if(NOT BHW_TARGET)
message(FATAL_ERROR "build_hw(): TARGET is required")
endif()

foreach(req LINKER_DIR EXAMPLE CFG IP_REPO)
if("${BHW_${req}}" STREQUAL "")
message(FATAL_ERROR "build_hw(): ${req} is required")
endif()
endforeach()

if(NOT BHW_KERNELS)
message(FATAL_ERROR "build_hw(): KERNELS is required (at least one component.xml)")
endif()

if("${BHW_OUT_DIR}" STREQUAL "")
set(BHW_OUT_DIR "${CMAKE_BINARY_DIR}")
endif()

set(_main_py "")

if(EXISTS "${BHW_LINKER_DIR}/src/main.py")
set(_main_py "${BHW_LINKER_DIR}/src/main.py")
elseif(EXISTS "${BHW_LINKER_DIR}/main.py")
set(_main_py "${BHW_LINKER_DIR}/main.py")
else()
file(GLOB_RECURSE _main_candidates
RELATIVE "${BHW_LINKER_DIR}"
"${BHW_LINKER_DIR}/*/main.py"
"${BHW_LINKER_DIR}/main.py"
)

set(_filtered "")
foreach(p IN LISTS _main_candidates)
if(p MATCHES "^\\.venv/" OR p MATCHES "^venv/" OR p MATCHES "^build/" OR p MATCHES "^dist/" OR p MATCHES "^__pycache__/")
# skip
else()
list(APPEND _filtered "${p}")
endif()
endforeach()

list(LENGTH _filtered _n)
if(_n EQUAL 1)
list(GET _filtered 0 _rel)
set(_main_py "${BHW_LINKER_DIR}/${_rel}")
elseif(_n EQUAL 0)
message(FATAL_ERROR
"build_hw(): could not infer entrypoint. Expected one of:\n"
" ${BHW_LINKER_DIR}/src/main.py\n"
" ${BHW_LINKER_DIR}/main.py\n"
"and could not find any other */main.py under LINKER_DIR."
)
else()
string(REPLACE ";" "\n " _cand_pretty "${_filtered}")
message(FATAL_ERROR
"build_hw(): multiple main.py candidates found under LINKER_DIR; ambiguous:\n"
" ${_cand_pretty}\n"
"Please keep a single entrypoint, e.g. linker/src/main.py."
)
endif()
endif()

if(NOT EXISTS "${_main_py}")
message(FATAL_ERROR "build_hw(): inferred entrypoint not found: '${_main_py}'")
endif()

get_filename_component(_main_dir "${_main_py}" DIRECTORY)

if(NOT EXISTS "${BHW_CFG}")
message(FATAL_ERROR "build_hw(): CFG file not found: '${BHW_CFG}'")
endif()

foreach(k IN LISTS BHW_KERNELS)
if(NOT EXISTS "${k}")
message(FATAL_ERROR "build_hw(): kernel component.xml not found: '${k}'")
endif()
endforeach()

if(NOT IS_DIRECTORY "${BHW_IP_REPO}")
message(FATAL_ERROR "build_hw(): IP_REPO is not a directory: '${BHW_IP_REPO}'")
endif()

if(DEFINED Python3_EXECUTABLE AND NOT "${Python3_EXECUTABLE}" STREQUAL "")
set(_py "${Python3_EXECUTABLE}")
else()
set(_py "python3")
endif()


set(_src_vbin "${BHW_LINKER_DIR}/results/${BHW_EXAMPLE}/${BHW_EXAMPLE}_hw.vbin")
set(_dst_vbin "${BHW_OUT_DIR}/${BHW_EXAMPLE}_hw.vbin")
set(_stamp "${BHW_OUT_DIR}/.${BHW_EXAMPLE}_linker.stamp")

if(BHW_USE_SYMLINK)
set(_publish_cmd "${CMAKE_COMMAND}" -E create_symlink "${_src_vbin}" "${_dst_vbin}")
else()
set(_publish_cmd "${CMAKE_COMMAND}" -E copy_if_different "${_src_vbin}" "${_dst_vbin}")
endif()

add_custom_command(
OUTPUT "${_dst_vbin}" "${_stamp}"

COMMAND "${CMAKE_COMMAND}" -E make_directory "${BHW_OUT_DIR}"

# Run linker
COMMAND "${_py}" "${_main_py}"
-p "${BHW_EXAMPLE}"
--cfg "${BHW_CFG}"
--kernels ${BHW_KERNELS}
--ip-repository "${BHW_IP_REPO}"

COMMAND "${CMAKE_COMMAND}" -E echo "Publishing HW vbin:"
COMMAND "${CMAKE_COMMAND}" -E echo " from ${_src_vbin}"
COMMAND "${CMAKE_COMMAND}" -E echo " to ${_dst_vbin}"
COMMAND "${CMAKE_COMMAND}" -E remove -f "${_dst_vbin}"
COMMAND ${_publish_cmd}

COMMAND "${CMAKE_COMMAND}" -E touch "${_stamp}"

WORKING_DIRECTORY "${_main_dir}"

DEPENDS
"${_main_py}"
"${BHW_CFG}"
${BHW_KERNELS}

COMMENT "SLASH HW build: ${BHW_EXAMPLE} -> ${_dst_vbin}"
VERBATIM
)

add_custom_target("${BHW_TARGET}" DEPENDS "${_dst_vbin}")

set_property(TARGET "${BHW_TARGET}" PROPERTY SLASH_VBIN "${_dst_vbin}")
set_property(TARGET "${BHW_TARGET}" PROPERTY SLASH_VBIN_SRC "${_src_vbin}")
endfunction()
Loading