AMD EDF - Dynamic Function eXchange using AMD's Yocto Project recipes

AMD EDF - Dynamic Function eXchange using AMD's Yocto Project recipes

Overview

This page describes how to implement Dynamic Function eXchange (DFX) on AMD devices using AMD’s Yocto Project recipes. It focuses on automating the device tree and DFX manager setup so that partial bitstreams can be loaded and swapped at runtime in a Linux system.

The Dynamic Function eXchange flow uses instructions

1. Generate the pl.dtsi Using gen-machine-conf

Command Example:

# Using --template option $ gen-machine-conf parse-sdt --template <sources/meta-amd-adaptive-socs/meta-amd-adaptive-socs-bsp/conf/machineyaml/template-yaml-file> --hw-description <path-to-sdt-handoff-dir> -O <machine-override> --machine-name <machine-name> or # Using without template and with custom layer $ gen-machine-conf parse-sdt --hw-description <path-to-sdt-handoff-dir> \ -c <path-to-layer>/sources/meta-custom-bsp/conf -g full -O <machine-override> --machine-name <machine-name>
  • The -g full option generates a complete device tree for the programmable logic.

  • The output pl.dtsi should match the hardware described in your post-boot module.

Tip: Ensure your hardware design is finalized before generating the pl.dtsi.


2. Integrate DFX Configuration with dfx-user-dts

Steps:

  1. Add the dfx-user-dts class to your Yocto recipe.

  2. Create a shell.json

  3. Follow the README instructions to update your device tree for dfx configuration:

https://github.com/Xilinx/meta-xilinx/blob/rel-v2025.2/docs/README.dfx.user.dts.md#build-instructions-to-create-firmware-recipes-using-dfx_user_dts-bbclass

Note: For segmented configuration, you do not need a shell.json file.


3. Deploy and Run dfx-mgr

  • Purpose: Manages loading of dfx configuration data at runtime.

  • Firmware Path: /lib/firmware/xilinx

Command Example:

dfx-mgr-client -load <Package>
  • Ensure your partial bitstreams or configuration files are placed in /lib/firmware/xilinx on your target device.


Building a compatible PL design payload and creating a Firmware Bundle (Device Tree Overlay)

VEK385 example Follow: Hardware Application Development

Deploying the PL firmware application onto target

Follow: Hardware Application Development

 

Deploying the PL firmware application onto target

Hardware Application Development

 

References & Further Reading

 

  1. Use gen-machine-conf ([1] [2]) to create a pl.dtsi by using the -g full option. This will accomplish steps 1-4 of the generic steps.

  2. Use the dfx-user-dts ([3]) file, following the instructions on this README. This should accomplish steps 5,6, and 8 of the generic steps (note that for Segmented configuration, no shell.json is needed)

  3. Create a shell.json

  4. Run dfx-mgr pointing to /lib/firmware/xlinx.

Trademarks

Yocto Project and all related marks and logos are trademarks of The Linux Foundation. This website is not, in any way, endorsed by the Yocto Project or The Linux Foundation.

Linux® is the registered trademark of Linus Torvalds in the U.S. and other countries.