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 ]
-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.
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).