Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
471 commits
Select commit Hold shift + click to select a range
1bf9983
Added tcl injection to run_pre.tcl and run_post.tcl
serbuvlad Oct 24, 2025
077324d
Moved to abstract shell project flow. Added build directory to depend…
hpc-aulmamei Feb 23, 2026
9ae8342
VRT/Sim fixes
serbuvlad Feb 23, 2026
d573e38
Merge remote-tracking branch 'hpc-aulmamei/dev' into dev
JOOpdenhoevel Feb 24, 2026
f2dc40a
Updated abstract shell build flow with different implementation direc…
hpc-aulmamei Feb 24, 2026
d6eded5
Merge branch 'dev' into dev
hpc-aulmamei Feb 24, 2026
9a4a83b
Merge pull request #3 from serbuvlad/dev
hpc-aulmamei Feb 24, 2026
187cd19
Ignoring the IP cores generated for hbm_bandwidth and traffic_producer
JOOpdenhoevel Feb 24, 2026
94c9fb1
Work.
hpc-aulmamei Feb 24, 2026
515e4ab
Removed old deploy folder.
hpc-aulmamei Feb 24, 2026
d2b296e
Removed old pcie hotplug driver. New driver integrates this functiona…
hpc-aulmamei Feb 24, 2026
b9e968e
Fixes on emulation. Added executable recipe in examples cmake.
hpc-aulmamei Feb 24, 2026
1923519
harden sw_emu generation and add emu_manifest.json
hpc-aulmamei Feb 24, 2026
15a4ea8
manifest-drive fetch routes and harden sw_emu runtime
hpc-aulmamei Feb 24, 2026
d434a03
linker/emu: manifest-drive runtime validation and call metadata
hpc-aulmamei Feb 24, 2026
90a32c0
Merge remote-tracking branch 'hpc-aulmamei/dev' into dev
JOOpdenhoevel Feb 25, 2026
b9fa7dd
Added cstdint library to vrt/vrtd.
hpc-aulmamei Feb 25, 2026
eff05a0
Merge remote-tracking branch 'hpc-aulmamei/dev' into dev
JOOpdenhoevel Feb 25, 2026
33fe9b9
Applying my patch for missing includes and typos
JOOpdenhoevel Feb 25, 2026
05c80b6
Wrapping the device class implementation into a shared pointer
JOOpdenhoevel Feb 25, 2026
e340bfb
Updating the usage of the Device class to its new semantic
JOOpdenhoevel Feb 25, 2026
c1c8f2e
Polish
JOOpdenhoevel Feb 25, 2026
92bcf4b
Merge pull request #4 from JOOpdenhoevel/runtime_objects_as_smartpointer
hpc-aulmamei Feb 25, 2026
d75eeb1
Added missing handle for cleanup.
hpc-aulmamei Feb 25, 2026
83e0062
Deleted some extra lines in service layer template.
hpc-aulmamei Feb 25, 2026
09af8ac
Various changes in linker/vrt for emulation/simulation improvements.
hpc-aulmamei Feb 25, 2026
f14dc04
Fixed a bug in implementation script generation for service layers.
hpc-aulmamei Feb 25, 2026
8cf9b99
Upgrades in emulation process.
hpc-aulmamei Feb 25, 2026
b36a7e7
Added address block parsing from component.xml. Added verilog code ge…
hpc-aulmamei Feb 26, 2026
56d3710
Added verbose logging to simulation exec.
hpc-aulmamei Feb 26, 2026
50d1654
Merge remote-tracking branch 'hpc-aulmamei/dev' into dev
JOOpdenhoevel Feb 27, 2026
0208c2c
Fixing the address block identification
JOOpdenhoevel Feb 27, 2026
8f95a34
Added functional args to system map metadata.
hpc-aulmamei Feb 27, 2026
71f3d86
Updated buffer port constructor for emulation buffer management.
hpc-aulmamei Mar 1, 2026
7d2a136
Vrt runtime fixes
serbuvlad Mar 1, 2026
881444e
VRT: Parse functional_args and added setArg
serbuvlad Mar 1, 2026
88b918e
sim: force checkpoint-backed kernel netlists into xsim compile list
hpc-aulmamei Mar 2, 2026
be8e744
Merge remote-tracking branch 'hpc-aulmamei/dev' into dev
JOOpdenhoevel Mar 2, 2026
bd9866b
Merge pull request #5 from serbuvlad/dev
hpc-aulmamei Mar 2, 2026
86d7ae9
Removed old scripts.
hpc-aulmamei Mar 2, 2026
a11a596
linker: fixed a bug in system map metadata generation for buffers.
hpc-aulmamei Mar 2, 2026
599fb84
Removed old linker.
hpc-aulmamei Mar 2, 2026
2cf1458
vrt: Various changes for setArg flow to work.
hpc-aulmamei Mar 2, 2026
d384033
examples: Added setArg flow to examples.
hpc-aulmamei Mar 2, 2026
ca42072
vrt: Made buffer move semantics valid for Device value type.
hpc-aulmamei Mar 2, 2026
626a14d
Updated 05_perf cmake.
hpc-aulmamei Mar 2, 2026
1e6ebef
Join emu/sim binary and propagate errors. Do not silently fail
serbuvlad Mar 2, 2026
12cd13b
Merge pull request #6 from serbuvlad/dev
hpc-aulmamei Mar 2, 2026
9806906
WIP: program FPGA and clock setting.
hpc-aulmamei Mar 3, 2026
7f5810e
Removing an unnecessary import from linker/src/emit/hw/tcl_gen.py
JOOpdenhoevel Mar 3, 2026
406eb96
Removing redundant configuration files
JOOpdenhoevel Mar 3, 2026
bf962f0
Merge remote-tracking branch 'hpc-aulmamei/dev' into dev
JOOpdenhoevel Mar 3, 2026
fa1c0eb
vrtd: Fixed bug with pf2 refresh causing PCIe link drop.
hpc-aulmamei Mar 3, 2026
2649e99
linker: Updated linker path results path to depend on env variable.
hpc-aulmamei Mar 3, 2026
d3c1540
linker: fixed a bug in install recipe.
hpc-aulmamei Mar 4, 2026
89a41f5
Merge remote-tracking branch 'hpc-aulmamei/dev' into dev
JOOpdenhoevel Mar 4, 2026
558762c
linker: Moved linker results to per project, instead of per-user.
hpc-aulmamei Mar 4, 2026
b01a3dd
Added gitignore.
hpc-aulmamei Mar 4, 2026
a99f63d
Merge remote-tracking branch 'hpc-aulmamei/dev' into dev
JOOpdenhoevel Mar 5, 2026
7e0e1dd
Changed vrt structure (removed api). Added debian packaging
amd-vserbu Mar 5, 2026
57bc618
Added pre-clean and post-clean to dpkg-buildpackage
amd-vserbu Mar 5, 2026
43335b3
Fix bad library depends
amd-vserbu Mar 5, 2026
2d92e64
Pass arguments to v80++
amd-vserbu Mar 5, 2026
7437734
Generalize pconfigure
amd-vserbu Mar 5, 2026
ed7f6a2
Generalize pinstall
amd-vserbu Mar 5, 2026
fc81d5c
Renable debian package script to package-deb.sh
amd-vserbu Mar 5, 2026
77ab4d4
rpm package (rough draft)
amd-vserbu Mar 5, 2026
78fa0e0
rpm packaging
serbuvlad Mar 5, 2026
e9037d7
Fix dependency issue in rpm spec
serbuvlad Mar 5, 2026
32a374f
Merge branch 'dev' into dev
hpc-aulmamei Mar 5, 2026
23f45dd
Merge pull request #7 from amd-vserbu/dev
hpc-aulmamei Mar 5, 2026
c4da727
Merge remote-tracking branch 'hpc-aulmamei/dev' into dev
JOOpdenhoevel Mar 6, 2026
bb65473
linker: Added TCL injection.
hpc-aulmamei Mar 6, 2026
4ea3842
linker: Added timing report to system map.
hpc-aulmamei Mar 6, 2026
3826099
linker: added debug probes. TODO: insert debug probes in base design.
hpc-aulmamei Mar 7, 2026
c049766
Adding a linker configuration class and using it in the emulation flow
JOOpdenhoevel Mar 6, 2026
0315f31
Also using the linker config for simulation
JOOpdenhoevel Mar 6, 2026
16bac37
Integrating the linker config into the hardware flow (WIP)
JOOpdenhoevel Mar 6, 2026
2fa62b1
Moving argument parsing to the config class and adding a VBIN out arg…
JOOpdenhoevel Mar 9, 2026
6518b27
Merge remote-tracking branch 'hpc-aulmamei/dev' into feature/path_cle…
JOOpdenhoevel Mar 9, 2026
7c46f0b
Adding an installation subcommand
JOOpdenhoevel Mar 9, 2026
d1d0e62
Expanding on some option help strings
JOOpdenhoevel Mar 9, 2026
92e983f
Moving the linker_config module to command_config
JOOpdenhoevel Mar 9, 2026
0a6535c
Always creating projects in CWD
JOOpdenhoevel Mar 9, 2026
d54dee6
Small fixes to install_abstract_shell step
JOOpdenhoevel Mar 9, 2026
dafd3a5
Adding a decorator for the "run_with_profiling" function
JOOpdenhoevel Mar 9, 2026
710c714
Removing a broken import
JOOpdenhoevel Mar 9, 2026
6945d4a
Adding a minimal CMake integration for the new linker CLI
JOOpdenhoevel Mar 9, 2026
07efd56
Turning the Slash script into a find_package script
JOOpdenhoevel Mar 9, 2026
47bf251
Removing obsolete files
JOOpdenhoevel Mar 9, 2026
83d6652
Moving the AVED submodule
JOOpdenhoevel Mar 10, 2026
2ff902f
Revert "Moving the AVED submodule"
JOOpdenhoevel Mar 10, 2026
b9436f6
Removing a hardcoded path in the installation build TCL and moving th…
JOOpdenhoevel Mar 10, 2026
01a2115
Moving the abstract shell files into the resources directory
JOOpdenhoevel Mar 10, 2026
fef1b07
Removing leftovers from the old multi-step linker
JOOpdenhoevel Mar 10, 2026
fbf0f0e
Fixing/Updating the hardware build step, part 1
JOOpdenhoevel Mar 10, 2026
d554ddb
Revert "Fixing/Updating the hardware build step, part 1"
JOOpdenhoevel Mar 10, 2026
6621433
Fixing the hardware build process
JOOpdenhoevel Mar 10, 2026
ba3dd20
Removing an obsolete module and running autopep8
JOOpdenhoevel Mar 10, 2026
4e83820
Removing unneeded imports
JOOpdenhoevel Mar 10, 2026
d58c747
Moving input parsing into the command configuration
JOOpdenhoevel Mar 10, 2026
5862ff3
Properly adding the network config to the connectivity config and onl…
JOOpdenhoevel Mar 10, 2026
c1878d6
Only profiling hardware build steps
JOOpdenhoevel Mar 10, 2026
50b9a9f
Added debug ctx.
hpc-aulmamei Mar 10, 2026
8bf9bd2
Last-minute fixes
JOOpdenhoevel Mar 10, 2026
a9454df
Properly removing old AVED submodules
JOOpdenhoevel Mar 11, 2026
d519aba
Moving the simulator C++ sources into the resources folder
JOOpdenhoevel Mar 11, 2026
91674fb
Removing the linker root property from the command configuration
JOOpdenhoevel Mar 11, 2026
700597b
Implementing the resource directory lookup logic
JOOpdenhoevel Mar 11, 2026
b7b5af0
Adding epilogs to the argument parsers
JOOpdenhoevel Mar 11, 2026
471f60a
Tweaking documentation
JOOpdenhoevel Mar 11, 2026
63b421d
linker: added port mapping to functional args for buffer type.
hpc-aulmamei Mar 11, 2026
00ca20e
Merge remote-tracking branch 'hpc-aulmamei/dev' into feature/path_cle…
JOOpdenhoevel Mar 11, 2026
a351317
Merge pull request #9 from JOOpdenhoevel/feature/path_cleanup_new
hpc-aulmamei Mar 12, 2026
3f7913d
Merge remote-tracking branch 'hpc-aulmamei/dev' into dev
JOOpdenhoevel Mar 12, 2026
eb4735f
Minimizing unnecessary changes relative to dev
JOOpdenhoevel Mar 12, 2026
c21a388
Eliminating unnecessary changes, part 2
JOOpdenhoevel Mar 12, 2026
4501e4e
Fixing a small include error
JOOpdenhoevel Mar 12, 2026
6ae16e3
Removing the single-IP-repo imports
JOOpdenhoevel Mar 12, 2026
e216636
Copying all IPs into a dedicated IP repo, and removing the external I…
JOOpdenhoevel Mar 12, 2026
26de8b8
Autopep8-ing
JOOpdenhoevel Mar 12, 2026
1bac9d8
Fixing the resource dir usage in the build TCL scripts
JOOpdenhoevel Mar 12, 2026
8876082
Fixing the report generation
JOOpdenhoevel Mar 13, 2026
ff864f8
Merge pull request #10 from JOOpdenhoevel/fix/base_ip_repo_path
hpc-aulmamei Mar 13, 2026
154cb4f
Merge remote-tracking branch 'hpc-aulmamei/dev' into joo-dev
JOOpdenhoevel Mar 13, 2026
ae4c8c2
Merge pull request #2 from JOOpdenhoevel/dev
hpc-aulmamei Mar 13, 2026
f38df0a
Fixing a renaming error
JOOpdenhoevel Mar 18, 2026
5648fe1
Merge pull request #11 from JOOpdenhoevel/dev
hpc-aulmamei Mar 24, 2026
2362c5a
Moved debian files to packaging
amd-vserbu Mar 5, 2026
c861fa4
Update gitignore for new packaging flow
amd-vserbu Mar 6, 2026
f37385a
Centralize versioning to packaging/version
amd-vserbu Mar 6, 2026
e74dda7
Hotfix: Removed CXX as a language from libslash
amd-vserbu Mar 6, 2026
ad63535
Libslash documentation and licensing updates
amd-vserbu Mar 11, 2026
ae5a12d
Fix mode of source files (unset execution bit)
amd-vserbu Mar 11, 2026
f862cc2
Added missing dependencies to rpm build and ensure python version
amd-vserbu Mar 11, 2026
2a50ebd
Added smi and reset functionality to vrt
amd-vserbu Mar 11, 2026
c5f1fdc
Add required and after to connect the vrtd service to the vrtd socket…
amd-vserbu Mar 11, 2026
4804ad6
Packaging for smi
amd-vserbu Mar 11, 2026
bf5c451
Added logging for vrtd auth errors
amd-vserbu Mar 12, 2026
1a140ff
New options for initializing buffers for kernels in VRT
amd-vserbu Mar 12, 2026
57275eb
Updated example vrtd config file
amd-vserbu Mar 12, 2026
bd591ff
reset_with_ami return code bug fix
amd-vserbu Mar 12, 2026
699c328
Added better logging to vrt
amd-vserbu Mar 12, 2026
3542dec
Added more debug messages
amd-vserbu Mar 12, 2026
ebb3a67
Added missing dependency to debian flow
amd-vserbu Mar 12, 2026
9328217
Updated linker install to the new flow
amd-vserbu Mar 12, 2026
49e1870
bdf normalization and extra logging
amd-vserbu Mar 12, 2026
d3da10f
Added vrtd capability for ami reset
amd-vserbu Mar 12, 2026
d48c6f4
Fix ami reset sequence with workaround hack
amd-vserbu Mar 12, 2026
9fe8929
Added root domain fallback for toggle sbr
amd-vserbu Mar 12, 2026
9fa33db
Make vrtd includes relative
amd-vserbu Mar 13, 2026
15f09e0
Stop packaging __pycache__
amd-vserbu Mar 13, 2026
d835285
Do not require a device to be tracked to toggle sbr on it in the driv…
amd-vserbu Mar 13, 2026
da5062b
Remove old smi files
Mar 13, 2026
e7f38bb
Added documentation
amd-vserbu Mar 13, 2026
99d9ffb
Add better error detection in smi inspect
amd-vserbu Mar 16, 2026
61a3416
Added report_utilization to vrt/smi
amd-vserbu Mar 16, 2026
69436f3
Added detail status of driver on smi list
amd-vserbu Mar 16, 2026
257c0f9
Added better BDF managmente
amd-vserbu Mar 16, 2026
db52fcb
Changed vrtd.conf permission structure
amd-vserbu Mar 16, 2026
0aa9216
Modified AMI submodule path to new location
amd-vserbu Mar 16, 2026
4ff34ac
Remove nested comments from documentation
amd-vserbu Mar 16, 2026
73d76b5
Remove nested comments from documentation
amd-vserbu Mar 16, 2026
cf556b0
Remove nested comments from documentation
amd-vserbu Mar 16, 2026
1ca1170
Fixed function definition
amd-vserbu Mar 16, 2026
4869fde
Fixed same driver name for the 2 pcie drivers of slash
amd-vserbu Mar 16, 2026
6fee7bf
Added vrtd check to v80-smi list
amd-vserbu Mar 16, 2026
dcf055e
Added vrtd check to v80-smi list
amd-vserbu Mar 16, 2026
bc96836
Removed CAP_DAC_OVERRIDE capability
amd-vserbu Mar 16, 2026
245231b
Remove rawio requirement to access bar
amd-vserbu Mar 16, 2026
30e69b9
Added back raw IO capability for mmap in the clock driver
amd-vserbu Mar 18, 2026
3b66308
Change bar access from io_remap_pfn_range() to vmf_insert_pfn() to by…
amd-vserbu Mar 18, 2026
66ac847
Modified examples and now install helper slash cmake tools
amd-vserbu Mar 18, 2026
96621ab
Updated cmake flow for the examples
amd-vserbu Mar 18, 2026
20f1df4
Fix vrtd library target install cmake
amd-vserbu Mar 18, 2026
c4f7f08
Fix includes in examples
amd-vserbu Mar 18, 2026
db331f5
Added scripts for testing
amd-vserbu Mar 18, 2026
2363197
Fix test_examples.sh script when no BDF detected
amd-vserbu Mar 18, 2026
4b33e8f
Fix jsoncpp transitive include
amd-vserbu Mar 18, 2026
d596050
Better build from repo for the examples
amd-vserbu Mar 18, 2026
1660185
Source ld library path in test-examples
amd-vserbu Mar 18, 2026
f4692c7
Use argMemoryConfig for examples
amd-vserbu Mar 18, 2026
3f5a921
Use argMemoryConfig for examples
amd-vserbu Mar 18, 2026
e26400f
Use portMemoryConfig for examples
amd-vserbu Mar 18, 2026
d5a32bc
Fix vrt MEM0
amd-vserbu Mar 18, 2026
35af713
Fix/simplify smi list board print
amd-vserbu Mar 18, 2026
77f9761
Fixed python dependency for rhel
amd-vserbu Mar 19, 2026
56d9359
Fixed python dependency for rhel
amd-vserbu Mar 19, 2026
4f6139e
Renamed test scripts
amd-vserbu Mar 19, 2026
f11f3eb
Made all scripts executable
amd-vserbu Mar 19, 2026
de58ab1
Cleaned up iprepo makefiles and added root-design-clean.sh
amd-vserbu Mar 19, 2026
30a0717
Removed reload_driver.sh
amd-vserbu Mar 19, 2026
9911abd
Remove submodules/aved from package
amd-vserbu Mar 19, 2026
49b9e3f
Remove install.prj from package
amd-vserbu Mar 19, 2026
6a5cddc
Removed IP_REPO from build examples to align with linker updates
amd-vserbu Mar 19, 2026
cf270e9
Always vendor deps for package
amd-vserbu Mar 19, 2026
b0c6f1e
Select partition 0 AND properly select dmabuf namespace in the kernel…
amd-vserbu Mar 20, 2026
221dd20
Allow hotplug for any BDF
amd-vserbu Mar 20, 2026
3c1c380
Added debug messages to hotplug
amd-vserbu Mar 20, 2026
11d7c08
Fix htoplug device udev rule
amd-vserbu Mar 20, 2026
9502761
Add timeout after rescan
amd-vserbu Mar 20, 2026
d8d710f
Enable sysusers and dkms managment for rpm packages
amd-vserbu Mar 20, 2026
b425eb6
Added udevadm reload to rpm
amd-vserbu Mar 20, 2026
b83bc06
Exclude src rpm
amd-vserbu Mar 20, 2026
1b5e061
Better handling of conf packaging
amd-vserbu Mar 20, 2026
65055c3
Changed socket mode to 666 (permissions are checked by the daemon)
amd-vserbu Mar 20, 2026
96456a7
Tentative fix for reset issue
amd-vserbu Mar 20, 2026
08fb2dc
Tentative fix for reset issue
amd-vserbu Mar 23, 2026
efa7ece
Driver hotplug simplification
amd-vserbu Mar 23, 2026
ea44f5f
Added stress test script
amd-vserbu Mar 23, 2026
b107252
Add a delay to match ami
amd-vserbu Mar 23, 2026
0eda200
Add more debugging infromation in the reset path
amd-vserbu Mar 23, 2026
1160f0c
Add a delay to match ami
amd-vserbu Mar 23, 2026
ab96c19
Added package AMI scripts
amd-vserbu Mar 23, 2026
4a8c16e
Fix package-ami.sh script
amd-vserbu Mar 23, 2026
3470e84
Fixes to packaging scripts
amd-vserbu Mar 23, 2026
18b0532
Mark package-ami as executable
amd-vserbu Mar 23, 2026
1cbceda
Added rescan retry
amd-vserbu Mar 23, 2026
3b2e4b0
Added v80-smi list --sensors
amd-vserbu Mar 23, 2026
8984163
Return 2 for accuracy failiures.
amd-vserbu Mar 24, 2026
49dba57
Double free fix
amd-vserbu Mar 24, 2026
95884e1
Remove rendundant code. Add sanitize to tests
amd-vserbu Mar 24, 2026
e5015b0
Fix memory leak
amd-vserbu Mar 24, 2026
6de723d
Fix memory leak
amd-vserbu Mar 24, 2026
570d338
Fix memory leak
amd-vserbu Mar 24, 2026
a6593aa
Added resource utilisation parser
amd-vserbu Mar 24, 2026
db0886b
Prettier smi formatting
amd-vserbu Mar 24, 2026
b99ccc1
Added documentation
amd-vserbu Mar 24, 2026
cb20a3e
Added documentation stubs
amd-vserbu Mar 24, 2026
f2719fa
Filed out documentation
amd-vserbu Mar 25, 2026
ab402aa
Made all scripts executable
amd-vserbu Mar 25, 2026
49c6381
Do not produce source rpms in package-rpm.sh
amd-vserbu Mar 25, 2026
3bc9f37
Added ami to fresh-install script
amd-vserbu Mar 25, 2026
4a05fdc
Documentation
amd-vserbu Mar 25, 2026
1f7c16e
Tentative fix for root port PCIe reset
amd-vserbu Mar 25, 2026
92399f7
Merge pull request #8 from amd-vserbu/dev
hpc-aulmamei Mar 25, 2026
1549d16
Added license headers.
hpc-aulmamei Mar 25, 2026
b4308f3
Removed unused files
hpc-aulmamei Mar 25, 2026
6e5af29
Added -Wno-error=zero-length-bounds for AMC build
amd-vserbu Mar 26, 2026
f0e855d
Remove special case for not running example 2 on emu (it works on emu)
amd-vserbu Mar 26, 2026
fe9cf90
Switched to argMemoryConfig where it makes sense
amd-vserbu Mar 26, 2026
7910c6e
Try _r suffix when matching arguments
amd-vserbu Mar 27, 2026
164152a
Documentation
amd-vserbu Mar 27, 2026
fdee122
Documentation
amd-vserbu Mar 27, 2026
34b855a
Open bar file once per-kernel, not once per register access
amd-vserbu Mar 27, 2026
0969f78
Removed refrences to examples and tests in cmake for libslash
amd-vserbu Mar 27, 2026
d956ee5
Documentation fixes
amd-vserbu Mar 27, 2026
d944101
Changed libslash to Doxygen
amd-vserbu Mar 27, 2026
b4f1d6e
Merge pull request #12 from amd-vserbu/dev
hpc-aulmamei Mar 29, 2026
b23555b
Removed smbus IP.
hpc-aulmamei Apr 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
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
18 changes: 18 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -55,3 +55,21 @@ Thumbs.db
!build_all.sh

