Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
2df6ce0
fix: update Vivado argument handling to derive from PATH and raise er…
taraxacum45e9a Jun 25, 2026
c9e59a8
feature/compute_only_platform: Added the linker changes skeleton. TOD…
hpc-aulmamei May 20, 2026
8465912
Added compute shell tcl scripts.
hpc-aulmamei May 21, 2026
7ea3417
Updated pblock constraints to get closer to timing closure.
hpc-aulmamei Jun 5, 2026
adff486
Raised QoS for pcie2hbm to maximum value possible.
hpc-aulmamei Jun 5, 2026
4c93a0a
Increased hbm bandwidth in compute project.
hpc-aulmamei Jun 5, 2026
5938355
Added shelltype output product in system map.
hpc-aulmamei Jun 8, 2026
a6dd58f
Rebased from dev.
hpc-aulmamei Jul 12, 2026
40f8b98
Merge branch 'dev' of github.com:Xilinx/SLASH into feature/compute_on…
hpc-aulmamei Jul 12, 2026
49c19dc
Updated service project with dev
hpc-aulmamei Jul 12, 2026
2f592c9
Updated top.tcl for compute platform to not have stale inputs.
hpc-aulmamei Jul 12, 2026
978b725
pep8
hpc-aulmamei Jul 12, 2026
de2d1e0
pep8
hpc-aulmamei Jul 12, 2026
25b99b1
Updated apertures.
hpc-aulmamei Jul 12, 2026
684f25b
Filename changes.
hpc-aulmamei Jul 13, 2026
ed596be
feature/compute_only_platform: Added the linker changes skeleton. TOD…
hpc-aulmamei May 20, 2026
6719b3e
Added compute shell tcl scripts.
hpc-aulmamei May 21, 2026
b9d087f
Updated pblock constraints to get closer to timing closure.
hpc-aulmamei Jun 5, 2026
3a5b3c2
Raised QoS for pcie2hbm to maximum value possible.
hpc-aulmamei Jun 5, 2026
75faea8
Increased hbm bandwidth in compute project.
hpc-aulmamei Jun 5, 2026
7dd2c68
Added shelltype output product in system map.
hpc-aulmamei Jun 8, 2026
421262a
Rebased from dev.
hpc-aulmamei Jul 12, 2026
03bcff2
Updated service project with dev
hpc-aulmamei Jul 12, 2026
f908934
Updated top.tcl for compute platform to not have stale inputs.
hpc-aulmamei Jul 12, 2026
e9cc3bd
pep8
hpc-aulmamei Jul 12, 2026
3d9269a
pep8
hpc-aulmamei Jul 12, 2026
f5a6df9
Updated apertures.
hpc-aulmamei Jul 12, 2026
0e7b575
Filename changes.
hpc-aulmamei Jul 13, 2026
b7294d8
Merge branch 'feature/compute_only_platform_v2' of github.com:Xilinx/…
hpc-aulmamei Jul 16, 2026
457af5b
vrt,vrtd,smi: boot service/compute shell partition on reset
amd-vserbu Jul 17, 2026
c010a55
linker: drop stray jobs tclarg that broke static-shell install
amd-vserbu Jul 17, 2026
3b91be2
linker: fix service_layer.tcl relative path to dcmac resources
amd-vserbu Jul 17, 2026
7e63a75
smi,vrtd: keep track of currently running shelltype and be careful ar…
amd-vserbu Jul 17, 2026
bdca0ea
software: adapted to new hardware device ids
amd-vserbu Jul 20, 2026
b1aadfa
software: accept both old and new hardware id
amd-vserbu Jul 20, 2026
4935b42
smi: fix flash printing missing newline
amd-vserbu Jul 20, 2026
a0f412b
temporary fix for bar location
amd-vserbu Jul 20, 2026
6d07aaf
set shell type on reset
amd-vserbu Jul 20, 2026
71a21cf
change --shelltype to --shell-type for consistency
amd-vserbu Jul 20, 2026
c26f25a
revert top.tcl change
amd-vserbu Jul 20, 2026
d1126dc
add compute shell to packaging
amd-vserbu Jul 20, 2026
8d13c54
add compute shell to gitignore
amd-vserbu Jul 20, 2026
ef9af98
Merge pull request #165 from amd-vserbu/feature/compute_only_platform_v2
hpc-aulmamei Jul 21, 2026
09b1124
Merge remote-tracking branch 'origin/dev' into feature/compute_only_p…
hpc-aulmamei Aug 4, 2026
fbdb6f8
Merge branch 'feature/compute_only_platform_v2' of github.com:Xilinx/…
hpc-aulmamei Aug 4, 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
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,11 @@ driver/kcompat/.scratch/
# VBIN build directories
*.prj

