Skip to content

Update the SLASH_ALVEO flow for SLASH's renamed slashkit linker - #1630

Merged
auphelia merged 7 commits into
Xilinx:devfrom
merkelmarrow:fix/slash-linker-rename
Jul 29, 2026
Merged

Update the SLASH_ALVEO flow for SLASH's renamed slashkit linker#1630
auphelia merged 7 commits into
Xilinx:devfrom
merkelmarrow:fix/slash-linker-rename

Conversation

@merkelmarrow

@merkelmarrow merkelmarrow commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

The V80 SLASH_ALVEO backend invokes the SLASH linker as "v80++". The current SLASH release (v1.0) renamed that tool to "slashkit", so SlashLink fails to link. This PR updates every instance of v80++ to slashkit and wires it through the heavy tool resolver (resolve_xilinx_tool).

This is a breaking change for:

  • anyone using pre-v1.0 SLASH with FINN's SlashLink (I don't think that's anyone at the moment).
  • anyone running a CI setup that shells out heavy processes to a compute farm (FINN_TOOL_DIR_OVERRIDE). A new slashkit shim needs to be added to the tool dir overrides, all slashkit invocations by FINN will fail in such a CI setup until this is done.

Two related dockerfile issues were also fixed:

  • The linker deb is now installed after an apt-get update, standard best practice and slashkit declares apt dependencies such as python3-jinja2 that the image doesn't already install, so the local deb install needs current package lists (would fail against stale lists cached in an earlier layer).
  • The final USER references the literal USERNAME instead of $USERNAME so the image default user was an account that doesn't exist (this affects any image that is layered from FINN's). This was fixed.

Testing

  • New unit tests in tests/fpgadataflow/test_slash_link.py that test command construction for hw/sim, kernel list assembly.
  • One xfailing test added because SlashLink doesn't yet pass the synthesis clock period to the linker (follow-up work).
  • E2E test ongoing.

@merkelmarrow

Copy link
Copy Markdown
Contributor Author

E2E test was successful (SLASH_ALVEO build of the cybersecurity MLP to a .vbin).

@merkelmarrow
merkelmarrow marked this pull request as ready for review July 16, 2026 14:07
@merkelmarrow

Copy link
Copy Markdown
Contributor Author

Want to improve the tests.

@merkelmarrow
merkelmarrow marked this pull request as draft July 16, 2026 17:37
Move the SLASH linker argv assembly out of SlashLink.apply into a pure
_slash_link_command helper. Behaviour is unchanged: the command still
invokes the linker binary passed by the caller. This isolates the
invocation so the linker command can be tested without a full dataflow
model.

Signed-off-by: Marco Blackwell <mblackwe@amd.com>
SLASH renamed its v80++ linker to slashkit with no alias, so SlashLink
could no longer find the binary. Resolve through resolve_xilinx_tool
("slashkit") so FINN_TOOL_DIR_OVERRIDE shims apply. Add util tests for
argv construction and for resolver integration via a monkeypatched shim
path.

Signed-off-by: Marco Blackwell <mblackwe@amd.com>
The SLASH linker deb (slashkit) declares apt dependencies
(python3-jinja2 and others) that the FINN image does not already
install, so apt must fetch them from the package repositories when the
local deb is installed. Run apt-get update first so this does not fail
against stale package lists in a cached image layer.

Signed-off-by: Marco Blackwell <mblackwe@amd.com>
The USERNAME build arg names the account created with useradd, but the
final USER directive used the literal USERNAME instead of $USERNAME, so
the image's default user is an account that does not exist. Use
$USERNAME so images layered FROM this one run as the created user.

Signed-off-by: Marco Blackwell <mblackwe@amd.com>
SLASH renamed its linker to slashkit, so the packaging plumbing that
still named v80++ was misleading and pointed users at a package that no
longer exists. Rename the V80PP_DEB_PACKAGE environment variable to
SLASHKIT_DEB_PACKAGE, the copied deb from v80pp.deb to slashkit.deb, and
the build arg, comment, prompt, and getting_started docs to match. This
is a breaking change for anyone setting the old variable. There is no
compatibility fallback. See getting_started.rst for the renamed variable.

Signed-off-by: Marco Blackwell <mblackwe@amd.com>
@merkelmarrow
merkelmarrow force-pushed the fix/slash-linker-rename branch from 224ac8a to 24da3dd Compare July 27, 2026 20:17
@merkelmarrow

Copy link
Copy Markdown
Contributor Author

Force push:

  • rebased on dev
  • improved slash tests and moved them to util (fpgadataflow test is coming)
  • removed xfailing test since passing the parameter wouldn't do anything anyway (--clock-hz is not propagated as a Vivado timing constraint SLASH#98)
  • updated getting_started.rst
  • added _slash_link_argv() wrapper so integration with the tool resolver is testable (alveo_build.py)

@merkelmarrow
merkelmarrow marked this pull request as ready for review July 27, 2026 20:26
@quetric

quetric commented Jul 28, 2026

Copy link
Copy Markdown
Collaborator

removed xfailing test since passing the parameter wouldn't do anything anyway (Xilinx/SLASH#98)

@merkelmarrow This is a bug we're actively working to fix - see Xilinx/SLASH#169 - perhaps just disable the test until the fix is merged.

@merkelmarrow

Copy link
Copy Markdown
Contributor Author

removed xfailing test since passing the parameter wouldn't do anything anyway (Xilinx/SLASH#98)

@merkelmarrow This is a bug we're actively working to fix - see Xilinx/SLASH#169 - perhaps just disable the test until the fix is merged.

The xfailing test was just an awkward reminder to add the feature later, thanks for fixing. I'll fold in the clock-hz arg for SlashLink in FINN later

@auphelia auphelia left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you @merkelmarrow !

@auphelia
auphelia merged commit f32a5bb into Xilinx:dev Jul 29, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants