Install from Packages
This guide covers installing the SLASH stack from pre-built Debian or RPM packages. This is the recommended installation method for most users.
For building everything from source (e.g. for development or unsupported distributions), see Build from Source.
Package Groups
SLASH is split into focused packages so you install only what you need.
Runtime packages (required on every host with a V80 board):
Package |
Purpose |
|---|---|
|
DKMS source for the |
|
Shared library for interacting with the kernel module over the driver’s character device. |
|
Daemon that multiplexes device access, enforces permissions, and
manages board state. Includes systemd units, udev rules, and
default |
|
Client libraries ( |
|
VRT C++ runtime library — the high-level API for kernels, buffers, and device control. |
|
Board management CLI: |
Development packages (required when building applications or HLS kernels):
Package |
Purpose |
|---|---|
|
Headers and CMake targets for |
|
Headers and CMake targets for |
|
Headers and CMake targets for |
|
Python-based kernel linker that packages compiled HLS IP into
|
Convenience metapackages:
Package |
Pulls in |
|---|---|
|
All runtime packages above except |
|
All development packages above. |
|
Runtime subset for simulation/emulation hosts (no board required). |
|
Development subset for simulation/emulation. |
Build the Packages
All packages — including the AMI driver package — are produced by a single script run from the repository root:
scripts/package-deb.sh
Packages are written to ./deb/.
scripts/package-rpm.sh
Packages are written to ./rpm/.
Both scripts call scripts/package-ami.sh internally, so the AMI package
is built and placed in the same output directory as the SLASH packages.
Install System Prerequisites
Every target machine needs kernel headers so that DKMS can compile the kernel module:
sudo apt install linux-headers-$(uname -r)
sudo dnf install kernel-devel-$(uname -r)
Other install-time dependencies (dkms, gcc, libraries, etc.) are
declared by the packages themselves and will be pulled from the system
repositories automatically.
Install the AMI Driver
The V80 board’s PF0 function (device ID 0x50B4) is managed by the
AMI (AVED Management Interface) kernel module. Install it before the
rest of the SLASH stack — vrtd requires AMI to be bound to PF0 to
manage the board.
sudo apt install ./deb/ami_<version>_amd64.deb
sudo dnf install ./rpm/ami-<version>-1.<dist>.x86_64.rpm
Warning
If AMI is already installed on this system — for example, built from source or installed from a separate vendor package — the generated AMI package may conflict with the existing installation. Either remove the existing AMI installation before proceeding, or skip this step and ensure your installed AMI version is compatible with this SLASH release.
After installation, verify that ami is bound to PF0:
lspci -d 10ee:50b4 -k
You should see Kernel driver in use: ami.
Install Runtime Packages
When installing from local package files, list all packages explicitly so that the package manager can satisfy the inter-package dependencies in a single transaction:
sudo apt install \
./deb/slash-dkms_<version>_all.deb \
./deb/libslash_<version>_amd64.deb \
./deb/vrtd_<version>_amd64.deb \
./deb/libvrtd_<version>_amd64.deb \
./deb/libvrt_<version>_amd64.deb \
./deb/v80-smi_<version>_amd64.deb \
./deb/slashkit_<version>_amd64.deb
sudo dnf install \
./rpm/slash-dkms-<version>-1.<dist>.noarch.rpm \
./rpm/libslash-<version>-1.<dist>.x86_64.rpm \
./rpm/vrtd-<version>-1.<dist>.x86_64.rpm \
./rpm/libvrtd-<version>-1.<dist>.x86_64.rpm \
./rpm/libvrt-<version>-1.<dist>.x86_64.rpm \
./rpm/v80-smi-<version>-1.<dist>.x86_64.rpm \
./rpm/slashkit-<version>-1.<dist>.x86_64.rpm
Note
The slash metapackage and metapackage-based installs
(sudo apt install slash) only work when the packages are served
from a configured APT or DNF/YUM repository. Installing a bare
metapackage .deb or .rpm from a local file will fail because
the package manager cannot resolve its dependencies against local
files.
After installation, DKMS automatically compiles and inserts the kernel module for the running kernel. Verify it loaded:
lsmod | grep slash
Start and Enable the Daemon
The vrtd package installs a systemd service and socket. Enable it so
that it starts on boot and is running now:
sudo systemctl enable --now vrtd
Check that the board is reachable through the daemon:
v80-smi list
You should see one entry per V80 board with all four readiness indicators passing (PF0, PF1, PF2, VRTD).
Program the Board
Note
This step assumes the AMI driver is already bound to PF0
(10ee:50b4). If your V80 has never been programmed with AVED — for
example, a brand-new board — first complete
Bootstrapping with AVED to install AVED via JTAG.
After installing the packages, the board’s flash memory must be programmed with the static shell before the system can be used. This step is required:
on the first install of SLASH, and
when upgrading to a version that changes the static shell (noted in the release notes).
It is not required after crashes, daemon restarts, or other normal operations — SLASH reads from flash but never writes to it during regular use.
Program the primary flash partition (replace <BDF> with the bus address
from v80-smi list, e.g. 03:00):
# For Ubuntu 22.04
sudo ami_tool cfgmem_program -d <BDF> -t primary -p 0 \
-i /usr/lib/python3.10/dist-packages/slashkit/resources/static_shell/amd_v80_gen5x8_25.1.pdi
# For Rocky 9
sudo ami_tool cfgmem_program -d <BDF> -t primary -p 0 \
-i /usr/lib/python3.9/site-packages/slashkit/resources/static_shell/amd_v80_gen5x8_25.1.pdi
After programming completes, reboot the system for the new flash contents to take effect:
sudo reboot
Install Development Packages
If you are writing applications against the VRT API or compiling HLS kernels, install the development metapackage:
sudo apt install \
./deb/libslash-dev_<version>_amd64.deb \
./deb/libvrtd-dev_<version>_amd64.deb \
./deb/libvrt-dev_<version>_amd64.deb \
./deb/slashkit_<version>_amd64.deb
sudo dnf install \
./rpm/libslash-devel-<version>-1.<dist>.x86_64.rpm \
./rpm/libvrtd-devel-<version>-1.<dist>.x86_64.rpm \
./rpm/libvrt-devel-<version>-1.<dist>.x86_64.rpm \
./rpm/slashkit-<version>-1.<dist>.x86_64.rpm
This installs:
C++ headers under
/usr/include/vrt/,/usr/include/vrtd/, and/usr/include/slash/CMake package files under
/usr/lib/cmake/The
slashkitlinker and theSlashToolsCMake module
CMake projects can then discover VRT with:
find_package(vrt REQUIRED CONFIG)
target_link_libraries(my_app PRIVATE vrt::vrt)
Before building HLS kernels or vrtbin files, source the Vivado and Vitis HLS environment in your shell:
source <path-to-vivado>/settings64.sh
source <path-to-vitis-hls>/settings64.sh
For csh/tcsh shells, use settings64.csh instead. SLASH has been
built and tested against Vivado/Vitis 2025.1; using other versions may
cause breakage.
See Use CMake Modules for details on using the CMake integration.
Install Emulation / Simulation Packages
To develop or run kernels in emulation or simulation without a physical
V80 board, install the slash-sim-emu subset:
sudo apt install \
./deb/libslash_<version>_amd64.deb \
./deb/libvrtd_<version>_amd64.deb \
./deb/libvrt_<version>_amd64.deb
For building emu/sim kernels, also install:
sudo apt install \
./deb/libslash-dev_<version>_amd64.deb \
./deb/libvrtd-dev_<version>_amd64.deb \
./deb/libvrt-dev_<version>_amd64.deb \
./deb/slashkit_<version>_amd64.deb
sudo dnf install \
./rpm/libslash-<version>-1.<dist>.x86_64.rpm \
./rpm/libvrtd-<version>-1.<dist>.x86_64.rpm \
./rpm/libvrt-<version>-1.<dist>.x86_64.rpm
For building emu/sim kernels, also install:
sudo dnf install \
./rpm/libslash-devel-<version>-1.<dist>.x86_64.rpm \
./rpm/libvrtd-devel-<version>-1.<dist>.x86_64.rpm \
./rpm/libvrt-devel-<version>-1.<dist>.x86_64.rpm \
./rpm/slashkit-<version>-1.<dist>.x86_64.rpm
No board and no kernel module are required on emulation/simulation hosts.
The daemon is still needed if any component connects to vrtd, but you
can point applications at the emulation platform directly.
See Emulation and Simulation for a walkthrough.
Upgrade and Removal
Note
If the new version changes the static shell, re-program the board flash after upgrading the packages. See Program the Board above.
Re-run scripts/package-deb.sh to produce the new packages, then
reinstall with apt install — apt handles upgrades transparently
when given local .deb files:
sudo apt install \
./deb/ami_<new-version>_amd64.deb \
./deb/slash-dkms_<new-version>_all.deb \
./deb/libslash_<new-version>_amd64.deb \
./deb/vrtd_<new-version>_amd64.deb \
./deb/libvrtd_<new-version>_amd64.deb \
./deb/libvrt_<new-version>_amd64.deb \
./deb/v80-smi_<new-version>_amd64.deb \
./deb/slashkit_<new-version>_amd64.deb
To remove all SLASH and AMI packages:
sudo apt remove ami slash-dkms libslash libvrtd libvrt \
v80-smi slashkit vrtd
sudo apt autoremove
Re-run scripts/package-rpm.sh, then upgrade:
sudo dnf upgrade \
./rpm/ami-<new-version>-1.<dist>.x86_64.rpm \
./rpm/slash-dkms-<new-version>-1.<dist>.noarch.rpm \
./rpm/libslash-<new-version>-1.<dist>.x86_64.rpm \
./rpm/vrtd-<new-version>-1.<dist>.x86_64.rpm \
./rpm/libvrtd-<new-version>-1.<dist>.x86_64.rpm \
./rpm/libvrt-<new-version>-1.<dist>.x86_64.rpm \
./rpm/v80-smi-<new-version>-1.<dist>.x86_64.rpm \
./rpm/slashkit-<new-version>-1.<dist>.x86_64.rpm
To remove:
sudo dnf remove ami slash-dkms libslash libvrtd libvrt v80-smi slashkit vrtd
Note
Removing slash-dkms automatically removes the kernel module from
DKMS management and unloads it if currently loaded.
Troubleshooting
Kernel module did not load after install
DKMS compiles during package installation. If headers were missing at that point, install them and rebuild:
sudo apt install linux-headers-$(uname -r) # Debian/Ubuntu sudo dkms build slash/0.1 sudo dkms install slash/0.1
vrtd fails to start
Check the journal for errors:
sudo journalctl -u vrtd --no-pagerCommon causes: kernel module not loaded, or board not detected by the OS (check
lspci -d 10ee:).
v80-smi list shows no boards
Verify the module is loaded (
lsmod | grep slash) and that the daemon is running (systemctl status vrtd).
Permission denied
The user must be in the
vrtadmingroup:sudo usermod -aG vrtadmin <username>Log out and back in for the change to take effect.