# Root design build outputs
/linker/install.prj.compute/
/linker/slashkit/resources/static_shell/
/linker/slashkit/resources/static_shell_compute/

# Python virtual environment
.venv

Expand Down
19 changes: 13 additions & 6 deletions docs/explanation/pcie-topology.rst
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ Physical Functions
│ │
│ PF0 (.0) PF1 (.1) PF2 (.2) │
│ ami slash_qdma slash_ctl │
│ 0x50B4 0x50B5 0x50B6
│ 0x50B4 0x50C1 0x50C2
│ Management DMA BAR MMIO │
└──────────────────────────────────────────┘

Expand All @@ -39,20 +39,27 @@ Physical Functions
- AVED management interface — sensor readings, board identity, firmware
version.
* - PF1
- ``0x50B5``
- ``0x50C1``
- ``slash_qdma``
- ``/dev/slash_qdma_ctl<N>``
- Queue-based DMA subsystem — H2C and C2H data transfers for buffers and
streaming.
* - PF2
- ``0x50B6``
- ``0x50C2``
- ``slash_ctl``
- ``/dev/slash_ctl<N>``
- BAR MMIO access — kernel register reads and writes via memory-mapped
I/O.

All three PFs share vendor ID ``0x10EE`` (AMD/Xilinx).

.. note::

``0x50C1`` (PF1) and ``0x50C2`` (PF2) are the current device IDs. For
backward compatibility the ``slash`` driver and ``v80-smi`` also accept the
legacy IDs ``0x50B5`` (PF1) and ``0x50B6`` (PF2) — plus the AVED/V80P QDMA
ID ``0x50BD`` — so cards still carrying an older bitstream continue to work.

BDF Addressing
==============

Expand All @@ -79,7 +86,7 @@ Device Discovery
1. Enumerate ``/sys/bus/pci/devices/`` for entries with vendor ``0x10EE`` and
device ``0x50B4`` (PF0).
2. Extract the board BDF from the matching entry.
3. Verify that companion functions PF1 (``0x50B5``) and PF2 (``0x50B6``)
3. Verify that companion functions PF1 (``0x50C1``) and PF2 (``0x50C2``)
exist at the same bus and device.
4. Check that the correct kernel driver is bound to each function by
inspecting the ``driver`` symlink in sysfs.
Expand All @@ -102,10 +109,10 @@ Readiness Checks
- ``ami`` driver bound to ``0x50B4``
- AMI management driver not loaded
* - **PF1**
- ``slash_qdma`` driver bound to ``0x50B5``
- ``slash_qdma`` driver bound to ``0x50C1``
- QDMA driver not loaded
* - **PF2**
- ``slash_ctl`` driver bound to ``0x50B6``
- ``slash_ctl`` driver bound to ``0x50C2``
- Control driver not loaded
* - **VRTD**
- Daemon has registered the board
Expand Down
7 changes: 7 additions & 0 deletions docs/explanation/vrtbin-format.rst
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@ Schema

<SystemMap>
<Platform>Hardware</Platform>
<ShellType>service</ShellType>
<ClockFrequency>250000000</ClockFrequency>

<ServiceLayer>
Expand Down Expand Up @@ -115,6 +116,12 @@ Key elements:
One of ``Hardware``, ``Emulation``, or ``Simulation``. VRT maps this to
the ``vrt::Platform`` enum and selects the appropriate back-end.

``<ShellType>``
Hardware shell required by the design. Hardware vbins use ``service`` or
``compute``. VRT passes this to ``vrtd`` before programming so the daemon
can reset the board to the matching boot partition when needed. Legacy
vbins without this element are treated as ``service``.

