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
Tool: https://github.com/Xilinx/gen-machine-conf/blob/main/README.md
gen-machine-confFollow for more: Custom Hardware Development AMD Versal™ device portfolio , Overview of `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 fulloption generates a complete device tree for the programmable logic.The output
pl.dtsishould 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
Yocto Class: https://github.com/Xilinx/meta-xilinx/blob/rel-v2024.2/meta-xilinx-core/classes-recipe/dfx_user_dts.bbclass
dfx-user-dtsInstructions: https://github.com/Xilinx/meta-xilinx/blob/rel-v2025.2/docs/README.dfx.user.dts.md
Steps:
Add the
dfx-user-dtsclass to your Yocto recipe.Create a shell.json
Follow the README instructions to update your device tree for dfx configuration:
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/xilinxon 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
https://github.com/Xilinx/gen-machine-conf/blob/main/README.md
https://github.com/Xilinx/meta-xilinx/blob/rel-v2025.2/docs/README.dfx.user.dts.md
Use
gen-machine-conf([1] [2]) to create apl.dtsiby using the-g fulloption. This will accomplish steps 1-4 of the generic steps.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, noshell.jsonis needed)Create a shell.json
Run
dfx-mgrpointing 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.