.clang-format
.cache
**/linker_results/
**/linker_results_*/

__pycache__/
*.pyc

# Build files for package
/pbuild/
/rpmbuild/
/debian/

# Output files for package
/deb/
/rpm/

# VBIN build directories
*.prj
4 changes: 2 additions & 2 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[submodule "submodules/qdma_drv"]
path = submodules/qdma_drv
url = https://github.com/Xilinx/dma_ip_drivers.git
[submodule "submodules/v80-vitis-flow/submodules/aved"]
path = submodules/v80-vitis-flow/submodules/aved
[submodule "AVED"]
path = linker/resources/submodules/AVED
url = https://github.com/Xilinx/AVED.git
310 changes: 283 additions & 27 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,47 +1,303 @@
# SLASH VRT (V80 RunTime) API
# SLASH — Platform for AMD Alveo V80

This repository contains SLASH, a SmartNIC platform for Alveo V80. SLASH consists of several components:
- card management functionality that layers on top of [AVED](https://github.com/Xilinx/AVED)
- V80 RunTime (VRT): the VRT API implementation, along with examples.
- (upcoming) 200Gbps MAC implementation for network-attached kernels and SmartNIC applications
SLASH is an open-source platform for AMD Alveo V80 FPGA boards. It provides a
complete runtime and development ecosystem for executing FPGA kernels, managing
devices, and transferring data between host and device memory.

> [!WARNING]
> The project was only tested with AMD Vivado & Vitis tools version 2024.2, on Ubuntu 22.04, kernel version 5.15. Please use same versions of tools/kernel.
Key components:

## Dependencies
- **VRT** (V80 RunTime) — C++17 API for kernel execution, buffer management, and device control
- **v80-smi** — command-line tool for board management, programming, and diagnostics
- **v80++** — Python-based linker that packages HLS kernels into deployable *vrtbin* archives
- **slash** — Linux kernel module and driver stack

- libxml2
- ZeroMQ (zmq) for emulation & simulation
- jsoncpp for emulation & simulation
## Architecture

To install the dependencies:
SLASH is organized as a layered stack. Each layer has a single responsibility
and communicates with adjacent layers through well-defined interfaces.

```
┌─────────────────────────────────────────────┐
│ User Application │ C++17
├─────────────────────────────────────────────┤
│ VRT (libvrt) │ C++17 ─ MIT
├─────────────────────────────────────────────┤
│ libvrtd++ (C++ RAII wrapper) │ C++20 ─ MIT
├─────────────────────────────────────────────┤
│ libvrtd (C wire-protocol) │ C11 ─ MIT
├──────────────── AF_UNIX ────────────────────┤
│ vrtd (daemon) │ C11 ─ MIT
├─────────────────────────────────────────────┤
│ libslash (driver wrapper) │ C ─ MIT
├─────────────────────────────────────────────┤
│ Linux kernel module (slash) │ C ─ GPLv2
├─────────────────────────────────────────────┤
│ AMD Alveo V80 Hardware │
└─────────────────────────────────────────────┘
```

Two additional components sit alongside the stack:

- **v80-smi** — CLI for listing, programming, resetting, and validating V80 boards.
- **v80++ (linker)** — links HLS kernels into *vrtbin* archives for deployment.

## Repository Layout

| Directory | Component | Description |
|-----------|-----------|-------------|
| [`vrt/`](vrt/) | VRT | C++17 runtime library — [README](vrt/README.md) |
| [`driver/`](driver/) | Kernel module + libslash | Linux driver and C wrapper — [README](driver/libslash/README.md) |
| [`smi/`](smi/) | v80-smi | CLI management tool — [README](smi/README.md) |
| [`linker/`](linker/) | v80++ | Python-based kernel linker |
| [`cmake/`](cmake/) | CMake modules | Build system integration — [README](cmake/README.md) |
| [`examples/`](examples/) | Examples | Demo projects — [README](examples/README.md) |
| [`docs/`](docs/) | Documentation | Sphinx / ReadTheDocs site |
| [`packaging/`](packaging/) | Packages | Debian and RPM packaging |
| [`scripts/`](scripts/) | Scripts | Build, package, and test helpers |

## Platform Modes

VRT supports three execution platforms. The same application source code runs
on all three — the platform is determined by the vrtbin file, not by the
application.

| Platform | Transport | Build Target | Use Case |
|----------|-----------|-------------|----------|
| **Hardware** | PCIe BAR + QDMA | `hw` | Production runs on a physical V80 board |
| **Emulation** | ZeroMQ IPC to C-model | `emu` | Functional verification without FPGA hardware |
| **Simulation** | Verilog register map | `sim` | Cycle-accurate RTL simulation |

Each example provides three vrtbin targets via CMake:

```cmake
add_vbin(TARGET "axilite_hw" PLATFORM "hw" CFG "${CFG_FILE}" KERNELS ${_KERNELS})
add_vbin(TARGET "axilite_emu" PLATFORM "emu" CFG "${CFG_FILE}" KERNELS ${_KERNELS})
add_vbin(TARGET "axilite_sim" PLATFORM "sim" CFG "${CFG_FILE}" KERNELS ${_KERNELS})
```

## Prerequisites

**System requirements:**

- Ubuntu LTS 22.04+; RHEL 9+ or compatible (other distributions may work as well but have not been tested)
- AMD Vivado & Vitis HLS 2025.1 — source the environment before building or
running against emulation/simulation:

```bash
source <path-to-vivado>/settings64.sh
source <path-to-vitis-hls>/settings64.sh
```

For `csh`/`tcsh` shells, use `settings64.csh` instead. Using versions other
than 2025.1 may cause breakage.

**Library dependencies:**

```bash
sudo apt install libxml2-dev libzmq3-dev libjsoncpp-dev xvfb
sudo apt install cmake pkg-config ninja-build \
libxml2-dev libzmq3-dev libjsoncpp-dev zlib1g-dev \
libsystemd-dev libinih-dev libcli11-dev \
linux-headers-$(uname -r)
```

### Submodules
**Submodules:**

SLASH depends on [AVED](https://github.com/Xilinx/AVED) and [QDMA](https://github.com/Xilinx/dma_ip_drivers):

SLASH depends on [AVED](https://github.com/Xilinx/AVED) and [QDMA](https://github.com/Xilinx/dma_ip_drivers) which can be pulled from git using:
```bash
git submodule update --init --recursive
```
## Deployment

In order to build and deploy all necessary software for this project to work, follow the steps shown in the [deployment instructions](deploy/README.md).
## Quick Start

### 1. Build the stack

Components must be built in dependency order:

```bash
# Kernel module
cd driver && make && sudo insmod slash.ko && cd ..

# libslash (kernel module client library)
cd driver/libslash && cmake -S . -B build -G Ninja && cmake --build build && sudo cmake --install build && cd ../..

# vrtd (daemon + client libraries)
cd vrt/vrtd && cmake -S . -B build -G Ninja && cmake --build build && sudo cmake --install build && cd ../..

# VRT (runtime library)
cd vrt && cmake -S . -B build -G Ninja && cmake --build build && sudo cmake --install build && cd ..

# v80-smi (CLI tool)
cd smi && cmake -S . -B build -G Ninja && cmake --build build && sudo cmake --install build && cd ..
```

### 2. Start the daemon

```bash
sudo vrtd # manual
sudo systemctl enable --now vrtd # production (systemd)
```

### 3. Verify

```bash
v80-smi list
```

All four readiness checks (PF0, PF1, PF2, VRTD) should pass for each board.

### 4. Build and run an example

```bash
cd examples/00_axilite
cmake -B build -S . -G Ninja -DSLASH_USE_REPO=ON
cmake --build build

# Build FPGA artefacts (requires Vivado/Vitis)
cmake --build build --target hls # compile HLS kernels
cmake --build build --target axilite_hw # link into a hardware vrtbin

# Run
./build/00_axilite <BDF> build/axilite_hw.vbin
```

Set these environment variables before running:

```bash
source <path-to-vivado>/settings64.sh
source <path-to-vitis>/settings64.sh
```

## Code Example

A minimal VRT application:

```cpp
#include <vrt/device.hpp>
#include <vrt/kernel.hpp>
#include <vrt/buffer.hpp>

int main() {
// Open device and program FPGA
vrt::Device device("03:00", "design.vrtbin");

// Get kernel handle
vrt::Kernel increment(device, "increment_0");

// Allocate device buffer using the kernel's port configuration
vrt::Buffer<float> buffer(device, 1024, increment.argMemoryConfig("in"));

// Fill host-side data
for (size_t i = 0; i < 1024; ++i)
buffer[i] = static_cast<float>(i);

// Transfer host → device
buffer.sync(vrt::SyncType::HOST_TO_DEVICE);

// Launch kernel
increment.setArg(0, 1024);
increment.setArg(1, buffer);
increment.start();
increment.wait();

// Transfer device → host
buffer.sync(vrt::SyncType::DEVICE_TO_HOST);

// Read result register
uint32_t result = increment.read(0x18);

device.cleanup();
return 0;
}
```

## v80-smi Commands

| Command | Description |
|---------|-------------|
| `v80-smi version` | Print build version |
| `v80-smi list` | Enumerate V80 boards with readiness checks (`-l` long, `-s` sensors, `-j` JSON) |
| `v80-smi inspect <vrtbin>` | Display vrtbin metadata (platform, clock, kernels, memory map) |
| `v80-smi query -d <BDF>` | Display metadata of the currently loaded design on a device |
| `v80-smi program <vrtbin> -d <BDF>` | Program a V80 device with a vrtbin file |
| `v80-smi reset -d <BDF>` | Hardware-reset a board (PCIe secondary bus reset) |
| `v80-smi validate -d <BDF>` | Run memory integrity and bandwidth tests (HBM and DDR) |

See the full [v80-smi reference](smi/README.md) for details and examples.

## Memory Model

The V80 board has two memory subsystems:

| Memory | Selection | Capacity | Notes |
|--------|-----------|----------|-------|
| **DDR** | `MemoryRangeType::DDR` | Large, single address space | Bulk storage; referenced as `DDR0` in linker config |
| **HBM** (port) | `MemoryRangeType::HBM` + port | 64 pseudo-channels (HBM0–HBM63) | Explicit channel; high aggregate bandwidth |
| **HBM** (VNOC) | `MemoryRangeType::HBM_VNOC` | Auto-distributed across channels | No manual channel management |

The recommended approach is to derive memory configuration from the kernel metadata
rather than hardcoding types:

```cpp
vrt::Buffer<float> buf(device, size, kernel.argMemoryConfig("in"));
```

This ensures the buffer allocation always matches the linker configuration.

## Examples

| ID | Feature | Notes |
|----|---------|-------|
| 00 | Linking, AXI-Lite control | |
| 01 | Kernels with AXI-MM interfaces | |
| 02 | Freerunning streaming kernels | |
| 03 | Controlling multiple V80s | Uses vrtbin from example 00 |
| 04 | Frequency targets | |
| 05 | Memory performance test | Instantiates maximum number of kernels |

See the [examples README](examples/README.md) for build and run instructions.

## Component Documentation

Each component has its own README with detailed information:

- **[VRT Runtime](vrt/README.md)** — API overview, classes, building, and platform support
- **[libslash](driver/libslash/README.md)** — driver wrapper, device node API, mock mode
- **[v80-smi](smi/README.md)** — all commands with usage examples
- **[CMake Modules](cmake/README.md)** — BuildHLS, FindVivado, FindVitis, SlashTools reference
- **[VRT API Docs](vrt/doc/README.md)** — Doxygen generation instructions
- **[vrtd Daemon](vrt/vrtd/README.md)** — daemon coding guidelines and standards
- **[Examples](examples/README.md)** — build recipes and run instructions for all examples

## Full Documentation

The complete documentation is published at **[slash-fpga.readthedocs.io](https://slash-fpga.readthedocs.io/)** and covers:

- **Tutorials** — getting started, writing kernels, buffers and memory, emulation/simulation, platform setup, device management, vrtd configuration
- **How-To Guides** — multiple boards, clock frequency, streaming chains, memory benchmarking, building from source, CMake modules, vrtbin inspection, mock mode
- **API Reference** — VRT, libslash, libvrtd, libvrtdpp, vrtd, v80-smi, CMake modules
- **Architecture** — stack overview, memory model, PCIe topology, platform modes, vrtbin format

## Known Limitations

- HLS arguments should not be Verilog or VHDL keywords (e.g. `in`, `out`). Some issues may appear in the linker with this configuration.
- In emulation, HLS kernels must include at least one AXI4-Lite interface to work.
- A maximum of 15 kernels can be instantiated in the current version of the linker. This will be fixed in future versions.
- Freerunning streaming kernel chains are not supported in emulation.

## How to build VRT API documentation
## Contributing

Follow the instructions in the [API documentation README](vrt/doc/README.md).
We welcome contributions. Please see [CONTRIBUTING.md](CONTRIBUTING.md) for:

## How to build the examples
- Issue reporting guidelines
- Pull request process (target the `dev` branch)
- Developer Certificate of Origin (DCO) requirements

A [README](examples/README.md) file can be found in the examples directory. Please follow the instruction given there to proceed.
## License

## Known limitations
- HLS arguments should not be Verilog or VHDL keywords (eg. `in`, `out` so on). Some issues may appear in the linker with this configuration.
- In emulation, HLS kernels must include at least one axi4lite interface to work.
- In the current version of the [linker](submodules/v80-vitis-flow), a maximum number of 15 kernels can be instantiated. This will be fixed in future versions.
| Component | License |
|-----------|---------|
| Linux kernel driver | GPLv2 |
| All user-space code | MIT |

## Notes
All the hardware examples are built using the Segmented Configuration flow.
See [LICENSE](LICENSE) for the full text.
Loading
Loading