``<ClockFrequency>``
Kernel clock frequency in Hz (e.g. ``250000000`` for 250 MHz).

Expand Down
12 changes: 6 additions & 6 deletions docs/reference/kernel-abi/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -33,12 +33,12 @@ may change when the module is unloaded and loaded again.

``/dev/slash_ctl<N>`` / ``/sys/class/slash/slash_ctl_<BDF>/device``
Provides BAR enumeration, MMIO access, and PCI device identity. Associated with PF2 (device ID
``10EE:50B6``). Examples: ``/dev/slash_ctl0``, ``/dev/slash_ctl1``,
``10EE:50C2``). Examples: ``/dev/slash_ctl0``, ``/dev/slash_ctl1``,
``/sys/class/slash/slash_ctl_0000:61:00.2/device``.

``/dev/slash_qdma_ctl<N>`` / ``/sys/class/slash/slash_qdma_ctl_<BDF>/device``
Manages DMA queue pairs for bulk data movement between host and card memory, as well as
reconfiguration. Associated with PF1 (device ID ``10EE:50B5``). Examples: ``/dev/slash_qdma_ctl0``,
reconfiguration. Associated with PF1 (device ID ``10EE:50C1``). Examples: ``/dev/slash_qdma_ctl0``,
``/dev/slash_qdma_ctl1``, ``/sys/class/slash/slash_qdma_ctl_0000:61:00.1/device``.

``/dev/slash_hotplug`` / ``/sys/class/slash/slash_hotplug``
Expand Down Expand Up @@ -111,7 +111,7 @@ matching QDMA control device.

- **Device file name:** ``/dev/slash_ctl<N>`` (e.g. ``/dev/slash_ctl0``)
- **Sysfs name:** ``slash_ctl_<PCI-BDF>`` (e.g., ``/sys/class/slash/slash_ctl_0000:61:00.2``)
- **Associated PCI function:** PF2, device ID ``10EE:50B6``
- **Associated PCI function:** PF2, device ID ``10EE:50C2``
- **Permissions:** ``0600`` (owner read/write)
- **Creation:** one per card, created when PF2 is probed during module load or PCI rescan
- **File operations:** ``open``, ``release``, and ``ioctl`` — no ``read``, ``write``, or ``mmap``
Expand All @@ -135,7 +135,7 @@ the BAR is present and usable for MMIO, its physical address, and its size.
struct slash_ioctl_device_info dev_info = { .size = sizeof(dev_info) };
ioctl(ctl_fd, SLASH_CTLDEV_IOCTL_GET_DEVICE_INFO, &dev_info);
/* dev_info.bdf → e.g. "0000:61:00.2" */
/* dev_info.vendor_id == 0x10EE, dev_info.device_id == 0x50B6 */
/* dev_info.vendor_id == 0x10EE, dev_info.device_id == 0x50C2 */

/* Enumerate all six BARs */
for (int i = 0; i < 6; i++) {
Expand Down Expand Up @@ -312,7 +312,7 @@ fd with a physical board and with the matching QDMA control device.
__u32 size; /* [in/out] ABI version */
char bdf[SLASH_PCI_BDF_LEN]; /* [out] PCI BDF string, NUL-terminated, e.g. "0000:61:00.2" */
__u16 vendor_id; /* [out] PCI vendor ID (0x10EE for AMD/Xilinx) */
__u16 device_id; /* [out] PCI device ID (0x50B6 for PF2) */
__u16 device_id; /* [out] PCI device ID (0x50C2 for PF2) */
__u16 subsystem_vendor_id; /* [out] PCI subsystem vendor ID */
__u16 subsystem_device_id; /* [out] PCI subsystem device ID */
};
Expand Down Expand Up @@ -351,7 +351,7 @@ buffer, buffer offset, device-side physical address, length, and direction.

