Getting Started with Vitis
Navigating Content by Design Process
Vitis Software Platform Release Notes
What's New
Supported Platforms
Changed Behavior
Known Issues
Installation
Installation Requirements
Vitis Software Platform Installation
Installing the Vitis Software Platform
Installing Embedded Platforms
Setting Up the Environment to Run the Vitis Software Platform
Getting Started with the Vitis Software Platform
Vitis Unified Software Platform Overview
Vitis Software Development Workflow
Workspace Structure in the Vitis Software Platform
Migrating to the Vitis Software Platform from Xilinx SDK
Comparing Workflows in the Vitis Software Platform and SDK
Using the Vitis IDE
Develop
Vitis Command Options
Managing Platforms and Repositories
Target Platform
Creating a Hardware Design (XSA File)
Creating a Platform Project from XSA
Customizing a Pre-Built Platform
Adding a Domain to an Existing Platform
Adding a Standalone Domain
Adding a FreeRTOS Domain
Adding a Linux Domain
Configuring a Domain
Domain Overview Page
Board Support Package Settings Page
Switching FSBL Targeting Processor
Modifying Source Code for FSBL and PMU Firmware
Modifying the Domain Sources (Driver and Library Code)
Creating a Repository
Adding the Repository
Resetting BSP Sources for a Domain
Updating the Hardware Specification
Applications
Creating a Standalone Application Project
Creating a Linux Application Project
Managing Multiple Applications in a System Project
Creating and Building Applications for XSA Exported from the Vivado Design Suite
Working with Application Projects
Building Projects
Build Configurations
Changing the Build Configuration
Adding Symbols or Definitions
Adding Libraries and Library Paths
Specifying the Linker Options
Specifying Debug and Optimization Compiler Flags
Specifying Miscellaneous Compiler Flags
Restoring Build Configuration
Makefiles
Debugging Projects
Hardware Debug Target
Working with GDB
Linker Scripts
Generating a Linker Script for an Application
Basic Page
Advanced Page
Manually Adding the Linker Script
Modifying a Linker Script
Changing a Referenced Domain
Creating a Library Project
Creating a New Zynq UltraScale+ MPSoC FSBL Application Project
User Makefile Flow
Creating a User Application Template
Accessing User Application Templates
Using Custom Libraries in Application Projects
Version Control with Git
Using the Git Import Wizard
Importing Projects from a Local Git Repository
Solving Missing Projects
Team Actions
Git Ignore File Creation
Run, Debug, and Optimize
Run Application Project
Launch Configurations
Main Page
Application Page
Target Setup Page
Profiler
Creating or Editing a Launch Configuration
Customizing Launch Configurations
Target Connections
Creating a New Target Connection
Setting Custom JTAG Frequency
Establishing a Target Connection
Viewing Memory Contents
Dump/Restore Memory
Viewing Target Registers
Viewing IP Register Details
Debug Application Project
Using the Standalone Debug Flow
System Debugger Supported Design Flows
Standalone Application Debug Using Xilinx System Debugger
Linux Application Debugging with System Debugger
Troubleshooting
My application already exists in the Linux target. How can I tell System Debugger to use my existing application, instead of downloading the application?
Attach and Debug using Xilinx System Debugger
Standalone Application Debug using System Debugger on QEMU
Debugging an Application on Hardware using GDB
Debugging an Application on the Emulator (QEMU)
Running and Debugging Applications under a System Project Together
Using a Remote Host with System Debugger
Exporting Registers from the Vitis IDE
OS Aware Debugging
Enabling OS Aware Debug
Process/Thread Level Debugging
Debugging a Process from main()
Debugging a Loadable Kernel Module
Xen Aware Debugging
Enabling Xen Awareness
Debugging Hypervisor
Debugging a Dom-0/Dom-U Kernel
Debugging Dom-0/Dom-U User Space Processes
Debugging Self-Relocating Programs
Cross-Triggering
Enable Cross-Triggering
Cross-Triggering in Zynq Devices
Cross-Triggering in Zynq UltraScale+ MPSoCs
Cross-Triggering in Versal Devices
Use Cases
FPGA to CPU Triggering
PTM to CPU Triggering
CPU to CPU Triggering
XSCT Cross-Triggering Commands
Profile/Analyze
TCF Profiling
gprof Profiling (Zynq-7000 SoC)
Specifying Profiler Configuration
Setting Up the Hardware for Profiling
Setting Up the Software for Profiling
Setting up the Domain
Setting Up the Software Application
Viewing the Profiling Results
Profiling Linux Applications with System Debugger
Non-Intrusive Profiling for MicroBlaze Processors
Specifying Non-Intrusive Profiler Configuration
Viewing the Non-Intrusive Profiling Results
FreeRTOS Analysis using STM
Optimize: Performance Analysis
Working with the Performance Analysis Perspective
Explorer View
Deleting Supplementary Files
Link with Editor
Exporting a Trace Package
Importing a Trace Package
Events Editor
Searching and Filtering Events
Searching an Event
Filtering an Event
Bookmarking an Event
Histogram View
Colors View
Filters View
Time Chart View
Analysis Views
Performance Session Manager
Configure Session
Modify ATG Configuration
System Performance Modeling
Predefined Design Flow
System Performance Modeling Using the Predefined Design
Creating the System Performance Modeling Project
Selecting an ATG Traffic Configuration
Configure FSBL Parameters
User-Defined Flow
System Performance Modeling Using a User-Defined Flow
Limitations
Utilities for System Packaging
Creating a Boot Image
Program Flash
Creating a Bootable Image and Program the Flash
Flash Programming
Vitis Utilities
Xilinx Software Command-Line Tool
Program Device
Dump/Restore Data File
Launch Shell
Project Export and Import
Export a Vitis Project
Import a Vitis Project
Generating Device Tree
Embedded Software Development Use Cases in the Vitis Software Platform
Debugging an Application using the User-Modified/Custom FSBL
Creating a Hello World Application
Modifying the Source Code of the FSBL in Platform
Modifying the BSP Settings of the FSBL in Platform
Debugging the “Hello World” Application using the Modified FSBL
Migrating an SDK Project to the Vitis Software Platform
Bootgen Tool
Introduction
Navigating Content by Design Process
Installing Bootgen
Boot Time Security
Boot Image Layout
Zynq-7000 SoC Boot and Configuration
Zynq-7000 SoC Boot Image Layout
Zynq-7000 SoC Boot Header
Zynq-7000 SoC Register Initialization Table
Zynq-7000 SoC Image Header Table
Zynq-7000 SoC Image Header
Zynq-7000 SoC Partition Header
Zynq-7000 SoC Partition Attribute Bits
Zynq-7000 SoC Authentication Certificate
Zynq-7000 SoC Authentication Certificate Header
Zynq-7000 SoC Boot Image Block Diagram
Zynq UltraScale+ MPSoC Boot and Configuration
Zynq UltraScale+ MPSoC Boot Image
Zynq UltraScale+ MPSoC Boot Header
Zynq UltraScale+ MPSoC Boot Header Attribute Bits
Zynq UltraScale+ MPSoC Register Initialization Table
Zynq UltraScale+ MPSoC PUF Helper Data
Zynq UltraScale+ MPSoC Image Header Table
Zynq UltraScale+ MPSoC Image Header
Zynq UltraScale+ MPSoC Partition Header
Zynq UltraScale+ MPSoC Partition Attribute Bits
Zynq UltraScale+ MPSoC Authentication Certificates
Zynq UltraScale+ MPSoC Authentication Certification Header
Zynq UltraScale+ MPSoC Secure Header
Zynq UltraScale+ MPSoC Boot Image Block Diagram
Versal ACAP Boot Image Format
Versal ACAP Boot Header
Boot Header Attributes
Versal ACAP Image Header Table
Versal ACAP Image Header
Versal ACAP Partition Header
Versal ACAP Authentication Certificates
Versal ACAP Authentication Certification Header
Creating Boot Images
Boot Image Format (BIF)
BIF Syntax and Supported File Types
BIF Syntax for Versal ACAP
Attributes
Using Bootgen Interfaces
Bootgen GUI Options
Using Bootgen on the Command Line
Commands and Descriptions
Boot Time Security
Using Encryption
Encryption Process
Decryption Process
Encrypting Zynq-7000 Device Partitions
Encrypting Zynq MPSoC Device Partitions
Operational Key
Rolling Keys
Gray/Obfuscated Keys
Key Generation
Black/PUF Keys
Multiple Encryption Key Files
Encrypting Versal Device Partitions
Rolling Keys
Key Generation
Black/PUF Keys
Meta Header Encryption
Using Authentication
Signing
Verifying
Zynq UltraScale+ MPSoC Authentication Support
NIST SHA-3 Support
Bitstream Authentication Using External Memory
User eFUSE Support with Enhanced RSA Key Revocation
Key Generation
PPK Hash for eFUSE
Versal Authentication Support
Using HSM Mode
Creating a Boot Image Using HSM Mode: PSK is not Shared
Creating a Zynq-7000 SoC Device Boot Image using HSM Mode
Creating a Zynq UltraScale+ MPSoC Device Boot Image using HSM Mode
Creating a Versal Device Boot Image using HSM
Generating the PDI
HSM Mode Steps
FPGA Support
Encryption and Authentication
HSM Mode
Use Cases and Examples
Zynq MPSoC Use Cases
Simple Application Boot on Different Cores
PMU Firmware Load by BootROM
PMU Firmware Load by FSBL
Booting Linux
Encryption Flow: BBRAM Red Key
Encryption Flow: Red Key Stored in eFUSE
Encryption Flow: Black Key Stored in eFUSE
Encryption Flow: Black Key Stored in Boot Header
Encryption Flow: Gray Key Stored in eFUSE
Encryption Flow: Gray Key Stored in Boot Header
Operational Key
Using Op Key to Protect the Device Key in a Development Environment
Single Partition Image
Authentication Flow
BIF File with SHA-3 eFUSE RSA Authentication and PPK0
XIP
Split with "Offset" Attribute
Versal ACAP Use Cases
Bootloader, PMC_CDO
Bootloader, PMC_CDO with Load Address
Enable Checksum for Bootloader
Bootloader, PMC_CDO, PL CDO, NPI
Bootloader, PMC_CDO, PL CDO, NPI, PS CDO, and PS ELFs
AI Engine Configuration and AI Engine Partitions
Appending New Partitions to Existing PDI
RSA Authentication
ECDSA Authentication
AES Encryption
AES Encryption with Key Rolling
AES Encryption with Multiple Key Sources
AES Encryption and Authentication
Replacing PLM from an Existing PDI
BIF Attribute Reference
aarch32_mode
aeskeyfile
a_hwrot
alignment
auth_params
authentication
big_endian
bbram_kek_iv
bh_kek_iv
bh_keyfile
bh_key_iv
bhsignature
blocks
boot_device
bootimage
bootloader
bootvectors
boot_config
checksum
copy
core
delay_handoff
delay_load
destination_cpu
destination_device
early_handoff
efuse_kek_iv
efuse_user_kek0_iv
efuse_user_kek1_iv
encryption
exception_level
familykey
file
fsbl_config
headersignature
hivec
id
image
init
keysrc
keysrc_encryption
load
metaheader
name
offset
parent_id
partition
partition_owner, owner
partition_type
pid
pmufw_image
ppkfile
presign
pskfile
puf_file
reserve
s_hwrot
split
spkfile
spksignature
spk_select
sskfile
startup
trustzone
type
udf_bh
udf_data
xip_mode
Command Reference
arch
authenticatedjtag
bif_help
dual_ospi_mode
dual_qspi_mode
dump
dump_dir
efuseppkbits
encrypt
encryption_dump
fill
generate_hashes
generate_keys
h, help
image
log
nonbooting
o
p
padimageheader
process_bitstream
read
spksignature
split
verify
verify_kdf
w
zynqmpes1
Initialization Pairs and INT File Attribute
CDO Utility
Accessing
Usage
Command Line Options
Address Filter File
Examples
Converting Binary to Source without Annotations
Converting Binary to Source with Annotations
Editing Binary CDO File
Converting Source to Binary
Bootgen Utility
Xilinx Software Command-Line Tool
Xilinx Software Command-Line Tool
System Requirements
XSCT Commands
Target Connection Management
connect
disconnect
targets
gdbremote connect
gdbremote disconnect
Target Registers
rrd
rwr
Program Execution
state
stop
con
stp
nxt
stpi
nxti
stpout
dis
print
locals
backtrace
profile
mbprofile
mbtrace
Target Memory
mrd
mwr
osa
memmap
Target Download FPGA/BINARY
dow
verify
fpga
Target Reset
rst
IPI commands to Versal PMC
plm
plm copy-debug-log
plm set-debug-log
plm set-log-level
plm log
Target Breakpoints/Watchpoints
bpadd
bpremove
bpenable
bpdisable
bplist
bpstatus
Jtag UART
jtagterminal
readjtaguart
Miscellaneous
loadhw
unloadhw
mdm_drwr
mb_drwr
mdm_drrd
mb_drrd
configparams
version
xsdbserver start
xsdbserver stop
xsdbserver disconnect
xsdbserver version
JTAG Access
jtag targets
jtag sequence
jtag device_properties
jtag lock
jtag unlock
jtag claim
jtag disclaim
jtag frequency
jtag skew
jtag servers
Target File System
tfile open
tfile close
tfile read
tfile write
tfile stat
tfile lstat
tfile fstat
tfile setstat
tfile fsetstat
tfile remove
tfile rmdir
tfile mkdir
tfile realpath
tfile rename
tfile readlink
tfile symlink
tfile opendir
tfile readdir
tfile copy
tfile user
tfile roots
tfile ls
SVF Operations
svf config
svf generate
svf mwr
svf dow
svf stop
svf con
svf delay
Device Configuration System
device program
device status
Vitis Projects
openhw
closehw
getaddrmap
getperipherals
repo
platform
platform active
platform clean
platform config
platform create
platform generate
platform list
platform report
platform read
platform remove
platform write
domain
domain active
domain config
domain create
domain list
domain remove
domain report
bsp
bsp config
bsp getdrivers
bsp getlibs
bsp getos
bsp listparams
bsp regenerate
bsp removelib
bsp setdriver
bsp setlib
bsp setosversion
library
library build
library clean
library create
library list
library remove
library report
setws
getws
app
app build
app clean
app config
app create
app list
app remove
app report
app switch
sysproj
sysproj build
sysproj clean
sysproj list
sysproj remove
sysproj report
importprojects
importsources
toolchain
XSCT Use Cases
Changing Compiler Options of an Application Project
Creating an Application Project Using an Application Template (Zynq UltraScale+ MPSoC FSBL)
Creating an FSBL Application Project Using Manually Created Domain (Zynq UltraScale+ MPSoC FSBL)
Creating a Bootable Image and Program the Flash
Debugging a Program Already Running on the Target
Debugging Applications on Zynq UltraScale+ MPSoC
Modifying BSP Settings
Performing Standalone Application Debug
Generating SVF Files
Running an Application in Non-Interactive Mode
Running Tcl Scripts
Switching Between XSCT and Vitis Integrated Development Environment
Using JTAG UART
Working with Libraries
Editing FSBL/PMUFW Source File
Editing FSBL/PMUFW Settings
Exchanging Files between Host Machine and Linux running on QEMU
Hardware Software Interface (HSI) Commands
XSCT Interface Examples
HSI Tcl Examples
Accessing Hardware Design Data
Creating Standalone Software Design and Accessing Software Information
Generating and Compiling Applications with Customized Compiler Settings and Memory Sections
Generating and Compiling BSP with Advanced Driver/Library/OS/Processor Configuration
Generating and Compiling BSP for a Multi-Block Design
HSI Input and Output Files and Specifications
Input Files
XSA
Software Repository
Output Files
Generating Libraries and Drivers
MDD, MLD, and Tcl
MSS Parameters
Drivers
Libraries
OS Block
Microprocessor Software Specification (MSS)
MSS Overview
MSS Format
Global Parameters
Instance-Specific Parameters
OS, Driver, Library, and Processor Block Parameters
MLD/MDD Specific Parameters
OS—Specific Specific Parameters
Processor—Specific Specific Parameters
Microprocessor Library Definition (MLD)
Microprocessor Library Definition Overview
MLD Library Definition Files
MLD Format Specification
TCL File Format Specification
MLD Parameter Descriptions
MLD Parameter Description Section
MLD Keywords
MLD Design Rule Check Section
MLD Tool Generation (Generate) Section
Microprocessor Driver Definition (MDD)
Microprocessor Driver Definition Overview
MDD Driver Definition Files
MDD Format Specification
MDD Format Examples
MDD Parameter Description
MDD Keywords
MDD Design Rule Check (DRC) Section
MDD Driver Generation (Generate) Section
Custom Driver
Microprocessor Application Definition (MAD)
Microprocessor Application Definition Overview
Microprocessor Application Definition Files
MAD Format Specification
MAD Format Example
HSI Commands
common::create_property
common::get_msg_config
common::get_param
common::get_property
common::help
common::list_param
common::list_property
common::list_property_value
common::load_features
common::register_proc
common::report_environment
common::report_param
common::report_property
common::reset_msg_config
common::reset_msg_count
common::reset_param
common::reset_property
common::set_msg_config
common::set_param
common::set_property
common::unregister_proc
common::version
hsi::add_library
hsi::close_hw_design
hsi::close_sw_design
hsi::create_comp_param
hsi::create_dt_node
hsi::create_dt_tree
hsi::create_node
hsi::create_sw_design
hsi::current_dt_tree
hsi::current_hw_design
hsi::current_hw_instance
hsi::current_sw_design
hsi::delete_objs
hsi::generate_app
hsi::generate_bsp
hsi::generate_target
hsi::get_arrays
hsi::get_cells
hsi::get_comp_params
hsi::get_drivers
hsi::get_dt_nodes
hsi::get_dt_trees
hsi::get_fields
hsi::get_hw_designs
hsi::get_hw_files
hsi::get_intf_nets
hsi::get_intf_pins
hsi::get_intf_ports
hsi::get_libs
hsi::get_mem_ranges
hsi::get_nets
hsi::get_nodes
hsi::get_os
hsi::get_pins
hsi::get_ports
hsi::get_sw_cores
hsi::get_sw_designs
hsi::get_sw_interfaces
hsi::get_sw_processor
hsi::open_hw_design
hsi::open_sw_design
hsi::set_repo_path
Embedded Design Tutorials
Drivers and Libraries
Additional Resources and Legal Notices
Xilinx Resources
Documentation Navigator and Design Hubs
Revision History
Please Read: Important Legal Notices