Packaging with Vitis and EDF - Packaging with Vitis and EDF - 2026.1 English - UG1701

Embedded Design Development Using Vitis User Guide (UG1701)

Document_ID
UG1701
Release_Date
2026-07-31
Version
2026.1 English

Vitis package automates updates to device tree overlays with memory reservations, domain configuration, and user DTSI overrides, and it prepares PL and AIE binaries. For EDF multi-stage boot (also called Segmented Configuration), Vitis package generates the PL.pdi and corresponding PL.dtbo, which separates hardware changes from the embedded OS.

For hardware emulation and single-stage boot, you must also update the boot artifacts. To do this, give Vitis package access to the extracted boot artifacts from EDF, either as custom artifacts or as prebuilt artifacts.

Pass the domain, memory definitions, user DTSI, and extracted boot artifacts either through the extensible and fixed XSAs or as advanced package arguments. Both methods let you automate the process with Vitis package through a zip container. With this change, you no longer need to provide the image-related parameters or each boot artifact individually as arguments.

For AMD Zynq™ UltraScale+™ MPSoC and AMD Zynq™ 7000 embedded platforms, use the following --package command:

v++ --package -t [hw_emu | hw] --platform <platform> input.xclbin [ -o <PL_PDI_NAME>.xclbin ]
Note: If you do not specify the output option (-o), the tool creates an output file named a.xclbin.

For Versal devices, the v++ --link command creates an .xsa file instead of an .xclbin file. In this case, provide the .xsa file to the package process to generate the .xclbin file.

The fixed.xsa behaves the same way whether you create it with Linking with the Vitis Integrated Flow or Linking with the Vitis Export to Vivado Flow. Use the following --package command for Versal devices:


v++ --package --debug --save-temps \
  --target [hw | hw_emu] \
  --platform fixed.xsa \
  --package.defer_aie_run \
  [ --package.out_dir <PATH_TO_PDI_OUTPUTS> ] \
  [ --advanced.param package.apuLinuxEdfMetadata=zocl.dtsi ] \
  [ --advanced.param package.userDtsPath=<USER>.dtsi ] \
  <PATH_TO_AIE>/libadf.a \
  -o <PL_PDI_NAME>.xclbin

For Versal platforms, the package process takes the .xsa file that the v++ --link command generates and the libadf.a file that the aiecompiler command produces, then integrates them into the output device binary.

Note: Use the advanced parameters for EDF metadata and user DTS to apply the domain, memory, user DTS, and boot artifacts directly to Vitis package if you did not already pass them through the XSA. See Vitis System Design tutorials for practical examples on using the parameters.

In the Vitis IDE, the package process is automated and the tool creates the required files as needed. In the command-line flow, specify the v++ --package command or add the [package] tag in the config file with the options needed for the job. The following example shows the command for hardware emulation:

v++ --package --config package.cfg ./aie_graph/libadf.a \
./project.xsa -o aie_graph.xclbin

The --config package.cfg option specifies a configuration file for the Vitis compiler that lists the options for the package process. The following example shows a configuration file:

platform=fixed.xsa
target=hw_emu
save-temps=1

[package]

out_dir=./emulation

For hardware emulation, the command takes the .xclbin or .xsa file as input and produces a script to launch emulation (launch_hw_emu.sh). To specify the output folder, use the --package.out_dir option. For more information about hardware emulation with EDF, see QEMU Based Development.

After you package the design, the AMD Vitis™ compiler generates a v++.package_summary that includes the packaging command and the log file. You can view the summary file in the Analysis view of the Vitis analyzer alongside the compile, link, and run summaries, as explained in Working with the Analysis View (Vitis Analyzer) in the Vitis Reference Guide (UG1702).