- **Device file name:** ``/dev/slash_qdma_ctl<N>`` (e.g. ``/dev/slash_qdma_ctl0``)
- **Sysfs name:** ``slash_qdma_ctl_<PCI-BDF>`` (e.g. ``/sys/class/slash/slash_qdma_ctl_0000:61:00.1``)
- **Associated PCI function:** PF1, device ID ``10EE:50B5``
- **Associated PCI function:** PF1, device ID ``10EE:50C1``
- **Permissions:** ``0600``
- **Creation:** one per card, created when PF1 is probed
- **File operations:** ``open``, ``release``, ``ioctl`` on the control fd. DMA I/O is done on
Expand Down
7 changes: 6 additions & 1 deletion docs/reference/smi/commands.rst
Original file line number Diff line number Diff line change
Expand Up @@ -141,12 +141,17 @@ bus reset and rescan (hotplug) sequence.

.. code-block:: text

v80-smi reset -d <BDF>
v80-smi reset -d <BDF> [--shell-type <service|compute>]

.. option:: -d, --device <BDF>

Board address. **Required.**

.. option:: --shell-type <service|compute>

Shell to boot after reset. ``service`` selects boot partition 0 and
``compute`` selects boot partition 1. Defaults to ``service``.

write-static-shell
------------------

Expand Down
7 changes: 5 additions & 2 deletions docs/tutorials/admin/platform-setup.rst
Original file line number Diff line number Diff line change
Expand Up @@ -367,14 +367,17 @@ Each V80 board exposes three PCI functions:
- ``ami``
- AVED management interface
* - PF1
- ``0x50B5``
- ``0x50C1``
- ``slash_qdma``
- Queue-based DMA subsystem
* - PF2
- ``0x50B6``
- ``0x50C2``
- ``slash_ctl``
- BAR MMIO access (register reads/writes)

The legacy device IDs ``0x50B5`` (PF1) and ``0x50B6`` (PF2) are still accepted
as a fallback for cards carrying a pre-compute-platform bitstream.

For boards already visible over PCIe, check that all three functions appear
with their drivers bound:

Expand Down
20 changes: 14 additions & 6 deletions driver/slash_config.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,15 +23,19 @@
*
* The SLASH design exposes two PCI physical functions per card:
*
* - **PF1** (device 0x50B5, or 0x50BD on AVED/V80P designs) — QDMA
* function. Hosts the Xilinx QDMA IP used for high-throughput DMA
* transfers between host memory and the FPGA fabric.
* - **PF1** (device 0x50C1) — QDMA function. Hosts the Xilinx QDMA
* IP used for high-throughput DMA transfers between host memory and
* the FPGA fabric.
*
* - **PF2** (device 0x50B6) — Control function. Exposes PCI BARs
* - **PF2** (device 0x50C2) — Control function. Exposes PCI BARs
* that the host can mmap for register-level MMIO access to the
* FPGA design.
*
* Both functions share vendor ID 0x10EE (AMD/Xilinx).
*
* For backward compatibility the driver also binds the legacy device IDs
* used by pre-compute-platform designs (PF1 0x50B5, PF2 0x50B6) and the
* AVED/V80P QDMA function (0x50BD). New designs should use 0x50C1/0x50C2.
*/

#ifndef SLASH_CONFIG_H
Expand All @@ -42,7 +46,9 @@
/** AMD/Xilinx PCI vendor ID. */
#define SLASH_PCIE_VENDOR_ID 0x10EE
/** PCI device ID for the V80 SLASH control function. */
#define SLASH_PCIE_DEVICE_ID 0x50B6
#define SLASH_PCIE_DEVICE_ID 0x50C2
/** Legacy PCI device ID for the control function (pre-compute-platform designs). */
#define SLASH_PCIE_DEVICE_ID_LEGACY 0x50B6
/** Physical function number for the control/BAR-access interface. */
#define SLASH_PCIE_PF 2

Expand All @@ -51,7 +57,9 @@
/** AMD/Xilinx PCI vendor ID (same as control function). */
#define SLASH_QDMA_PCI_VENDOR_ID 0x10EE
/** PCI device ID for the V80 SLASH QDMA function. */
#define SLASH_QDMA_PCI_DEVICE_ID 0x50B5
#define SLASH_QDMA_PCI_DEVICE_ID 0x50C1
/** Legacy PCI device ID for the QDMA function (pre-compute-platform designs). */
#define SLASH_QDMA_PCI_DEVICE_ID_LEGACY 0x50B5
/** PCI device ID for the V80P/AVED QDMA function. */
#define SLASH_AVED_QDMA_PCI_DEVICE_ID 0x50BD
/** Physical function number for the QDMA DMA engine. */
Expand Down
12 changes: 7 additions & 5 deletions driver/slash_pcie.c
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,15 @@
*
* PCI driver for the SLASH control function (PF2).
*
* This driver binds to PCI device 10EE:50B6 (the V80 SLASH control
* function). On probe it creates a control device (slash_ctldev) that
* This driver binds to PCI device 10EE:50C2 (the V80 SLASH control
* function), or the legacy 10EE:50B6 used by pre-compute-platform
* designs. On probe it creates a control device (slash_ctldev) that
* exposes BAR information and dma-buf-backed BAR mappings to userspace,
* and registers the device with the hotplug subsystem so that it can
* be removed/reset/rescanned during FPGA reconfiguration.
*
* PF1 (the QDMA function, device 10EE:50B5) is handled by a separate
* PCI driver registered in slash_qdma.c.
* PF1 (the QDMA function, device 10EE:50C1, or legacy 10EE:50B5) is
* handled by a separate PCI driver registered in slash_qdma.c.
*/

#include "slash_pcie.h"
Expand All @@ -39,9 +40,10 @@
static int slash_pcie_probe(struct pci_dev *pdev, const struct pci_device_id *id);
static void slash_pcie_remove(struct pci_dev *pdev);

/* Match only the SLASH control function (PF2, device 0x50B6). */
/* Match the SLASH control function (PF2): new 0x50C2, or legacy 0x50B6. */
static const struct pci_device_id slash_pcie_ids[] = {
{PCI_DEVICE(SLASH_PCIE_VENDOR_ID, SLASH_PCIE_DEVICE_ID)},
{PCI_DEVICE(SLASH_PCIE_VENDOR_ID, SLASH_PCIE_DEVICE_ID_LEGACY)},
{0,}
};
MODULE_DEVICE_TABLE(pci, slash_pcie_ids);
Expand Down
12 changes: 7 additions & 5 deletions driver/slash_qdma.c
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,9 @@
* to provide queue-pair-based DMA transfers between host memory and the
* FPGA fabric.
*
* The QDMA subsystem binds to PF1 (PCI device ID 0x50B5, or 0x50BD on
* AVED/V80P designs), while the control device (slash_ctldev) binds to
* PF2 (device ID 0x50B6).
* The QDMA subsystem binds to PF1 (PCI device ID 0x50C1, or the legacy
* 0x50B5 / AVED 0x50BD), while the control device (slash_ctldev) binds to
* PF2 (device ID 0x50C2, or the legacy 0x50B6).
*
* Queue pair lifecycle:
* add -> start -> I/O (via anon_inode fd) -> stop -> del
Expand Down Expand Up @@ -723,11 +723,13 @@ static void slash_qdma_ioctl_info(struct slash_qdma_dev *qdma_dev,
/**
* slash_qdma_ids - PCI device ID table for the QDMA PF.
*
* Matches PF1 QDMA functions on AMD/Xilinx V80 cards, including the
* AVED/V80P device ID.
* Matches the PF1 QDMA function on AMD/Xilinx V80 cards: the current
* 0x50C1, the legacy 0x50B5 used by pre-compute-platform designs, and
* the AVED/V80P 0x50BD.
*/
static const struct pci_device_id slash_qdma_ids[] = {
{PCI_DEVICE(SLASH_QDMA_PCI_VENDOR_ID, SLASH_QDMA_PCI_DEVICE_ID)},
{PCI_DEVICE(SLASH_QDMA_PCI_VENDOR_ID, SLASH_QDMA_PCI_DEVICE_ID_LEGACY)},
{PCI_DEVICE(SLASH_QDMA_PCI_VENDOR_ID, SLASH_AVED_QDMA_PCI_DEVICE_ID)},
{0,}
};
Expand Down
4 changes: 2 additions & 2 deletions driver/tests/slash_test_helpers.h
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,8 @@

/* Documented PCI identity for SLASH cards. */
#define SLASH_TEST_VENDOR_ID 0x10EE
#define SLASH_TEST_PF1_DEV_ID 0x50B5 /* QDMA */
#define SLASH_TEST_PF2_DEV_ID 0x50B6 /* Control */
#define SLASH_TEST_PF1_DEV_ID 0x50C1 /* QDMA */
#define SLASH_TEST_PF2_DEV_ID 0x50C2 /* Control */

/*
* 16 TB NoC interconnect address map regions, from
Expand Down
38 changes: 27 additions & 11 deletions linker/slashkit/__main__.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,13 @@
from slashkit.emit.emu.project_gen import build_emu_project, package_emu_artifacts

from slashkit.emit.metadata.prog_image import build_vbin
from slashkit.core.command_config import LinkerConfiguration, Platform, InstallerConfiguration, CommandConfiguration
from slashkit.core.command_config import (
LinkerConfiguration,
Platform,
InstallerConfiguration,
CommandConfiguration,
ShellType,
)


def _format_duration(seconds: float) -> str:
Expand Down Expand Up @@ -79,6 +85,7 @@ def _sample_cpu_peak() -> None:

try:
import resource

start_rusage = resource.getrusage(resource.RUSAGE_SELF)
except Exception:
start_rusage = None
Expand All @@ -102,6 +109,7 @@ def _sample_cpu_peak() -> None:
if start_rusage is not None:
try:
import resource

end_rusage = resource.getrusage(resource.RUSAGE_SELF)
# ru_maxrss is in kilobytes on Linux; convert to MB.
rss_mb = end_rusage.ru_maxrss / 1024.0
Expand Down Expand Up @@ -132,11 +140,10 @@ def link(config: LinkerConfiguration) -> None:
build_emu_project(config)
else:
run_with_profiling("build_slash", lambda: build_slash_rm(config))
# Only build a service layer if ethernet is enabled
# Will be changed once more service layers become available
if config.networking_enabled:
run_with_profiling("build_service_layer",
lambda: build_service_layer_rm(config))
if config.shell_type == ShellType.SERVICE and config.networking_enabled:
run_with_profiling(
"build_service_layer", lambda: build_service_layer_rm(config)
)

if config.platform == Platform.SIMULATION:
pass
Expand All @@ -150,8 +157,9 @@ def link(config: LinkerConfiguration) -> None:
def static_shell_path(args) -> None:
file_name = "amd_v80_gen5x8_25.1_nofpt.pdi" if args.nofpt else \
"amd_v80_gen5x8_25.1.pdi"
traversable = resources.files(
"slashkit.resources.static_shell") / file_name
package = "slashkit.resources.static_shell_compute" \
if args.shell_type == "compute" else "slashkit.resources.static_shell"
traversable = resources.files(package) / file_name

with resources.as_file(traversable) as path:
if not path.is_file():
Expand All @@ -177,8 +185,12 @@ def main():
format="%(asctime)s %(levelname)s %(name)s:%(funcName)s: %(message)s",
)

ap = argparse.ArgumentParser(description="Utility to link VRT binaries (VBINs) from user IP cores.", conflict_handler="resolve", epilog=MAIN_HELP_EPILOG,
formatter_class=argparse.RawDescriptionHelpFormatter)
ap = argparse.ArgumentParser(
description="Utility to link VRT binaries (VBINs) from user IP cores.",
conflict_handler="resolve",
epilog=MAIN_HELP_EPILOG,
formatter_class=argparse.RawDescriptionHelpFormatter,
)
sub_parsers = ap.add_subparsers(required=True)

link_parser = sub_parsers.add_parser("link")
Expand All @@ -188,14 +200,18 @@ def main():
install_parser = sub_parsers.add_parser("install")
InstallerConfiguration.populate_argument_parser(install_parser)
install_parser.set_defaults(
config_class=InstallerConfiguration, operation=install_static_shell)
config_class=InstallerConfiguration, operation=install_static_shell
)

static_shell_path_parser = sub_parsers.add_parser(
"static-shell-path",
help="Print the installed static shell PDI path")
static_shell_path_parser.add_argument(
"--nofpt", action="store_true",
help="Print the no-FPT PDI path used for JTAG programming")
static_shell_path_parser.add_argument(
"--shell-type", choices=("service", "compute"), default="service",
help="Shell type to resolve (default: service)")
static_shell_path_parser.set_defaults(
config_class=None, operation=static_shell_path)

Expand Down
Loading
Loading