Ug908 Vivado Programming Debugging
Ug908 Vivado Programming Debugging
Ug908 Vivado Programming Debugging
of this document
Chapter 12: Viewing ILA Probe Data in the Waveform Viewer......... 256
ILA Data and Waveform Relationship...................................................................................256
Waveform Viewer Layout ...................................................................................................... 257
Waveform Viewer Operation ................................................................................................ 258
Removing Probes from the Waveform................................................................................. 259
Adding Probes to the Waveform........................................................................................... 260
Using Waveform ILA Trigger and Export Features ............................................................ 261
Using the Zoom Features ...................................................................................................... 262
Waveform Settings..................................................................................................................263
Customizing the Configuration............................................................................................. 264
Renaming Objects................................................................................................................... 268
Bus Radixes.............................................................................................................................. 270
Viewing Analog Waveforms................................................................................................... 271
Bus Plot Viewer........................................................................................................................273
Zoom Gestures........................................................................................................................ 276
Chapter 1
Introduction
• Hardware, IP, and Platform Development: Creating the PL IP blocks for the hardware
platform, creating PL kernels, functional simulation, and evaluating the Vivado® timing,
resource use, and power closure. Also involves developing the hardware platform for system
integration. Topics in this document that apply to this design process include:
• Board System Design: Designing a PCB through schematics and board layout. Also involves
power, thermal, and signal integrity considerations. Topics in this document that apply to this
design process include:
Getting Started
After successfully implementing your design, the next step is to run it in hardware by
programming the FPGA or ACAP and debugging the design in-system. All of the necessary
commands to perform programming of FPGAs and in-system debugging of the design are in the
Program and Debug section of the Flow Navigator in the Vivado® Integrated Design
Environment (IDE) (see the following figure).
Debug Terminology
ILA
The Integrated Logic Analyzer (ILA) feature allows you to perform in-system debugging of post-
implemented designs on an FPGA, SoC, or Versal® device. This feature should be used when
there is a need to monitor signals in the design. You can also use this feature to trigger on
hardware events and capture data at system speeds.
The ILA core can be instantiated in your RTL code or inserted post synthesis in the Vivado design
flow. Detailed documentation on the ILA core IP can be found in the Integrated Logic Analyzer
LogiCORE IP Product Guide (PG172).
Related Information
VIO
The Virtual Input/Output (VIO) debug feature can both monitor and drive internal FPGA, SoC, or
Versal ACAP signals in real time. In the absence of physical access to the target hardware, you
can use this debug feature to drive and monitor signals that are present on the real hardware.
This debug core needs to be instantiated in the RTL code, hence you need to know up-front,
what nets to drive. The IP Catalog lists this core under the Debug category. Detailed
documentation on the VIO core IP can be found in the Virtual Input/Output LogiCORE IP Product
Guide (PG159).
Related Information
IBERT
The Integrated Bit Error Ratio Tester (IBERT) Serial Analyzer design enables in-system serial I/O
validation and debug. This allows you to measure and optimize your high-speed serial I/O links in
your FPGA-based system. Xilinx recommends using the IBERT Serial Analyzer design when you
are interested in addressing a range of in-system debug and validation problems from simple
clocking and connectivity issues to complex margin analysis and channel optimization issues.
Xilinx recommends using the IBERT Serial Analyzer design when you are interested in measuring
the quality of a signal after a receiver equalization has been applied to the received signal. This
ensures that you are measuring at the optimal point in the TX-to-RX channel thereby ensuring
real and accurate data. Users can access this design by selecting, configuring, and generating the
IBERT core from the IP Catalog and selecting the Open Example Design feature of this core. See
Serial I/O Hardware Debugging Flows and Chapter 16: Debugging the Serial I/O Design in
Hardware for more details on the IBERT core and its usage methodology in the Vivado Design
Suite.
Related Information
JTAG-to-AXI Master
Note: The JTAG-to-AXI Master is not supported on Versal ACAP devices as the built-in CIPS AXI Master
interfaces can be used in combination with the Debug Packet Controller (DPC) to generate AXI
transactions without additional IP.
The JTAG-to-AXI Master debug feature is used to generate AXI transactions that interact with
various AXI full and AXI lite slave cores in a system that is running in hardware. Xilinx
recommends that you use this core to generate AXI transactions and debug/drive AXI signals
internal to an FPGA at run time. This core can be used in designs without processors as well.
The IP Catalog lists this core under the Debug category. Debugging Logic Designs in Hardware of
this guide has more details about the JTAG-to-AXI Master core and its usage methodology in the
Vivado Design Suite. Detailed documentation on the JTAG-to-AXI IP core can be found in the
JTAG to AXI Master LogiCORE IP Product Guide (PG174).
Related Information
Debug Hub
On 7 series and UltraScale architectures the Vivado Debug Hub core provides an interface
between the JTAG Boundary Scan (BSCAN) interface of the FPGA device and the Vivado Debug
cores including the following types of cores:
• Memory IP
IMPORTANT! The Vivado Debug Hub core cannot be instantiated into the design. It is inserted by
Vivado during the opt_design stage.
Note: On Versal devices, the AXI4 Debug Hub can be manually instantiated as an IP or inserted
automatically during opt_design, just as with previous architectures.
System ILA
The System Integrated Logic Analyzer (System ILA) IP core is a logic analyzer that allows you to
perform in-system debugging of post-implemented designs on an FPGA device. Use this IP when
you need to monitor interfaces and signals in the IP integrator Block Design. You can also use
this feature to trigger on interface and signal related hardware events and capture data at system
speeds. This ensures the intuitive presentation of interface events in the Hardware Manager
when debugging the design on an FPGA or ACAP. This IP offers AXI interface debug and
monitoring capability along with AXI4-MM and AXI4-Stream protocol checking.
Since the System ILA core is synchronous to the design being monitored, all design clock
constraints that are applied to your design are also applied to the components of the System ILA
core. Detailed documentation on the System ILA core IP can be found in the System Integrated
Logic Analyzer LogiCORE IP Product Guide (PG261).
Note: On Versal® devices the System ILA functionality is available using the Versal ILA core.
Debug Bridge
Note: The Debug Bridge IP is not supported on Versal architectures.
The Debug Bridge IP core is a controller that provides multiple options to communicate with the
debug cores in the design.
The primary use case for a Debug Bridge is to use a Xilinx Virtual Cable (XVC) to remotely debug
designs through Ethernet or other interfaces without the need for a JTAG cable.
The other common use case is for debugging Dynamic Function eXchange and Tandem PCIe with
Field Updates designs. For more information on the Tandem PCIe with Field Updates flow and
Debug Bridge refer to UltraScale+ Devices Integrated Block for PCI Express LogiCORE IP Product
Guide (PG213).
The Debug Bridge can also be used with the PCIe® core in systems where JTAG is not the
preferred communication and debug mechanism. For more information on the using the XVC
flow with the PCIe core and Debug Bridge refer to UltraScale+ Devices Integrated Block for PCI
Express LogiCORE IP Product Guide (PG213).
Detailed documentation on the Debug Bridge core IP can be found in the Debug Bridge LogiCORE
IP Product Guide (PG245).
In-System IBERT
Note: In-System IBERT is supported on UltraScale and UltraScale+ only.
The In-System IBERT IP enables you to perform 2-D eye-scans of UltraScale and UltraScale+
transceivers in your design, using the Vivado Serial IO Analyzer. The IP uses data from the design
to plot the eye-scan of the transceivers in real time while they interact with the rest of the
system. This IP can be integrated with user logic in the design or Xilinx transceiver based IPs (for
example GT Wizard, or Aurora, etc.).
Detailed documentation on the In-System IBERT IP can be found in the In-System IBERT
LogiCORE IP Product Guide (PG246).
IBERT GTR
IBERT UltraScale+ GTR can be used to evaluate and monitor GTR transceivers in Zynq UltraScale
+ MPSoC devices. With this feature, you can accomplish the following tasks:
Note that this solution is software based, meaning that no IP or logic is required in the
programmable logic of the device.
Chapter 2
Installation
To install the Vivado Lab Edition, select Lab Edition from the Unified Installer.
Detailed installation, licensing and release information is available in Vivado Design Suite User
Guide: Release Notes, Installation, and Licensing (UG973).
Start → All Programs → Xilinx Design Tools → Vivado Lab 2020.2 → Vivado Lab 2021.1
vivado_lab
TIP: To run vivado_lab at the command prompt, set up your environment using the following script:
C:\Xilinx\Vivado_Lab\2020.x\settings64.(bat|sh)
You can open the Vivado Lab Edition from any directory. However, Xilinx recommends running it
from a writable project directory, because the Vivado Lab Edition log and journal files are written
to the launch directory. When running from a command prompt, launch the Vivado IDE from the
project directory, or use the vivado_lab -log and journal options to specify a location.
When using a Windows shortcut, you must modify the Start in folder, which is a property of the
shortcut. Failure to launch from a writable project directory results in warnings and unpredictable
behavior from the tool.
• Create a project.
• Open existing projects
Note: You can also open recently accessed projects from the Recent Projects list.
open_project C:/Lab_edition/project_1/project_1.lpr
1. Click the Open Project icon on the Vivado Lab Edition start page.
2. Traverse to the project_name.hw directory, which is located inside the Vivado IDE project
directory
3. Select the .lpr project file inside the project_name.hw directory and click OK.
4. Connect to your hardware.
5. Program and debug with the correct device image file and .ltx file from the appropriate
Vivado runs directory
6. User preferences, runtime manager debug dashboard, and window settings are restored at
project open.
Programming Features
After the project is open and the Hardware Manager is connected with a target device, you can
use all the programming features that were available in the Vivado Design Suite from the Vivado
Lab Edition. All the programming related Tcl commands are supported in Vivado Lab Edition. For
more details on the programming features available refer to Programming Configuration Memory
Devices.
Related Information
Debug Features
After you open the project and connect the Hardware Manager with a target device, you can use
all the debug features that were available in the Vivado Design Suite from the Vivado Lab
Edition. All the debug related Tcl commands are supported in Vivado Lab Edition. For more
details on the debug features available refer to Debugging Logic Designs in Hardware of this user
guide.
Related Information
Chapter 3
There are two types of bitstream and device image settings in Vivado® IDE:
Select Settings → Bitstream in the Vivado Flow Navigator or Flow → Settings → Bitstream
Settings menu selection to open the Bitstream Settings popup window (see the following figure).
Once the settings are correct, the bitstream data file can be generated using the
write_bistream Tcl command or by using the Generate Bitstream button in the Vivado flow
navigator.
• -raw_bitfile: (Optional) This switch causes write_bitstream to write a raw bit file (.rbt),
which contains the same information as the binary bitstream file, but is in ASCII format. The
output file is named <filename>.rbt.
• -mask_file: (Optional) Write a mask file (.msk), which has mask data where the
configuration data is in the bitstream file. This file determines which bits in the bitstream
should be compared to readback data for verification purposes. If a mask bit is 0, that bit
should be verified against the bitstream data. If a mask bit is 1, that bit should not be verified.
The output file is named <file>.msk.
• -no_binary_bitfile: (Optional) Do not write the binary bitstream file (.bit). Use this
command when you want to generate the ASCII bitstream or mask file, or to generate a
bitstream report, without generating the binary bitstream file.
• -logic_location_file: (Optional) Creates an ASCII logic location file (.ll) that shows
the bitstream position of latches, flip-flops, LUTs, Block RAMs, and I/O block inputs and
outputs. Bits are referenced by frame and bit number in the location file to help you observe
the contents of FPGA registers.
• -bin_file: (Optional) Creates a binary file (.bin) containing only device programming data,
without the header information found in the standard bitstream file (.bit).
• -reference_bitfile <arg>: (Optional) Read a reference bitstream file, and output an
incremental bitstream file containing only the differences from the specified reference file.
This partial bitstream file can be used for incrementally programming an existing device with
an updated design.
TIP: You can type a property in the Search field. For example, type jtag into the Search text field to
find and select properties related to JTAG programming.
You can also set the bitstream properties using the set_property command in an XDC file. For
instance, here is an example on how to change the start-up DONE cycle property:
Additional examples and templates are provided in the Vivado Templates. Device Configuration
Bitstream Settings describes all of the device configuration settings.
IMPORTANT! Edit only the Device Configuration Bitstream Settings relevant to the configuration mode
being used. Leave the other settings at their default values
Related Information
Chapter 4
Vivado Design Suite and Vivado Lab Edition includes functionality that allows you to connect to
hardware containing one or more Xilinx® Device(s) to program and interact with those devices.
Connecting to hardware can be done from either the Vivado Lab Edition, or Vivado Design Suite
graphical user interface or by using Tcl commands. In either case, the steps to connect to
hardware and program the target device are the same:
• If you have a project open, click the Open Hardware Manager button in the Program and
Debug section of the Vivado flow navigator.
• Select Flow → Open Hardware Manager.
• In the Tcl Console window, run the open_hw_manager command
• Use the Open Target selection under Hardware Manager in the Program and Debug section of
the Vivado Flow Navigator to open new or recent hardware targets (see the following figure).
• Use the Open Target → Recent targets or Open Target → Open New Target selection on the
green user assistance banner across the top of the Hardware Manager window to open recent
or new hardware targets, respectively (see the following figure).
TIP: Use the Auto Connect selection to automatically connect to a local hardware target.
C:\Xilinx\Vivado\<Vivado_version>\bin\hw_server.bat
If you are using a Hardware Server (Standalone) installation on a Windows platform, at a cmd
prompt run the following command:
c:\Xilinx\HWSRVR\<Vivado_version>\bin\hw_server.bat
Follow the steps in the next section to open a connection to a new hardware target using this
agent.
For a list of compatable JTAG download cables and devices see Appendix D: JTAG Cables and
Devices Supported by hw_server.
For more information on using SmartLynq data cables, see the SmartLynq Data Cable User Guide
(UG1258).
IMPORTANT! If Vivado Hardware Manager is connected to the hw_server, and the hw_server is stopped,
the Hardware Manager detects this condition automatically and disconnects from the server.
1. Select a local or remote server, depending on what machine your hardware target is
connected to:
• Local server: Use this setting if your hardware target is connected to the same machine on
which you are running the Vivado Lab Edition or Vivado IDE (See the following figure). The
Vivado software automatically starts the Vivado hardware server (hw_server) application
on the local machine.
• Remote server: Use this setting if your hardware target is connected to a different machine
on which you are running the Vivado Lab Edition or Vivado IDE. Specify the host name or
IP address of the remote machine and the port number for the hardware server
(hw_server) application that is running on that machine (see the following figures). Refer to
Connecting to a Remote hw_server Running on a Lab Machine for more details on remote
debugging.
IMPORTANT! When using remote server, you need to manually start the Vivado hardware server
(hw_server) application of the same version of Vivado software that you will use to connect to the
hardware server.
TIP: If you only want to connect to your lab machine remotely, you do not need to install the full
Vivado design suite on that remote machine. Instead, you can install the light-weight Vivado Hardware
Server (Standalone) tool on the remote machine.
2. Select the appropriate hardware target from the list of targets that are managed by the
hardware server. Note that when you select a target, you see the various hardware devices
that are available on that hardware target.
IMPORTANT! If there are third party devices in the JTAG chain, use the instructions in Xilinx Answer
Record 61312 to add IDCODE, IR Length, and name for the unknown devices.
Related Information
• If you are not able to correctly identify the hardware devices on your target, it might mean
that your hardware is not capable of running at the default target frequency. You can adjust
the frequency of the TCK pin of the hardware target or cable (see the previous figure). Note
that each type of hardware target may have different properties. Refer to the documentation
of each hardware target for more information about these properties.
• While the Vivado hardware server will attempt to automatically determine the instruction
register (IR) length of all devices in the JTAG chain, in some rare circumstances it might not be
able to correctly do so. You should check the IR length for each unknown device to make sure
it is correct. If you need to specify the IR length, you can do so directly in the Hardware
Devices table of the Open New Hardware Target wizard (see Opening a New Hardware
Target).
Related Information
Once you finish opening a connection to a hardware target, the Hardware window is populated
with the hardware server, hardware target, and various hardware devices for the open target (see
the following figure).
Note: As a convenience, Vivado IDE automatically uses the programming file for the current implemented
design as the value for the Programming File property of the first matching device in the open hardware
target. This feature is only available when using the Vivado IDE in project mode. When using the Vivado
IDE in non-project mode, you need to set this property manually.
You can also use the set_property Tcl command to set the PROGRAM.FILE property of the
hardware device:
Once the progress dialog has indicated that the programming is 100% complete, you can check
that the hardware device has been programmed successfully by examining the DONE status in
the Hardware Device Properties view.
You can also use the get_property Tcl command to check the DONE status. For instance, to
check the DONE status of a Kintex®-7 device that is the first device in the JTAG chain, use the
following Tcl command:
On Versal devices, the command differs slightly because the DONE status register is different.
Index 1 must be read as the first device returned by get_hw_devices, and will be the
arm_dap in a single device use case.
If you use another means to program the hardware device (for instance, a flash device or external
device programmer), you can also refresh the status of a hardware device by right-clicking the
Refresh Device menu option or by running the refresh_hw_device Tcl command. This
refreshes the various properties for the device, including but not limited to the DONE status.
IMPORTANT! For non-Versal architectures, if your design contains debug cores, ensure that the JTAG
clock is 2.5 times slower than the debug hub clock.
IMPORTANT! User SCAN Chain: For non-Versal architectures, Vivado Programmer tries to detect debug
cores on the user scan chain specified in the design by default. It does the detection by issuing a
JTAG_CHAIN 1 command to the device. If you have programmed a device with a design that does not
have any debug cores or a debug core with a user scan chain of 2, 3, or 4, you will see a warning.
To determine the user scan chain setting, for non-Versal architectures, open the implemented
design and use:
You can change the user scan chain used in the Vivado Hardware Manager. Note that the
BSCAN_SWITCH_USER_MASK is a bit mask value. See the following figure.
Alternatively you can specify the user scan chain value as an option to hw_server start-up.
TIP: For designs prior to Vivado 2016.3 Xilinx recommends manually launching hw_server with -
e "set xsdb-user-bscan <C_USER_SCAN_CHAIN scan_chain_number>" to detect the
debug hub at User Scan Chain of 2 or 4.
The solution is to specify the correct bitstream for the FPGA or ACAP being programmed.
The controller bitstream downloaded by Hardware Manager is generated for the latest silicon
revision of the FPGA device. For example, the configuration memory controller bitstream for the
XCKU115 in 2016.3 and later was generated for XCKU115-es2 silicon.
When programming configuration memory attached to this FPGA, if the user has an XCKU115-
es1 device on the board, the error message shown in Attempting to Program an FPGA Device
with a Bitstream Generated for a Different Silicon Revision of the FPGA appears. This is because
Hardware Manager is attempting to download the -es2 flash controller bitstream into the -es1
device.
close_hw_target {localhost/xilinx_tcf/Digilent/210203339395A}
IMPORTANT! If the board is powered off or cable disconnected, Vivado IDE closes the hardware target in
the Hardware Manager. Any Vivado operation in the main Vivado thread is also canceled. If the board is
powered back on or the cable is reconnected, the Vivado IDE will attempt to re-open the hardware target
in the Hardware Manager.
disconnect_hw_server localhost
IMPORTANT! If Vivado Hardware Manager is connected to the hw_server, and the hw_server is stopped,
the Hardware Manager detects this condition automatically and disconnects from the server.
You should attempt to open with a default JTAG clock frequency that is 15 MHz for the Digilent
cable connection and 6 MHz for the USB cable connection. If it is not possible to connect at
these speeds, Xilinx recommends that you lower the default JTAG clock frequency even further
as described below.
To change the JTAG clock frequency, use the Open New Hardware Target wizard, from Vivado®
Design Suite, as shown in the following figure.
open_hw_manager
Usage
This option is used to start up the hw_server with the ability to enable ir lengths greater than 64
bits. The default value for this setting is 64. You can increase this value for devices in the JTAG
chains whose ir length are wider (for example 93). Note that increasing this number will slow the
device discovery process, which in turn can slow cable access. Therefore, you should only
increase this value for systems with long ir lengths and device counts.
Init Option
You may also use the --init=script.txt option to load this setting through a file. To use the
init option, create a initialization script as shown in the following example. In the script, specify
the set max-jtag-device parameter.
# Sample script.txt
set max-ir-length 93
hw_server --init=script.txt
10200 Low level JTAG access over XVC set xvc-port <port>
3000-3003 GNU Debugger ports (for Arm®/ set gdb-port <base port>
MicroBlaze™ processors) Setting the base port sets the lowest
port for the range of four ports.
Chapter 5
Xilinx® provides multiple solutions to debug your design remotely. This can be done using the
Xilinx Hardware Server product to connect to a remote computer in the lab. You could also
implement the Xilinx Virtual Cable (XVC) protocol to connect to a network-connected board.
Each of these solutions are explained in detail in the sections below.
HARDWARE SERVER
INTERNET / INTRANET
Desk Lab
X14741-062315
XVC is an internet-based (TCP/IP) protocol that acts like a JTAG cable. It has very basic cable
commands. This allows XVC to debug a system over an intranet, or even the internet. With this
capability you can save on costly or impractical travel and reduce the time it takes to debug a
remote system.
Another common use of XVC is for shared systems that are not co-located with teams that need
access to them. It can also be used when there are physical constraints to using the system, such
as when the JTAG connector is not available or accessible. XVC implementation is programming
language and platform independent.
Rather than using a dedicated JTAG header, an existing Ethernet connection can be used to
create the appropriate JTAG commands from a processor to a target device. With the XVC v1.0
Protocol, Vivado can communicate the same JTAG commands over an Ethernet connection and
still support all of the existing Vivado debug features.
IMPORTANT! If the Vivado Debug Bridge IP is used for XVC, Vivado IDE does not support programming
features. The assumption is that the device is programmed before using XVC to debug the design. The
Debug Bridge IP is not compatible with Versal ACAP.
The Vivado Debug Bridge IP core is a controller that provides multiple options to communicate
with the debug cores in the design. This design can be a flat design or a Dynamic Function
eXchange design. In addition, the Debug Bridge IP core can also be configured to take advantage
of debugging designs using a JTAG cable or remotely through Ethernet, PCIe®, or other
interfaces without the need for a JTAG cable.
Different modes in Debug Bridge IP facilitate the support of various use cases.
• From AXI to BSCAN: In this mode, the Debug Bridge receives XVC Commands via AXI4-Lite
slave interface.
• From JTAG to BSCAN: In this mode, the Debug Bridge receives XVC Commands via JTAG
slave interface driven by user logic.
• From PCIe to BSCAN: In this mode, the Debug Bridge receives XVC Commands via PCIe
Extended Configuration slave interface.
• From PCIe to JTAG: In this mode, the Debug Bridge receives XVC Commands via PCIe
Extended Configuration interface. This Debug Bridge brings out the JTAG pins out of the
FPGA through I/O pins. This mode is mainly used to debug design on another board over
XVC.
• From AXI to JTAG: In this mode, the Debug Bridge receives XVC commands via AXI4-Lite
interface to send over the JTAG pins to a target device.
In all of these modes the Debug Bridge can further communicate with other debug cores/ Debug
Bridge instances in the design via the Soft-BSCAN (Boundary Scan) interface. The Soft BSCAN
master interface enables extension of the JTAG interface to internal USER defined scan chains/
Debug Bridge instances.
• BSCAN Primitive: This mode is used when a Debug Bridge containing a BSCAN primitive is
required in the static region. The BSCAN master interface of this Debug Bridge can be
connected to another Debug Bridge instance in the static and/or PR region(s) providing one or
more communication pathways for debugging those regions.
• From BSCAN to Debug Hub: In this mode, the Debug Bridge uses the BSCAN slave interface
to communicate to Vivado Hardware Manager. It uses the Debug Hub interface to
communicate with the design cores within the relevant static or RP region. You can also
optionally add additional BSCAN Masters to the output of this Debug Bridge, which enables
debugging other debug cores like MicroBlaze™ Debug Module (MDM) or other Debug Bridge
instances.
Note: The tool automatically connects the debug cores in an RP to the Debug Bridge if this is the only
Debug Bridge instantiated in the partition.
• From AXI to BSCAN: In this mode, the Debug Bridge receives XVC Commands via AXI4-Lite
slave interface. This Debug Bridge can further communicate with other debug cores/ Debug
Bridge instances in the design via the Soft-BSCAN (Boundary Scan) master interface. The Soft
BSCAN interface enables extension of the JTAG interface to internal USER defined scan
chains/Debug Bridge instances.
• From JTAG to BSCAN: In this mode, the Debug Bridge receives XVC Commands via JTAG
slave interface driven by user logic. This Debug Bridge can further communicate with other
debug cores/ Debug Bridge instances in the design via the Soft-BSCAN (Boundary Scan)
master interface. The Soft BSCAN interface enables extension of the JTAG interface to
internal USER defined scan chains/Debug Bridge instances.
• From PCIe to BSCAN: In this mode, the Debug Bridge receives XVC Commands via PCIe
Extended Configuration slave interface. This Debug Bridge can further communicate with
other debug cores/ Debug Bridge instances in the design via the Soft-BSCAN (Boundary Scan)
interface. The Soft BSCAN master interface enables extension of the JTAG interface to
internal USER defined scan chains/Debug Bridge instances.
Note: This mode is only available for UltraScale+ and UltraScale device architectures
• From PCIe to JTAG: In this mode, the Debug Bridge receives XVC Commands via PCIe
Extended Configuration interface. This Debug Bridge brings out the JTAG pins out of the
FPGA through I/O pins. This mode is mainly used to debug design on another board over
XVC.
Note: This mode is only available for UltraScale+ and UltraScale device architectures.
• From AXI to JTAG: In this mode, the Debug Bridge receives XVC commands via AXI4-Lite
interface to send over the JTAG pins to a target device.
1. If the Debug Bridge that you want to provide JTAG Fallback for resides in a PR region, you
need to enable the External BSCAN Master JTAG Fallback Support.
2. If the Debug Bridge that you want to provide JTAG Fallback for resides in the static region (or
in a flat design), you should enable the Internal BSCAN Master JTAG Fallback Support.
To enable this feature, you need to instantiate one Debug Bridge IP in the appropriate mode,
either the "From AXI to BSCAN" or "From PCIe to BSCAN" mode, for each of the debug trees
you want to enable. For instance, in a data center design where multiple classes of users will
access the DUT, you can instantiate a "From AXI to BSCAN" Debug Bridge IP in the customer-
visible address map while instantiating a second "From AXI to BSCAN" Debug Bridge IP in the
administrator-visible address map.
When the administrator and/or the customer are ready to debug the design, they will only have
to connect to the debug bridge using the Vivado Hardware Manager at the correct device offset
depending on how they are communicating with the debug cores (i.e., PCIe or JTAG pins). For
more information on using the XVC flow with the PCIe core and Debug Bridge in this mode, and
for an example design refer to UltraScale+ Devices Integrated Block for PCI Express LogiCORE IP
Product Guide (PG213).
Below is a table listing the different Debug Bridge modes and features available in those modes:
Can be used In
XVC JTAG Fallback
Debug Bridge Mode Reconfigurable MDM Support
Support Support
Partition
From AXI to BSCAN Yes Yes1 Yes2 Yes3
From JTAG to BSCAN Yes Yes1 Yes2 Yes3
From PCIe to BSCAN Yes Yes1 Yes2 Yes3
From PCIe to JTAG Yes Yes1 NA NA
From BSCAN to DebugHub No Yes1 NA Yes3
BSCAN Primitive No No NA Yes3
Can be used In
XVC JTAG Fallback
Debug Bridge Mode Reconfigurable MDM Support
Support Support
Partition
From AXI to JTAG Yes Yes NA NA
Notes:
1. BSCAN Master Count can be greater than 0 and can be connected to other Debug Bridge instances or
MicroBlaze/MDM core within the same RP only.
2. Internal BSCAN Mode can only be used when the Debug Bridge is in static partition while External BSCAN Mode can
be used when the Debug Bridge is in either the static or RPs.
3. BSCAN Master Count can be greater than 0 and can be connected to other Debug Bridge instances or
MicroBlaze/MDM core within the same RP only.
Figure 13: Dynamic Function eXchange Design with the XVC Debug Bridge in an RP
This is a PR design with two reconfigurable partitions, Counter RP and Shifter RPs. This figure
illustrates the different Debug Bridge modes used in both static and RP regions.
The static partition of design has two Debug Bridge IPs. The first Debug Bridge IP is in BSCAN
Primitive mode and configured to have three BSCAN master interfaces. Two of the BSCAN
master interfaces are connected to the Debug Bridge instances in Counter-RP and Shifter-RP
partitions providing a parallel path for debug. The third BSCAN master interface is connected to
another Debug Bridge instance within the static partition configured in the From BSCAN to
Debug Hub mode. The Debug Bridge configured in From BSCAN to Debug Hub mode can
communicates to the various Debug IPs (ILA, VIO, JTAG-to-AXI, etc.) in the design, which in this
case is the ILA IP.
In this system the Counter-RP partition contains a Debug Bridge instantiated in the AXI-to-
BSCAN mode. You can use this Debug Bridge in XVC mode, the Debug Bridge receives XVC
Commands via AXI4-Lite interface. This Debug Bridge can further communicate with other
Debug Bridge instances in the design via the Soft-BSCAN (Boundary Scan) interface. Because
this Debug Bridge is configured to contain two BSCAN master interfaces it communicates with
the MDM and the Debug Bridge instance configured in From BSCAN to Debug Hub mode. The
Debug Bridge configured in From BSCAN to Debug Hub mode can communicates to the various
Debug IPs (ILA, VIO, JTAG-to-AXI etc.) in the design, which in this case is the ILA IP.
On the other hand, the Shifter-RP partition contains only one Debug Bridge instance configured
in From BSCAN to Debug Hub mode that can communicate with the various Debug IPs (ILA, VIO,
JTAG-to-AXI, etc.) in the design, which in this case is the ILA IP.
For more information see the Debug Bridge LogiCORE IP Product Guide (PG245).
For more information, see the Debug Bridge LogiCORE IP Product Guide (PG245).
Target Board/FPGA
Debug Debug IP 1
Zynq
Bridge Debug (eg ILA,
……VIO etc)
Processor
XVC over TCP/IP AXI (From AXI Hub Debug IP n
XVC Server BSCAN
to BSCAN) (eg ILA, VIO etc)
hw_server
User Solution
Figure 15: PCIe to BSCAN Debug Bridge Used with PCIe Extended Configuration
Interface
Target FPGA
Debug
PCIe Debug Core 1
Processor Bridge Debug ……
(Extended
XVC Server (From AXI Hub
XVC over PCIe Configuration) PCIe ext BSCAN Debug Core n
TCP/IP cfg to BSCAN)
hw_server
User Solution
Vivado Solution
X17962-040517
Target Board
Target FPGA
Debug Debug IP 1
Processor Bridge Debug (eg ILA,
……VIO etc)
XVC over XVC Server GPIO/Custom JTAG (From JTAG BSCAN Hub Debug IP n
User Logic to BSCAN) (eg ILA, VIO etc)
TCP/IP Interface
hw_server
User Solution
Figure 17: PCIe® to JTAG Debug Bridge Used with PCIe Extended Configuration
Interface
Target Board
FPGA #1 FPGA #2
Debug
Debug Core 1
PCIe Bridge Debug ……
Master (From PCIe Hub
PCIe ext JTAG Debug Core n
PCIe to JTAG)
cfg
hw_server
User Responsibility
Vivado Solution
X17964-040517
Target Board
FPGA #1 FPGA #2
hw_server
User Responsibility
Data Center
Vivado Solution
X17966-092816
Note: At the current time, only PL debug cores are supported for use with XVC on Versal devices.
Examples of PL debug cores are AXIS-ILA and AXIS-VIO. Versal hard-block debug cores such as SYSMON,
DDRMC Calibration Debug, PCI™ Express Link Debug and IBERT do not currently support remote access
over XVC.
XVC Protocol
The XVC protocol allows Vivado IDE to communicate JTAG commands over ethernet to an
embedded system so that a target Xilinx device can be programmed and/or debugged. This
enables a vendor agnostic solution for debugging and programming a Xilinx device. Programming
capabilities include the same support as a traditional JTAG connection would provide. Debugging
capabilities include operability with Xilinx System Debugger (XSDB) or with Vivado Hardware
Debug IP.
The JTAG commands to the device are the same commands that would have been transferred to
the device if it were natively communicating with a programming cable or using a Digilent
module. This ensures functionality between all the existing Vivado Hardware Debug tools.
Command Description
getinfo Command format:
getinfo:
This command gets the XVC Service version. The service returns the following string when it receives
"getinfo:"
xvcServer_v1.0:<xvc_vector_len>\n
<xvc_vector_len> is the max width of the vector that can be shifted into the service.
Command Description
shift Command format:
shift:[num bits][tms vector][tdi vector]
This command shifts in num_bits using the byte vectors tms_vector and tdi_vector
num_bits is an integer in little-endian mode.
This represents the number of TCK clk toggles needed to shift the vectors out.
tms_vector is a byte sized vector with all the TMS shift bits.
Bit 0 in Byte 0 of this vector is shifted out first.
The vector is num_bits and rounds up to the nearest byte.
tdi_vector is like tms_vector but this represents all the tdi vectors to be shifted in.
This command returns a byte vector of the same size as tms_vector with the corresponding tdo bits
sampled for every bit shifted in.
Bit 0 in Byte 0 of this vector is the first tdo value read from the shift
settck Command format:
settck:[period]
This command attempts to set the service tck period to [period].
[period] is specified in ns.
This is a little-endian integer value
This command returns the applied period when it completes settck:.
Returned value is specified in ns.
This is a little-endian integer value
The auto-open-servers option enables the XVC cable to be initialized by hw_server at start
up. You can initialize the hardware server to force a connection to an existing XVC cable. The
server will automatically discover the XVC cables in future connections.
xilinx-xvc:<xvc_host_name>:<xvc_port>
Multiple servers can be specified using comma separated strings. When the hardware server
starts, it attempts to establish connections to the specified XVC servers. Alternatively you can
provide the XVC server details when connecting to the target using the Vivado Hardware
Manager Open New Hardware Target wizard as shown in the following figure.
Click the Add Xilinx Virtual Cable button. This brings up the Add Virtual Cable dialog box as
shown in the following figure.
You will then provide the XVC Hostname and Port number to connect to.
Refer to Xilinx Virtual Cable Running on Zynq-7000 Using the PetaLinux Tools (XAPP1251) for an
example of this.
This application note shows how to get a Xilinx Virtual Cable (XVC) server running on a
Zynq®-7000 device with a Linux operating system generated with the PetaLinux Tools. A
reference design is provided for the Avnet MicroZed board. The target device in this application
note is on an AC701 board and will be programmed and debugged by the MicroZed board
running XVC on Linux.
Note: For an example XVC server implementation over TCP/IP, refer to the following GitHub repository:
https://github.com/Xilinx/XilinxVirtualCable.
Chapter 6
Programming Configuration
Memory Devices
The Vivado® device programmer feature enables you to directly program Xilinx® devices via
JTAG. Vivado can also indirectly program select Flash-based configuration memory devices via
JTAG. Do this by first programming the Xilinx FPGA device with a special configuration that
provides a data path between JTAG and the Flash device interface followed by programming the
configuration memory device contents using this data path.
The Vivado device configuration feature enables you to directly configure Xilinx Devices or
Memory Devices using either Xilinx or Digilent cables. See Connecting to a Hardware Target
Using hw_server for a list of appropriate cables. Operating in Boundary-Scan mode, Vivado can
configure or program Xilinx Devices, and Configuration Memory Devices.
Refer to JTAG Cables and Devices Supported by hw_server for a complete list of configuration
memory devices supported by Vivado.
To program and boot from a Configuration Memory Device in Vivado follow the steps below.
Related Information
On the synthesized or implemented design, from Flow Navigator, select Settings → Bitstream (on
Versal® Devices Settings → Device Image), and click the settings Configure additional Bitstream
Settings link to open the Edit Device Properties dialog as shown below.
Figure 21: Edit Device Properties: Bitstream Properties for FPGA Devices
Figure 22: Edit Device Properties: Bitstream Properties for Versal Devices
Use the search field in the upper left of the dialog box to search for all SPI or BPI related fields
and select the appropriate option settings. See Device Configuration Device Image or PDI
Settings for the device configuration settings.
Related Information
For example, to generate an .mcs file to configure an FPGA with a single 1 Gbit BPI
configuration memory device:
Note: The -size argument to write_cfgmem is in megabytes, different from flash device capacity which
is based on megabits. Hence, a 1 Gbit sized flash device is provided as 128 megabytes to write_cfgmem
in the example above. Note that write_cfgmem automatically sizes the configuration memory file to the
size of the bitstream.
Vivado IDE supports the ability to chain multiple .bit files together using the write_cfgmem
command. To generate an .mcs file for a single 1 Gbit BPI configuration memory device
containing multiple bitstreams:
For more information on write_cfgmem command refer to the Vivado Design Suite Tcl Command
Reference Guide (UG835).
TIP: You can create configuration memory files in Vivado Lab Edition.
You can also create the Configuration Memory file in Vivado IDE. Click on Tools → Generate
Memory Configuration File. This will bring up the Write Memory Configuration File dialog box as
following:
Select the relevant format and options, and click OK to generate the configuration memory file.
Note: The size specified when generating the .mcs for SPIx8 is the total size of the two Quad Flash
devices.
Note: The write_cfgmem Tcl command divides the start address by 2 when building .mcs files for dual
quad SPI (x8) mode.
Devices: 2x 256 Mib Quad SPI Flash devices: 256 Mib = 32 MiB
Load addresses:
Golden: 0 * 2 = 0
1. Create a new Vivado® project targeting the desired Versal device to be used during memory
device configuration.
2. Once the project has been created, create a new block design by clicking IP INTEGRATOR →
Create Block Design.
3. Click + icon to add a new IP to the IP Integrator Canvas and search for the Control, Interfaces
& Processing System. Add an instance of the Control, Interfaces & Processing System IP to
the IP Integrator canvas.
4. Double click on the Control, Interfaces & Processing System IP to configure options in the PS
PMC. At this point, the desired controller options to be used in the Initialization PDI should
be configured. For example, to use QSPI x4 during configuration memory device
programming, the following could be set.
Note: The options set in the Initialization PDI will only be used during the configuration memory device
programming steps and do not carry over to the design programmed into the configuration memory
device.
5. After configuration is complete in the Control, Interfaces & Processing System IP, run block
design validation then save the block design. Return to the Project Navigator by clicking on
PROJECT MANAGER in the Flow Navigator and right-click on the newly created block
design in the sources pane. Select Create HDL Wrapper and select Let Vivado Manage
wrapper and auto-update.
6. In the Flow Navigator, select PROGRAM AND DEBUG → Generate Device Image to create
the PDI.
Note: The PDI created during this step will be the Initialization PDI to be used during the configuration
memory programming process.
7. The Initialization PDI has been created and should be saved for use during the configuration
memory programming process later in this guide.
1. To boot or configure the Xilinx® device from flash, ensure the mode pins are selected for the
target flash type. See the appropriate Technical Reference Manual (for Versal® devices Versal
ACAP Technical Reference Manual (AM011)) or the Configuration User Guide for the device
you are targeting.
For more information, see the appropriate Configuration User Guide for the device you are
targeting.
2. Follow the steps in Programming the Device to connect to the hardware target.
IMPORTANT! If the board is powered off or cable disconnected, Vivado IDE closes the hardware
target. Any Vivado operation in the main Vivado thread is also canceled.
Related Information
1. After connecting to the hardware target as outlined above, add the configuration memory
device by right-clicking the hardware target as shown below and selecting Add Configuration
Memory Device.
When you click on this menu item the Add Configuration Memory Device dialog box opens:
TIP: Use the Search field to pare down the list using Vendor, Density, or Type information.
The configuration memory device is now added to the hardware target device.
○ Pull-up - Specifies that the indirect configuration bitstream programmed into the FPGA
has the unused I/O pins set to pull-up.
○ Pull-down - Specifies that the indirect configuration bitstream programmed into the
FPGA has the unused I/O pins set to pull-down.
IMPORTANT! Ensure the state of non-config mem I/O pins matches what you set in the
write_bitstream properties. The default value for this property is pull-down.
TIP: User generates cfgmem file and specifies -checksum write_cftmem option. This step
creates the .prm files that contain checksum information about the cfgmem output file.
• Create SVF Only - Enabling this option allows for the creation of an .svf file with the
program operations that you specified. Other third party tools can use the .svf file to
program configuration memory devices outside of Vivado.
IMPORTANT! When this option is enabled, Vivado just generates the .svf file with the relevant
program options. It does not actually program the configuration memory device.
3. Click OK to start the Erase, Blank Check, Program, and Verify operations on the configuration
memory device per the selections in this dialog box. Vivado notifies you as each operation
finishes.
Note: Pressing Apply will store the configuration memory settings but will not program the
configuration memory device. If you press Cancel after pressing Apply the configuration memory
device will be set and programming can be performed at a later time.
Related Information
1. Launch Vivado Hardware Manager and connect to a hardware target as described in sections
above.
2. After connecting to the hardware target, add the configuration memory device by right-
clicking the hardware target as shown below and selecting Add Configuration Memory
Device.
3. When the Add Configuration Memory Device dialog box appears, select the appropriate
memory device and click OK.
4. The configuration memory device is now added to the hardware target. To continue, the
Vivado device manager will prompt "Do you want to program the configuration memory
device now?" as shown below. Click OK to continue.
5. In the Program Configuration Memory Device window, set the fields in this dialog box
appropriately:
• Configuration file: The path to the PDI to be programmed in to the configuration memory.
• Bin Offset: The offset to apply when programming the device image into the configuration
memory.
• Initialization PDI: The path to the PDI to be used to boot the device before programming.
This can be the same as the Configuration File specified above if there are no differences
in the configuration memory controller options selected in the CIPS IP needed to program
the device.
• Program Options: Selecting Configuration File Only will perform the selected options on
only the address space required by the PDI to be programmed. Selecting Entire
Configuration Memory Device will perform the selected options including erase, blank
check, program and verify on the entire device.
• Erase: Erase the contents of the configuration memory device.
• Blank Check: Checks the configuration memory device to make sure the device is void of
data before programming.
• Program: Programs the configuration memory device with the selected device image (PDI).
• Verify: Verifies the configuration memory device contents match the selected device
image (PDI).
6. Click OK to start the selection operations on the configuration memory device.
Note: Pressing Apply will store the configuration memory settings but will not program the
configuration memory device.
IMPORTANT! There can be situations after booting from configuration memory where the debug cores do
not show up immediately due to system boot up considerations. Xilinx® recommends that you wait for the
specified time period as appropriate using the boot_hw_device Tcl command in the Vivado® Hardware
Manager Tcl Console, as shown below:
Where the 1000 can be the specified by you as the max "wait_on" value.
Configuration failures can occur when a board is in Master BPI or Master SPI mode and the JTAG
cable is connected to the Vivado Hardware Manager. When the Hardware Manager polling and
recover feature interrupts the Master mode configuration, intermittent configuration failures
occur on power up. To avoid this issue, set the following parameter in the Vivado Hardware
Manager Tcl console to ensure that the configuration status registers are not updated:
Chapter 7
Vivado® IDE can verify and/or readback the configuration data (i.e., .bit file) downloaded into
an FPGA/MPSoC. When using write_bitstream to generate the .bit file, use the -
mask_file option to create a corresponding mask (.msk) file. Run write_bitstream-help
in the Vivado IDE Tcl Console for details on bitstream generation options.
When performing a verify operation, the verify_hw_devices Tcl command reads data back
from the FPGA/MPSoC and uses the .msk file to determine which readback data bits to skip and
which ones to compare against the corresponding bits in the .bit file.
Following is an example of a bitstream verify Tcl command sequence (the .bit and .msk files
were generated by a previous call to write_bitstream):
You can use the Vivado Hardware Manager to verify the configuration data. Right-click the
device, select Verify Device as shown below.
You need to enter the bit file and corresponding mask (.msk) file. Click Verify to execute the
verification.
Use the readback_hw_device Tcl command with at least one of the following options to read
back the FPGA/MPSoC configuration data:
Example: Readback FPGA/MPSoC configuration data in both ASCII and binary formats:
readback_hw_device [current_hw_device] \
-readback_file kcu105_cnt_ila_uncmpr_rb.rbd \
-bin_file kcu105_cnt_ila_uncmpr_rb.bin
1. Bitstream, and readback operations are done through the Tcl Console.
2. Verify and readback operations do not work for FPGAs or MPSoCs programmed with
encrypted bitstreams. Encrypted bitstreams contain commands that disable readback.
Readback is re-enabled by pulsing the device's PROG pin, or if the device/board is powered
down and powered back up again.
3. The data readback using readback_hw_device contains configuration data only (no
configuration commands are included).
For more information on the readback and mask files, see the "Verifying Readback Data" section
in the UltraScale Architecture Configuration User Guide (UG570) or the 7 Series FPGAs Configuration
User Guide (UG470).
Verify the configuration memory device through the Vivado® Design Suite Hardware Manager as
shown in the following figure.
You can also verify the configuration memory device by setting the appropriate HW_CFGMEM
properties and calling program_hw_cfgmem as shown in the following code:
The contents of the configuration memory can be readback through the Vivado Design Suite Tcl
Console using the following command sequence:
Note: Perform configuration memory readback operations through the Tcl Console only.
For more information on these features, see the UltraScale Architecture Configuration User Guide
(UG570) or the 7 Series FPGAs Configuration User Guide (UG470).
To generate an encrypted bitstream, open an implemented design in Vivado IDE. From the main
toolbar Select Flow → Bitstream Settings to make the Settings dialog box appear. At the top of
the dialog box click Configure Additional Bitstream Settings.
This brings up the Edit Device Properties dialog box. Select Encryption in the left-hand pane.
In the Edit Device Properties dialog box, specify the encryption and key settings:
• Encryption Settings
○ Set Enable Bitstream Encryption to YES.
Note: These values will be stored in the current project constraints file unless an input encryption file
is specified. To avoid storing this value in the constraints file, specify the input encryption file.
○ Specify the AES encryption key to use when encrypting the bitstream. You can use up to
64 hex characters to specify the 256-bit key.
- The key will be written to a file with the .nky file extension. Use this file when loading
the key into the BBR or when programming the key into the eFUSE key register.
Note: These values will be stored in the current project constraints file unless an input encryption file
is specified. To avoid storing this value in the constraints file, specify the input encryption file.
To generate an encrypted bitstream, open an implemented design in Vivado IDE. From the main
toolbar select Flow → Bitstream Settings to make the Settings dialog box appear. At the top of
the dialog box, click Configure Additional Bitstream Settings.
This brings up the Edit Device Properties dialog box. Select Encryption in the left-hand pane.
In the Edit Device Properties dialog box, specify the Encryption Settings and Key Settings:
• Encryption Settings
○ Set Enable Bitstream Encryption to YES.
○ Specify a Fixed Input Data for KDF keyrolling. This is an optional 60-byte fixed input value,
specified as a 120-digit hexadecimal value. This 60-Byte input along with the 4-Byte
counter serves as the 64-Byte input to the KDF pseudo-random fixed input value via
RAND_bytes.
○ Specify Seed for KDF Keyrolling. This is an optional 32-Byte seed value for the KDF,
specified as a 64 digit hexadecimal value.
○ Specify Number of encryption blocks per key and Number of frames per AES-256 key.
- The number of encryption blocks and frames are used to specify how many sections a
bitstream will be broken into with distinct keys.
In the Edit Device Properties-Authentication dialog box, specify the encryption and key settings
as follows:
• Authentication Settings
○ Set Enable Bitstream Authentication to YES.
Provide an RSA private key file after specifying the encryption and authentication settings,
Click OK to apply the settings to the project. Re-run Implementation and regenerate the
bitstream file. Upon successful completion of the write_bitstream operation, the
generated .nky encryption key file appears in the same directory as the encrypted bitstream
file.
You can protect IP in bitstreams by encrypting the bitstreams with a 256-bit Advanced
Encryption Standard (AES) key, and downloading the bitstreams to run only on authorized
FPGAs. Do this by programming the 256-bit key into the BBR register of the authorized FPGAs
before downloading the encrypted bitstream.
In the Program BBR Key dialog box, specify the AES key (.nky) file by typing the file name or
navigating to the desired file. After specifying a valid .nky file, the AES key field automatically
fills in. Click OK, to have the Hardware Manager program/load the key into the BBR.
After programming the key, program the FPGA with an encrypted bitstream that:
• was encrypted using the same AES key as was loaded into BBR.
• had BBRAM selected as the specified encryption key location.
Note: Pressing or pulsing the PROG pin when the board/FPGA is powered up will not clear the BBR
register.
Alternatively, you can clear the AES key in Vivado IDE by right-clicking the FPGA device in the
Hardware window, selecting Clear BBR Key
When the Clear BBR Key dialog box appears, click OK to clear the key from the device
IMPORTANT! When verify_hw_devices is performed on the BBR key, an error will be shown. To
verify the BBR key, the user should test this by programming the FPGA with a bitstream that has the key.
Vivado does not support any post BBR program verify option to verify the programmed BBR key.
In the Program BBR Key dialog box, specify the AES key file (.nky) and Enable DPA PROTECT:
○ Specify the AES key file (.nky) by typing the file name or navigating to the desired file. After
specifying a valid .nky file, the AES key field automatically fills in.
• Enable DPA PROTECT
○ Check the Enable DPA PROTECT check box.
○ Specify the DPA_COUNT value. The valid range is 1-256 when enabled.
Note: For more details on the BBR AES key and DPA_PROTECT feature refer to the UltraScale
Architecture Configuration User Guide (UG570).
Click OK, to have the Hardware Manager program load the key into the BBR.
After programming the key, program the FPGA with an encrypted bitstream that:
• was encrypted using the same AES key as was loaded into BBR.
• had BBRAM selected as the specified encryption key location.
IMPORTANT! For UltraScale devices, if you download an encrypted bitstream (which uses the BBR as
the key source) before programming the key into the BBR register, the FPGA device will lock up and you
will not be able to load the BBR key. You can still download unencrypted bitstreams, but you will not be
able to download encrypted bitstreams because the FPGA device will prevent you from downloading a
key into BBR. You must power-cycle the board to unlock the UltraScale device and then reload the BBR
key.
IMPORTANT! When verify_hw_devices is performed on the BBR key, an error will be shown. To
verify the BBR key, the user should test this by programming the FPGA with a bitstream that has the
key. Vivado does not support any post BBR program verify option to verify the programmed BBR key.
Note: Pressing or pulsing the PROG pin when the board/FPGA is powered up will not clear the BBR
register.
Alternatively, you can clear the AES key in Vivado IDE by right-clicking the FPGA device in the
Hardware window, selecting Clear BBR Key
Figure 39: Clearing the AES Key for UltraScale and UltraScale+ Devices
When the Clear BBR Key dialog box appears, click OK to clear the key from the device
7 series, UltraScale, and UltraScale+ devices have one-time programmable bits called eFUSE bits
that perform specific functions. The different eFUSE bit types are as follows:
IMPORTANT! Programming eFUSE register bits is a one-time only operation. Once eFUSE register bits
are programmed (i.e., from unprogrammed state 0 to programmed 1 state), they cannot be reset to 0
and/or programmed again. You should take great care to double-check your settings before
programming any eFUSE registers.
CAUTION! If any eFUSE register bits have been previously programmed (i.e., from unprogrammed
state 0 to programmed state 1) and an attempt is made to program them again, the Vivado hardware
manager issues a critical warning indicating that some bits have already been programmed. However,
despite this warning, subsequent eFUSE register bits that have not been programmed during the
previous operation (in unprogrammed state 0) will be programmed.
IMPORTANT! Xilinx recommends programming the FUSE_USER, FUSE_KEY, and FUSE_RSA registers
first, then rerunning the eFUSE programming wizard to program the FUSE_SEC bits to control the FPGA
security settings, and then finally, the FUSE_CNTL bits to control read/write access to these eFUSE bits.
You can also access the device DNA by viewing the eFUSE registers in the Hardware Device
Properties window in Vivado Design Suite as shown in the following figure.
For more information on these features, see the 7 Series FPGAs Configuration User Guide (UG470).
The Program eFUSE Registers wizard appears as shown in the following figure, and guides you to
set the various options for the eFUSE registers.
○ Specify the AES key file (.nky) by typing the file name or navigating to the desired file.
After specifying a valid .nky file, the AES key field automatically fills in.
• USER bits [7:0] and USER bits [31:8]
○ The USER eFUSEs bits are provided to allow users to program their own special 32-bit
pattern. The lower eight FUSE_USER bits are programmed at the same time as the 256-bit
Advanced Encryption Engine (AES) key. The upper 24 user bits can be programmed
concurrently with AES key or at a later time
In the Control Register Settings pane, specify the following settings:
• CFG_AES_Only: When set, forces the use of the stored AES key.
• W_EN_B_Key_User: When set, disables programing of AES key and User register.
For more information on these features, see the 7 Series FPGAs Configuration User Guide (UG470).
Review the eFUSE settings in the Program eFUSE Registers Summary page.
All bits set in the Program eFUSE Registers wizard panels are shown in this pane. In this pane you
will see individual bit settings in order to review the specific programming settings. Review this
summary page carefully to ensure every bit that is intended to be programmed is set.
You can also access the device DNA by viewing the eFUSE registers in the Hardware Device
Properties window in Vivado Design Suite as shown in the following figure:
For more information on these features, see the UltraScale Architecture Configuration User Guide
(UG570).
The Program eFUSE Registers wizard appears as shown in the following figure, and guides you to
set the various options for the eFUSE registers.
In the Cryptographic Key Setup wizard pane, specify these key settings:
• Cryptographic file key (.nky): Specify a .nky file containing eFUSE AES and RSA keys
• AES Key (256-bit): The 256-bit AES eFUSE key read in from specified .nky file used to
decrypt loaded encrypted bitstream.
• RSA Key Digest (384-bit): The 384-bit RSA eFUSE key read in from specified .nky file used
by RSA.
• In the USER Register Setup wizard pane, specify the 32 bit USER or 128 bit USER register
In the USER register setup pane specify user define register bits. The 32 bit USER (FUSE_USER)
and 128 bit USER register (FUSE_USER128) registers are a set of user defined one-time
programmable eFUSE bits. The bits of these registers are cumulatively programmable. This
means that if you program only one USER bit in an eFUSE programming session (e.g., USER =
0x0000_0001 or bit 0), then on subsequent eFUSE programming sessions you can program any
of the remaining 0 bits (e.g., USER = 0x0000_0002 or bit 1).
After programming the FUSE_USER and FUSE_USER_128 registers, these registers can be read
in several ways:
In the Control Register Setup wizard pane, specify the following settings:
In the Control Register Setup pane, specify the eFUSE control settings.
• R_DIS_KEY: When set, disables CRC check that verifies the key & programming of the
FUSE_KEY encryption key.
• R_DIS_USER: When set, disables reading and programming the 32 bit user bits (FUSE_USER).
• R_DIS_SEC: When set, disables reading and programming of the security register bits
(FUSE_SEC).
• R_DIS_RSA: When set, disables reading and programming of the RSA key register (FUSE_RSA).
• W_DIS_USER: When set, disables programming of the 32 bit user bits (FUSE_USER).
• W_DIS_SEC: When set, disables programming of the security register bits (FUSE_SEC).
• W_DIS_RSA: When set, disables programming of the RSA key register (FUSE_RSA).
• W_DIS_USER_128: When set, disables programming of the 128 bit user bits
(FUSE_USER128).
For more details on the FUSE_SEC register refer to the UltraScale Architecture Configuration User
Guide (UG570).
Where $deviceIdx is set to the index of the UltraScale or UltraScale+ device on which you are
disabling the eFUSE Control Register bit programming.
This sets the W_DIS_CNTL bit, which in turn disables further eFUSE Control Register bit
programming.
IMPORTANT! If the W_DIS_CNTL bit is programmed, the programming of other eFUSE control register
bits is disabled, preventing future edits to the control register of the device.
In the Security Register Setup wizard pane, specify the following settings:
In the Security Register Setup wizard pane specify security control options over the type of
bitstreams allowed to load on the FPGA. The FUSE_SEC settings are:
For more details on the FUSE_SEC register refer to the UltraScale Architecture Configuration User
Guide (UG570).
Review the eFUSE settings in the Program eFUSE Registers Summary pane.
All bits set in the Program eFUSE Registers wizard panels are shown in this pane. In this pane you
will see individual bit settings in order to review the specific programming settings. Carefully
review this summary page to ensure every bit that is intended to be programmed is set.
Where $deviceIdx is set to the index of the UltraScale or UltraScale+ device that will have its
JTAG interface disabled.
IMPORTANT! The Tcl command to disable the JTAG interface for 7 series differs from command used
above for UltraScale or UltraScale+ devices. If a 7 series device is used, see the entry for
XSK_EFUSEPL_DISABLE_JTAG_CHAIN listed in Xilinx Answer Record 65110.
Note: This programming step should be performed as the last and final step after all desired eFUSE bits
have been programmed.
IMPORTANT! If the JTAG Disable bit is programmed, the JTAG interface will be disabled, preventing
future test and configuration access to the device. This bit should only be programmed if JTAG access to
the device is no longer required.
If no options are specified, the default name of this file is as follows, where <FUSE_DNA> is the
FUSE_DNA register value of the device.
export_<FUSE_DNA>.nkz
This default file is located in the launch directory of the Vivado IDE. You can change this file by
using the -efuse_export_file option on the program_hw_devices Tcl command, as in
the following example:
The Vivado IDE then starts using the specified NKZ file for exported eFUSE settings without
having to repeatedly specify this file in the Tcl options. Any previously created eFUSE export file
will not be removed; it will contain all the eFUSE settings applied prior to changing the eFUSE
export file name. After all eFUSE operations are performed, all eFUSE settings are stored in the
current eFUSE export file.
There is also an option to only export eFUSE settings instead of actually programming the device.
This can be useful for creating an NKZ file containing all the desired eFUSE settings without
affecting the device. Any eFUSE programming mistakes made in this mode can easily be
corrected by removing the eFUSE export file and starting over. This export-only mode can be
used with the following Tcl command:
This option applies only to each individual command, so the option must be used in every eFUSE
operation to keep the device from being programmed. Because eFUSE settings are always
exported to an NKZ file regardless of whether or not programming occurs, it is recommended not
to intermix the programming flow with the export-only flow. Otherwise, the resulting eFUSE
export file might contain a mix of eFUSE settings actually programmed into the device and those
only exported to the NKZ file, which makes the true state of the eFUSE registers in the device
unclear. Using this export-only mode, the same exact eFUSE export file in NKZ format is created
as in the programming case, but no programming is performed on the device.
It is also possible to skip programming the encryption keys that are specified in the NKZ file by
using the -skip_program_keys option on the program-hw_devices Tcl command.
System Monitor
The System Monitor (SYSMON) Analog-to-Digital Converter (ADC) measures die temperature
and voltage on the hardware device. The SYSMON monitors the physical environment via on-
chip temperature and supply sensors. The ADC provides a high-precision analog interface for a
range of applications.
The hw_sysmon data is stored in dedicated registers called status registers accessible through the
hw_sysmon_reg object. You can get the contents of the System Monitor registers by using the
get_hw_sysmon_reg command.
Every device that supports the System Monitor automatically has one or more hw_sysmon
objects created when refresh_hw_device is called. When the hw_sysmon object is created,
it is assigned a property for all the and voltage registers, as well as the control registers. On the
hw_sysmon object, the values assigned to the temperature and voltage registers are already
translated to Celsius/Fahrenheit and Volts.
Although you can use the get_hw_sysmon_reg command to access the hex values stored in
registers of a System Monitor, you can also retrieve values of certain registers as formatted
properties of the hw_sysmon object. For example, the following code retrieves the
TEMPERATURE property of the specified hw_sysmon object rather than directly accessing the
hex value of the register:
Complete list of all the System Monitor commands can be found in Description of hw_sysmon Tcl
Commands.
Note: If no sensors are selected, or the CIPS is not configured, only device temperature is accessible.
1. Ensure a CIPS is instantiated in the design. For more information on integrating the CIPS IP,
see Control, Interface and Processing System LogiCORE IP Product Guide (PG352). If a CIPS is
already present in the design, open the Block Design containing the CIPS by clicking Open
Block Design under IP integrator in the Flow Navigator. When the Block Design has opened,
double click on the CIPS to bring up the IP customization GUI.
2. Click Next and click on the blue box labeled PS PMC to enter the PS-PMC configuration
wizard.
3. In the left pane, click Sysmon.
4. The SysMon Configuration appears and SysMon can now be configured. Basic temperature
and/or voltage monitoring can be quickly configured by selecting a Common Configuration
Template. To select a specific voltage rail for monitoring, click on the On Chip Supply Monitor
tab and check the Enable radio button next to the rail to be monitored.
Figure 58: Configuring System Monitor Sensors in the CIPS IP Customization GUI
Chapter 8
An alternative way to program FPGAs and configuration memory devices is through the use of a
serial vector format (SVF) file. The SVF file generated through Vivado® Design Suite and Vivado
Lab Edition contains low level JTAG instructions and data required to program these devices.
Once the file is generated it can be used by boundary scan test tools independent of the Vivado
IDE.
In step 4, the program operations are recorded in sequential order and stored a cached file. The
cached file is then written out to a target destination in step 5. After the file is created, it can be
used by boundary scan tools or executed through Vivado Design Suite or Vivado Lab Edition
tools.
On any available server you can create an offline SVF target as shown below.
TIP: You can copy an existing SVF chain by enabling the Copy from target option. Alternatively you can
specify an SVF file that you created using the Vivado Hardware Manager from an earlier run of the flow.
Vivado IDE saves specifics of the SVF chain, so when it is read back, the SVF chain can be recreated.
The SVF Target that you just created appears Open under the your server in the Hardware
window in Vivado Hardware Manager.
To delete an existing SVF target, right-click the SVF target in the Hardware window and select
Delete.
IMPORTANT! When you delete a target, all the devices created for that target are also deleted. Moreover,
a deleted target is also closed if it was previously opened.
You can also use the Vivado Tcl mode or the Tcl Console in the Vivado IDE to create the SVF
Target.
Following are the steps needed to create an SVF target after initially launching Vivado or Vivado
Lab Edition:
open_hw_manager
connect_hw_server
create_hw_target my_svf_target
if {[string length [get_hw_targets -quiet -filter
{IS_OPENED == TRUE}]] > 0} \
{close_hw_target [get_hw_targets * -filter {IS_OPENED == TRUE}
] }; \
open_hw_target [get_hw_targets *my_svf_target]
current_hw_target
The first two commands can be omitted if already connected to a server. When executed, the
create_hw_target command defines the my_svf_target. Note that you cannot have two
targets with the same name in a session. Finally, after closing any open target and opening the
svf target, the create_hw_target command is run. As a result, the final command shows the full
hardware target handle name of the created my_svf_target.
Additionally, all the SVF hw_targets created in this session can be displayed by issuing the
following command:
To delete the created target, use the delete_hw_target command. For instance, by issuing
the following command, the my_svf_target is deleted:
IMPORTANT! When a target is deleted, all the devices created for the target are also deleted. Moreover a
deleted target is also closed if it was previously opened.
When you click Add Xilinx Part, the Add Xilinx Device dialog box opens. You can now choose the
appropriate Xilinx device to append to the SVF chain.
On selecting a Xilinx device and clicking OK, the Xilinx device is added to the SVF chain as
shown in the following figure.
You can also add non-Xilinx parts to the SVF device chain by right-clicking the SVF chain and
selecting Add Non-Xilinx Part as shown below.
This opens the Add Non-Xilinx Device dialog box as shown below.
Click OK, and the non-Xilinx part is added to the SVF device chain.
current_hw_target my_svf_target
open_hw_target
create_hw_device -part xcku9p
create_hw_device -part xcvu095
refresh_hw_target
get_hw_devices
In this example, the first two steps can be skipped if the SVF is already created and opened. The
create_hw_device commands in the example define the devices of the JTAG chain starting
with the first device on the chain and onward.
Note: The create_hw_device command only creates devices on an open SVF hardware target.
To add user defined devices to the chain, add the -idcode, -irlength, and -mask values
along with the part type name using the -part options. For instance, if you have a part called
"my_part" with a JTAG idcode of 1234567, an ir length of 8, mask of ffffffff, then you would
create the device as shown below:
open_hw_target [current_hw_target]
create_hw_device -idcode 01234567 -irlength 8 -mask ffffffff -part my_part
# print IR length for user defined devices
puts [get_property IR_LENGTH [lindex [get_hw_devices -filter {PART ==
my_part}] 0]]
puts $idcode_hex
close_hw_target
Note: The idcode for the create_hw_device should be a valid device ID code. ID code values and IR
lengths are typically provided by silicon vendors through device BSDL files.
To see a report of the target and its devices, run the report_hw_targets command. The
report shows details for all active targets in the system. Use this report to obtain properties of
the server, target, and device as shown below:
report_hw_targets
INFO: Server Property Information: localhost:3121
CLASS: hw_server
HOST: localhost
NAME: localhost:3121
PORT: 3121
SID: TCP:localhost:3121
INFO: Target Property Information: localhost:3121/xilinx_tcf/Xilinx/
my_svf_target
CLASS: hw_target
DEVICE_COUNT: 3
HW_JTAG: 0
IS_OPENED: 1
MAX_DEVICE_COUNT: 32
NAME: localhost:3121/xilinx_tcf/Xilinx/my_svf_target
FREQUENCY: 10000000
TYPE: xilinx_tcf
TID: jsn-XNC-my_svf_target
UID: Xilinx/my_svf_target
SVF: 1
Device: xcku9p_0
Device: xcvu095_1
Device: my_part_2
This opens up the Add Configuration Memory Device dialog box as shown below.
Select the appropriate memory device and click OK. The device is associated with the Xilinx
device and appears in the SVF device chain as shown below.
For example, you can right-click on the Xilinx® a200t device in the chain and select Add Program
Device Operation which bring up the Add Program Device Operation dialog box as shown below.
Specify the bitstream file to program the device with.
After you click OK, the program device operation is listed at the bottom of the SVF Operations
window.
Similarly, you can program the configuration memory device by right clicking on the memory
device and selecting Add Program Configuration Memory which bring up the Add Program
Configuration Memory dialog box as shown below. Specify the configuration file to program the
memory device with. You can also select additional programming options for memory devices like
Erase, Blankcheck, and Verify.
After you click OK, the program configuration memory device operation is listed at the bottom of
the SVF Operations window.
IMPORTANT! You can recreate an existing SVF chain by specifying an SVF file that you created with the
Vivado Hardware Manager from an earlier run of the flow. Vivado IDE saves specifics of the SVF chain to
the file, so that when it is read back, the SVF chain can be recreated.
The SVF chain, direct FPGA and indirect flash programming operations are captured in a
temporary file. When the write_hw_svf command is called, the temporary file is moved to the
filename passed to the command. After the write_hw_svfcommand is called, the temporary
file is reset and a subsequent programing operation is added to the beginning of the SVF file
sequence.
The following code segment shows the Tcl commands used to create a file named
my_xcku9p.svf containing the direct programming of a xcku9p device:
create_hw_target my_svf_target
open_hw_target
set device0 [create_hw_device -part xcku9p]
set_property PROGRAM.FILE {my_xcku9p.bit} $device0
program_hw_devices $device0
write_hw_svf my_xcku9p.svf
close_hw_target
In this sample code the xcku9p device is created using create_hw_device command whose
return value is set to a temporary variable called device0. This temporary value is then used to
reference the object when setting the PROGRAM.FILE property to the file my_xcku9p.bit file.
Next, the program_hw_device command is called using the device0 reference. When this
program_hw_device command runs, it creates a temporary SVF file with the SVF operations
necessary to program the my_xcku9p.bit file on the xcku9p. Lastly, the write_hw_svf
command takes the temporary file and moves it to the final target destination, myxcku9p.svf.
At this point, the SVF file creation process is complete and the target can be closed.
TIP: A final note on writing SVF files is that you should first create all the devices for the JTAG chain and
then perform the programming operations. If you happen to interleave create_hw_device commands
in between programming commands you will produce an output SVF file that has two different chain
sequences.
The first program command only captures the chain definition containing the first device. The
second program command includes both devices in the chain when writing out the SVF
instructions. Therefore, if you attempt to play this SVF file on a chain with two devices, the first
programming operations fail because the live chain gets two devices and not one as the
command expected.
To correct this problem you run the create_hw_device commands first. Then after the chain
is completely defined, perform the program operations as shown below:
To run an svf command you run the command on an open live target as follows:
execute_hw_svf my_file.svf
INFO: [Labtoolstcl 44-548] Creating JTAG TCL script from SVF file
INFO: [Labtoolstcl 44-549] Re-opening target in JTAG mode
INFO: [Labtoolstcl 44-551] Sourcing JTAG TCL script: my_file.tcl
Pass: SVF Execution completed with no errors
INFO: [Labtoolstcl 44-550] Restoring target to original mode
INFO: [Labtoolstcl 44-570] Execute SVF completed successfully
In this example, the file my_file.svf is executed. As part of the execution flow, the input SVF
file is converted via HW_JTAG Tcl operations into a temporary file. After this Tcl code is created,
the file is sourced to execute the converted SVF instructions. To see the JTAG_TCL operations,
you can run the execute_hw_svf command using the -verbose option. Once the command
completes you will see either the error at the instruction where the execution failed or a "Pass"
message at the end of the message log.
Chapter 9
In general, the Vivado tool provides several different ways to debug your design. You can use one
or more of these methods to debug your design, depending on your needs. In-System Logic
Design Debugging Flows focuses on the in-system logic debugging capabilities of the Vivado
Design Suite.
Related Information
The Vivado tool provides the means to generate the design used to exercise the gigabit
transceiver endpoints as well as the run-time software to take measurements and help you
optimize your high-speed serial I/O channels. Serial I/O Hardware Debugging Flows guides you
through the process of generating the IBERT design. Debugging the Serial I/O Design in
Hardware guides you through the use of the run time Vivado serial I/O analyzer feature.
Related Information
Chapter 10
1. Probing phase: Identifying what signals in your design you want to probe and how you want
to probe them.
2. Implementation phase: Implementing the design that includes the additional debug IP that is
attached to the probed nets.
3. Analysis phase: Interacting with the debug IP contained in the design to debug and verify
functional issues.
This in-system debug flow is designed to work using the iterative design/debug flow described in
the previous section. If you choose to use the in-system debugging flow, it is advisable to get a
part of your design working in hardware as early in the design cycle as possible. The rest of this
chapter describes the three phases of the in-system debugging flow and how to use the Vivado
logic debug feature to get your design working in hardware as quickly as possible.
In many cases, the decision you make on what signals to probe or how to probe them can affect
one another. It helps to start by deciding if you want to manually add the debug IP component
instances to your design source code (called the HDL instantiation probing flow) or if you want
the Vivado tool to automatically insert the debug cores into your post-synthesis netlist (called
the netlist insertion probing flow). The following table describes some of the advantages and
trade-offs of the different debugging approaches.
3. Once added, a green bar displays near the top of the tool bar indicating that designer
assistance is available. It is not necessary to run block automation unless there is a need to
configure additional options.
4. Click the button to validate the block design, then click the button to save the block design.
5. Generate the HDL wrapper for the Block Design by returning to the Project Manager, right
clicking on the newly created block design and selecting Create HDL Wrapper.
6. Once created, ensure this block design is instantiated as part of the design.
7. Proceed with using either the Netlist Insertion Debug Probing Flow, HDL Instantiation Debug
Probing Flow, or the IP integrator Debug Flow. If the design contains any debug cores, the
AXI4 Debug Hub will be automatically added to the netlist during opt_design and the
debug cores will be connected automatically
Note: By default, this block design will not have any input or output ports unless additional IPs are
added requiring I/O.
Note: For most applications it is not necessary to manually connect instantiated debug cores to the AXI4
Debug Hub. During opt_design an instance of the AXI4 Debug Hub and NoC will be inserted into the
netlist and the connections between the debug cores, debug hub, and CIPS core will be automatically
stitched.
Note: For more information on design creation, simulation, and debug using the CIPS core, see Control,
Interface and Processing System LogiCORE IP Product Guide (PG352).
AXI4-Stream ILA
Versal devices use the AXI4-Stream ILA that includes both ILA and System-ILA functionality. The
AXI4-Stream ILA also provides two choices for trace memory: Block RAM (BRAM) and UltraRAM
(URAM).
To enable manual connectivity to between the AXI4 Debug Hub and a debug core:
1. Generate and instantiate an instance of the AXI4 Debug Hub IP and connect it to the
Control, Interface, and Processing (CIPS) IP in the design using the PMC.
2. Customize the AXI4 Debug Hub IP and set the Number of Debug Cores to the exact number
of debug cores to be manually connected. For each debug core an AXI4-Stream master and
slave appear on the AXI4 Debug Hub IP.
Note: Unconnected AXI4-Stream ports on the AXI4 Debug Hub can cause errors during opt_design.
3. In the IP customization interface for the debug cores to be manually connected, select Enable
AXI4-Stream Interfaces for Manual Connection to AXI Debug Hub. AXI4-Stream master and
slave ports appear on the debug core.
4. Connect each AXI4-Stream master and slave port on the debug core to those on the AXI4
Debug Hub. The debug core also includes aclk and aresetn ports, which should be
connected to the same clock and reset connected to the AXI4 Debug Hub.
• The highest level is a simple wizard that creates and configures Integrated Logic Analyzer (ILA)
cores automatically based on the selected set of nets to debug.
• The next level is the main Debug window allowing control over individual debug cores, ports
and their properties. The Debug window can be displayed when the Synthesized Design is
open by selecting the Debug layout from the Layout Selector or the Layout menu, or can be
opened directly using Window → Debug.
• The lowest level is the set of Tcl XDC debug commands that you can enter manually into an
XDC constraints file or replay as a Tcl script.
You can also use a combination of the modes to insert and customize debug cores.
Note: In the Debug window, the Debug Nets view is a more net-centric view of nets that you have selected
for debug. The Debug Cores view is a more core-centric view where you can view and set core properties.
The procedure for marking nets for debug depends on whether you are working with an RTL
source-based project or a synthesized netlist-based project. For an RTL netlist-based project:
• Using the Vivado synthesis feature you can optionally mark HDL signals for debug using the
mark_debug constraint in VHDL and Verilog source files. The valid values for the mark_debug
constraint are "TRUE" or “FALSE”. The Vivado synthesis feature does not support the “SOFT”
value.
The following subsections provide syntactical examples for Vivado synthesis, XST, Synplify, and
Precision source files.
• The full green icon indicates nets with MARK_DEBUG property set, and connected to an
ILA core.
• The yellow icon indicates that there is no MARK_DEBUG on the net, but it is connected to
an ILA core.
IMPORTANT! Net names in an SDC source must be prefixed with the "n:" qualifier.
Note: Synopsys Design Constraints (SDC) is an accepted industry standard for communicating design
intent to tools, particularly for timing analysis. A reference copy of the SDC specification is available
from Synopsys by registering for the TAP-in program at: https://www.synopsys.com/Community/
Interoperability/Pages/TapinSDC.aspx
launch_runs synth_1
wait_on_run synth_1
You can also use the synth_design Tcl command to synthesize the design. Refer to the Vivado
Design Suite User Guide: Synthesis (UG901) for more details on the various ways you can
synthesize your design.
• Selecting a net in any of the design views (such as the Netlist or Schematic windows), then
right-click select the Mark Debug option.
• Selecting a net in any of the design views, then dragging and dropping the nets into the
Unassigned Debug Nets folder.
• Using the net selector in the Set up Debug wizard (see Using the Set Up Debug Wizard to
Insert Debug Cores for details).
Related Information
1. Optionally, select a set of nets for debugging either using the unassigned nets list or direct
net selection.
2. Select Tools → Set up Debug from the Vivado Design Suite main menu, or click Set up Debug
in the Flow Navigator under the Synthesized Design section.
3. Click Next to get to the Specify Nets to Debug panel (see the following figure).
4. Optionally, click Find Nets to Add to add more nets or remove existing nets from the table.
You can also right-click a debug net and select Remove Nets to remove nets from the table.
IMPORTANT! You can also select nets in the Netlist or other windows, then drag them to the list of
Nets to Debug.
5. Right-click a debug net and select Select Clock Domain to change the clock domain to be
used to sample value on the net.
Note: The Set up Debug wizard attempts to automatically select the appropriate clock domain for the
debug net by searching the path for synchronous elements. Use the Select Clock Domain dialog
window to modify this selection as needed, but be aware that each clock domain present in the table
results in a separate ILA core instance.
TIP: Refer to ILA Core and Timing Considerations in UltraFast Design Methodology Guide for Xilinx
FPGAs and SoCs (UG949) for tips on helping to minimize timing impact of the ILA Core.
6. Once you are satisfied with the debug net selection, click Next.
Note: The Set up Debug wizard inserts one ILA core per clock domain. The nets that were selected for
debug are assigned automatically to the probe ports of the inserted ILA cores. The last wizard screen
shows the core creation summary displaying the number of clocks found and ILA cores to be created
and/or removed.
7. If you want to enable either advanced trigger mode or basic capture mode, use the
corresponding check boxes to do so. Click Next to move to the last panel.
Note: The advanced trigger mode and basic capture mode features, when used in the Vivado Hardware
Manager, are described in more detail in Debugging Logic Designs in Hardware.
8. If you are satisfied with the results, click Finish to insert and connect the ILA cores in your
synthesized design netlist.
9. Configure the ILA core general options such as ILA data depth (C_DATA_DEPTH), number of
input pipe stages (C_INPUT_PIPE_STAGES), enabling the capture control feature
(C_EN_STRG_QUAL), and enabling the advanced trigger feature (C_ADV_TRIGGER). Refer to
Modifying Properties on the Debug Cores for descriptions of these options.
10. The debug nets are now assigned to the ILA debug core, as shown in the following figure.
Related Information
• Shows the list of debug cores that are connected to the Debug Hub (dbg_hub) core.
• Maintains the list of unassigned debug nets at the bottom of the window.
You can manipulate debug cores and ports from the popup menu or the toolbar buttons on the
top of the window.
Related Information
To disconnect nets from the debug core port, select the nets that are connected to the debug
core port, and click Disconnect Net.
You can also change properties on the ILA debug core. For example, to change the number of
samples captured by the ILA debug core, do the following:
1. In the Debug window, select the desired ILA core (such as u_ila_0).
2. In the Cell Properties window, select the Debug Core Options view.
3. Using the C_DATA_DEPTH pull-down list, select the desired number of samples to be
captured.
A full description of all ILA core properties can be found in the following table.
Related Information
Changing the BSCAN User Scan Chain of the Debug Core Hub
Debugging Logic Designs in Hardware
You can configure probes as data or trigger or both using the Set up Debug wizard as shown in
the following figure.
Figure 79: Configuring Probes as Data or Trigger or Both Using the Set Up Debug
Wizard
When you program the device at runtime with a design containing probes configured as "data"
only, you will not be able to use these probes to configure trigger or capture setup conditions.
Conversely, you will not be able to use probes configured as "trigger" only in the Waveform
window.
Alternatively you can set the ALL_PROBE_SAME_MU_CNT property in the Tcl Console as follows:
TIP: If Capture Control is enabled, you have a choice of using 1 to 15 comparators. One comparator is
used by the capture control data filtering mechanism.
IMPORTANT! It is not possible to set different number of comparators for different probes in the ILA
using the insertion flow. Xilinx recommends that you use the HDL instantiation flow to achieve that.
1. Open the synthesized design netlist from the synthesis run called synth_1.
open_run synth_1
IMPORTANT! The XDC commands in the following steps are only valid when a synthesized design
netlist is open.
4. Set the width of the clk port of the ILA core to 1 and connect it to the desired clock net.
set_property port_width 1 [get_debug_ports u_ila_0/clk]
connect_debug_port u_ila_0/clk [get_nets [list clk ]]
Note: You do not have to create the clk port of the ILA core because it is automatically created by the
create_debug_core command.
IMPORTANT! All debug port names of the debug cores are lower case. Using upper-case or mixed-
case debug port names will result in an error.
5. Set the width of the probe0 port to the number of nets you plan to connect to the port.
Note: You do not have to create the first probe port (probe0) of the ILA core because it is automatically
created by the create_debug_core command. set_property port_width 1 [get_debug_ports u_ila_0/
probe0]
6. Connect the probe0 port to the nets you want to attach to that port.
connect_debug_port u_ila_0/probe0 [get_nets [list A_or_B]]
7. Optionally, create more probe ports, set their width, and connect them to the nets you want
to debug.
create_debug_port u_ila_0 probe
set_property port_width 2 [get_debug_ports u_ila_0/probe1]
connect_debug_port u_ila_0/probe1 [get_nets [list {A[0]} {A[1]}]]
For more information on these and other related Tcl commands, type help -category
ChipScope in the Tcl Console of the Vivado Design Suite.
• create_debug_core
• create_debug_port
• connect_debug_port
• set_property (on any debug_core or debug_port object)
The corresponding XDC commands are saved to a constraints file with the suffix _debug.xdc
and are used during implementation to insert and connect the debug cores.
IMPORTANT! Saving constraints while in project mode may cause the synthesis and implementation
steps to go out-of-date. However, you do not need to re-synthesize the design since the debug XDC
constraints are only used during implementation. You can force the synthesis step up-to-date by selecting
the Design Runs window, right-clicking the synthesis run (for example, synth_1), and selecting Force up-
to-date.
Related Information
The following Tcl script is an example of using the debug core insertion commands in a Non-
Project flow.
Table 7: Debug Cores in Vivado IP Catalog Available for Use in the HDL Instantiation
Probing Flow
The new ILA core has two distinct advantages over the legacy ILA v1.x core:
• Works with the integrated Vivado logic analyzer feature (refer to Debugging Logic Designs in
Hardware).
• No ICON core instance or connection is required.
Related Information
1. Customize and generate the ILA and/or VIO debug cores that have the right number of probe
ports for the signals you want to probe.
2. (Optional) Customize and generate the JTAG-to-AXI Master debug core and connect it to an
AXI slave interface of an AXI peripheral or interconnect core in your design.
3. Synthesize the design containing the debug cores.
4. (Optional) Modify debug hub core properties.
5. Implement the design containing the debug cores.
• For more information on customizing the ILA core, refer to Integrated Logic Analyzer LogiCORE
IP Product Guide (PG172).
• For more information on customizing the VIO core, refer to Virtual Input/Output LogiCORE IP
Product Guide (PG159).
• For more information on customizing the JTAG-to-AXI Master core, refer to JTAG to AXI
Master LogiCORE IP Product Guide (PG174).
After customizing the core, click the Generate button in the IP customization wizard. This
generates the customized debug core and add it to the Sources view of your project.
It is also possible to set the comparators for each IP as shown below. It is possible to have
multiple probes of different width within a single ILA. To do that you need to uncheck the Same
Number of Comparators for All Probe Ports field under General Options.
You then set the exact number of comparators to be use per probe by selecting the Probe_Ports
tab and setting the Number of Comparators field with the desired number of comparators.
TIP: If Capture Control is enabled, you have a choice of using 1 to15 comparators. One comparator is used
by the capture control data filtering mechanism.
TIP: Depending on the number of comparators chosen, the tool automatically recalculates the number of
probes that you can use in the ILA IP. The maximum number of comparators allowed per ILA is 1024.
Probes that participate in trigger or capture compare values are configured as "trigger" only
probes. This optimizes the use of BRAMs by the ILA core. Typically, probes whose data needs to
be captured are configured as "data" only probes. Probes that participate in both trigger compare
values, and whose data needs to be captured should be configured as "trigger and data".
For using cross trigger feature, at core generation time, you should configure the ILA core to have
dedicated trigger input ports (TRIG_IN and TRIG_IN_ACK) and dedicated trigger output ports
(TRIG_OUT and TRIG_OUT_ACK). If you want to use the ILA trigger input or output signals, you
must use the HDL instantiation method of adding ILA cores to your design.
TRIG_OUT_ACK signal is an indication to the ILA core (another ILA, user design, or processor)
that TRIG_OUT is properly received and causes the ILA to lower the TRIG_OUT signal on
receiving TRIG_OUT_ACK.
A typical cross trigger setup is illustrated below where ILA2 cross triggers into ILA1. The
TRIG_OUT signal of ILA2 is connected to the TRIG_IN signal of ILA1. The TRIG_IN_ACK signal of
ILA 1 is connected to the TRIG_OUT_ACK signal of ILA2.
ILA 1 ILA 2
trig_in trig_out
trig_in_ack trig_out_ack
trig_out trig_in
trig_out_ack trig_in_ack
X16408-031616
• It is assumed that the logic driving the trig_in port is synchronous to the ILA clk.
• It takes 1 clk cycle for the trig_in_ack signal to get asserted after trig_in is asserted.
• It takes 9 clk cycles for the trig_out signal to get asserted when trig_in is used or trigger
condition is met.
• The trig_in_ack and trig_out_ack signals go low only when trigger signals are de-
asserted.
For a detailed tutorial that covers using the Cross Trigger feature between the FPGA fabric and
the Zynq-7000 SoC processor, see the Vivado Design Suite Tutorial: Embedded Processor Hardware
Design (UG940).
u_ila_0
(
.clk(clk),
.probe0(counterA),
.probe1(counterB),
.probe2(counterC),
.probe3(counterD),
.probe4(A_or_B),
.probe5(B_or_C),
.probe6(C_or_D),
.probe7(D_or_A)
);
Note: Unlike the legacy VIO and ILA v1.x cores, the new ILA core instance does not require a connection to
an ICON core instance. Instead, a debug core hub (dbg_hub) is automatically inserted into the synthesized
design netlist to provide connectivity between the new ILA core and the JTAG scan chain.
launch_runs synth_1
wait_on_run synth_1
You can also use the synth_design Tcl command to synthesize the design. Refer to Vivado Design
Suite User Guide: Synthesis (UG901) for more details on the various ways you can synthesize your
design.
Figure 89: Debug Window Showing ILA Core and Debug Core Hub
IMPORTANT! The default values for C_USER_SCAN_CHAIN is 1 for the debug hub core. If using a scan
chain value other than 1 for the debug hub core, you must manually change them on the device in the
Hardware Manager. Refer to Programming the Hardware Device for more details.
IMPORTANT! If you plan to use the Microprocessor Debug Module (MDM) or other IP that uses the
BSCAN primitive with the Vivado logic debug cores, you need to set the C_USER_SCAN_CHAIN property
of the dbg_hub to a user scan chain that does not conflict with the other IPs Boundary Scan Chain
setting. Failure to do so results in errors later in the implementation flow.
Figure 90: Changing the User Scan Chain Property of the Debug Core Hub
Related Information
Note: On Versal devices, all System ILA features are now supported using the ILA core and can be selected
by changing the ILA Input Type from Net Probes to Interface Monitor.
See this link in the Vivado Design Suite User Guide: Designing IP Subsystems Using IP Integrator
(UG994) for the steps to debug interfaces and/or nets in the Block Design.
To clear a net and/or interface of debug attributes, right-click the net/interface and then click
Clear Debug.
After this Block Design has been validated and synthesized, you can open the Debug window in
the synthesized design to view the debug cores instantiated and inserted into the design. The
System ILA and JTAG to AXI Master debug cores are displayed as shown below.
Figure 93: System ILA and JTAG to AXI Master Debug Cores
For more details on how these interfaces can be used for debug in the Hardware Manager and to
take advantage of the AXI Event level debug, see Debugging AXI Interfaces in the Hardware
Manager.
Related Information
launch_runs impl_1
wait_on_run impl_1
You can also implement the design using the implementation commands opt_design,
place_design, and route_design. Refer to the Vivado Design Suite User Guide:
Implementation (UG904) for more details on the various ways you can implement your design.
• Choose probe width judiciously. The bigger the probe width the greater the impact on both
resource utilization and timing.
• Choose ILA core data depth judiciously. The bigger the data depth, the greater the impact on
both block RAM resource utilization and timing.
• Ensure that the clocks chosen for the ILA cores are free-running clocks. Failure to do so could
result in an inability to communicate with the debug core when the design is loaded onto the
device.
• Close timing on the design prior to adding the debug cores. Xilinx does not recommend using
the debug cores to debug timing related issues.
• Make sure the clock input to the ILA core is synchronous to the signals being probed. Failure
to do so results in timing issues and communication failures with the debug core when the
design is programmed into the device.
• Make sure that the design meets timing before running it on hardware. Failure to do so results
in unreliable results.
• For Non-Versal architectures: Ensure that the clock going to the dbg_hub is a free running
clock. Failure to do so could result in an inability to communicate with the debug core when
the design is loaded onto the device. You can use the connect_debug_port Tcl command
to connect the clk pin of the debug hub to a free-running clock.
• For Non-Versal architectures: If you still notice that timing has degraded due to adding the
ILA debug core, and the critical path is in the dbg_hub, perform the following steps:
1. Open the synthesized design.
2. Find the dbg_hub cell in the netlist.
3. Go to the Properties of the dbg_hub.
4. Find property C_CLK_INPUT_FREQ_HZ.
5. Set it to frequency (in Hz) of the clock that is connected to the dbg_hub.
6. Find property C_ENABLE_CLK_DIVIDER and enable it.
7. Re-implement design.
The Vivado Hardware Manager uses the JTAG interface to communicate with the Vivado Debug
Hub core, which provides an interface between the JTAG Boundary Scan (BSCAN) interface of
the FPGA device and the Vivado Debug cores.
• JTAG Clock: This clock synchronizes the internal state machine operation of the JTAG
Boundary Scan (BSCAN) interface. You will typically choose the JTAG clock frequency in the
Vivado Hardware Manager while connecting to the target device. If your design contains
debug cores, ensure that the JTAG clock is 2.5x times slower than the debug hub clock.
You can modify the JTAG frequency by using the Open New Hardware Target wizard or the
following Tcl command:
The Vivado Debug Hub core, which provides an interface between the JTAG Boundary Scan
(BSCAN) interface of the FPGA device and the Vivado Debug cores. The Debug Hub core is
inserted automatically by the Vivado IDE during the design implementation step if it detects
debug cores in the design. The Vivado IDE chooses the clock driving the Debug Hub core
during the design implementation step.
Xilinx recommends that the Debug Hub clock frequency be around 100 MHz or less because
the JTAG clock speeds do not require a particularly high frequency.
You can change the Debug Hub Clock using the following TCL command.
Note: You need to run this command after the design has been synthesized, but before implementation.
You can also reduce the Debug Hub Clock Frequency to a 100 MHz using the following TCL
commands.
Note: You need to run this command after the design has been synthesized, but before implementation.
This is recommended for designs which have very high speed clocks. This command enables the
inclusion of an MMCM based clock divider inside of the Debug Hub core to achieve a clock frequency
of 100 MHz.
The Debug Hub IP bridges between host machine (through BSCAN Primitive which supports a
serial interface) and debug cores on the chip (through XSDB interface which supports a parallel
interface). The BSCAN primitive clock shifts the data in and out of the chip to the Debug Hub IP
serially. The Debug Hub IP collects the data and sends it to all the debug cores on parallel
interface using the Debug Hub clock and vice versa. If any of the debug core clocks are not free
running or not stable, you end up with corrupted data which results in a "Debug Cores not
detected" message. To avoid any corruption of data, it is important to ensure that the JTAG
clock and Debug Hub clocks are stable and free running during the debug core detection process.
1. The Debug Hub Clock must be free running and stable. Xilinx recommends that the clock be
driven from a clock driver that is properly constrained and whose timing is met.
2. If the clocks are driven from MMCM/PLL, ensure that the MMCM/PLL LOCKED signal is
high prior to any debug core measurements. If the clock is connected to the Debug Hub or
any of the debug cores and the MMCM/PLL LOCKED signal transitions to a 0 in the middle
of debug operations, the clock may have significant jitter that might result in unpredictable
behavior of the debug logic.
3. In order to detect the debug cores, take measurements using those cores and capture data. It
is required to have all the associated clocks free running and stable.
The following table lists the various debugging phases and the clocks required during the specific
phases.
Debugging Phase JTAG Clock Debug Hub Clock Debug Core Clock2
Connect to Target Stable1 NA NA
Programming Stable1 NA NA
Debug Core Discovery Stable1 Stable NA
Debug Core Measurement3 Stable1 Stable1 Stable
Notes:
1. Stable Clock: A clock that does not pause/stop during the event.
2. Assumes the Debug Core Clock is different from the Debug Hub Clock.
3. A Debug Core Measurement phase includes any step that does a get or set of properties on the debug core.
If the Debug Hub Clock is inactive or unavailable, the Vivado® Hardware Manager issues the
following error message:
If any of the Debug Core Clocks are inactive or unavailable, the Vivado Hardware Manager issues
the following error message:
The example design contains two ILA cores, ILA "A" and ILA"B."
The clocking topology of this debug network is as follows. After the design has been
programmed into the device, the Vivado Hardware Manager tries to discover the existence of the
Debug Hub core in the design. The Debug Hub in turn tries to discover and account for all the
debug cores connected to it. In this design the debug cores are ILA "A" and ILA "B." Notice that
CLKA drives both the ILA "A" and the Debug Hub core. CLKB drives the ILA "B" debug core.
When you connect to the target and program the device, expect an active JTAG clk. In the Debug
Core Discovery Phase, expect a free running and stable clock driving the Debug Hub core, which
in this case is CLKA. During Debug Core Measurement phase (i.e., anything that involves getting/
setting properties on the debug core), expect an active JTAG, Debug Hub, and Debug Core
clocks. If you expect to trigger and capture data on ILA "B", expect free running and stable JTAG,
Debug Hub (CLKA), and Debug Core (CLKB) Clocks.
[Chipscope 16-336] Failed to find or create hub core for debug slave <debug
core name>. Insertion of debug hub is not supported when there are
instantiated debug bridge cores in either master mode or switch enabled in
the design. Either remove debug slave core or instantiate a debug bridge
master in the region of the debug slave
This issue occurs because the debug flow detects the presence of a Debug Bridge IP and does
not attempt to automatically insert a Debug Hub IP. However, the instance of the Debug Bridge
IP in the design is not in the correct mode to connect to a debug core. To resolve this issue,
ensure that the design has at least one instance of a Debug Bridge IP in BSCAN-to-Debug Hub
mode.
For an example of instantiating debug cores in a Dynamic Function eXchange design as well as a
description of the functionality within the Vivado Hardware Manager, see this link in Vivado
Design Suite Tutorial: Dynamic Function eXchange (UG947).
Chapter 11
The steps to debug your design in hardware using an ILA debug core are:
1. Connect to the hardware target and program the FPGA or ACAP with the .pdi file.
2. Set up the ILA debug core trigger and capture controls.
3. Arm the ILA debug core trigger.
4. View the captured data from the ILA debug core in the Waveform window.
5. Use the VIO debug core to drive control signals and/or view design status signals.
6. Use the JTAG-to-AXI Master debug core to run transactions to interact with various AXI
slave cores in your design.
For more information on using the ILA core, refer to Setting up the ILA Core to take a
Measurement. For more information on using the VIO core, refer to Setting up the VIO Core to
take a Measurement.
IMPORTANT! Ensure the JTAG clock is slower than the clocks input to the debug cores. You can modify
the JTAG frequency using the Open New Hardware Target wizard or the following Tcl command:
set_property PARAM.FREQUENCY 250000 [get_hw_targets */xilinx_tcf/
Digilent/210203327962A]
Related Information
Default Dashboards
When debug cores are detected upon refreshing a hardware device, the default dashboard for
each debug core is automatically opened.
• Settings window
• Status window
• Trigger Setup window
• Capture Setup window
• Waveform window
You can start adding probes to the Trigger Setup window by clicking the "+" button in the center
of the window, and selecting probes from the Add Probes window as seen in the following figure.
The VIO Default dashboard starts out empty to which you can add VIO probes to as shown in
the following figure.
To view a dashboard associated with a debug core, right-click the debug core object in the
Hardware window, select the Dashboard option, and click the dashboard name. Double-clicking a
debug core in the hardware window will pop up the dashboards associated with that debug core.
• Minimize
• Maximize
• Close
Moving Windows
To move windows:
1. Select the window tab or title bar, and drag the window. A gray outline indicates where the
window will be located after the move.
2. To commit to the placement, release the mouse button.
Note: Dropping one window onto an existing window places the two window tabs in the same region.
IMPORTANT! You cannot move windows into or out of the workspace. However, you can resize and
move the windows within the workspace.
Resizing Windows
• To resize windows, click and drag a window border.
Note: The mouse cursor changes to a resize cursor when positioned over a window border or drag
handle, indicating that you can click and drag the window border to resize the window.
• To expand a window to use the all of the viewing environment, click the Maximize button in
the upper right corner of the window.
• To restore a window to its original size, double-click the window title bar or tab.
Closing Windows
• To close windows, click the Close button in the upper right corner of the window.
Note: In some cases, this button is also available in the window tab.
• Right-click a window tab or title bar, and select Close from the popup menu.
Window Tabs
Each window has a tab that you can select to make that the window is active. The tab is at the
bottom of some windows, such as the Trigger Setup and Capture Setup windows.
TIP: To make the next tab active, press Ctrl+Tab. To make the previous tab active, press Ctrl+Shift+Tab. To
maximize or minimize the window, double-click the window tab.
Customizing Dashboards
Typically the windows in the default dashboards should be enough to debug your design and
view the results. However there are times when you might want to move windows around (i.e.
customize your dashboards). For example you may want to be able to view both the ILA status
and Waveform window in addition to controlling VIO probes in the same dashboard. In those
situations Xilinx recommends customizing the dashboard to fit your needs.
Dashboard Options
Every dashboard has a Dashboard Options slideout on the left. Use the Dashboard Options
button on the left side of a dashboard to open its Dashboard Options settings. The Dashboard
Options settings allow you to control the windows that appear in a specific dashboard. For
example you may want to customize the ILA dashboard to include one of the VIO windows as
well. As shown below you click on the VIO window to include it in the Dashboard Options and
the VIO window shows up in the ILA Dashboard. You can now add the VIO probes you are
interested in and trigger the ILA window.
Click the Dashboard Options button on the left side of a dashboard to open and close the
Dashboard Options slideout.
When the New Dashboard dialog appears, you can customize the dashboard as necessary and
click OK.
You can also use the Dashboard toolbar button to create new dashboards as shown below.
TIP: To view all the dashboards associated with a debug core, right-click the debug core in the Hardware
view and click on Dashboard. Alternatively double-click the debug core in the Hardware view and the list
of dashboards associated with the debug core popup.
TIP: To float a single window in a dashboard, Xilinx recommends that you create a dashboard with just
that window and float the dashboard.
Click OK, and the Waveform window relocates to the specified dashboard.
Closing Dashboards
You can close all the Dashboards by clicking Dashboard on the toolbar and selecting Close All.
This will delete all of the dashboards and the user settings in those dashboards.
You can also close a single dashboard by clicking the "X" button on the upper right hand corner.
This will delete the dashboard and all of the user settings in the dashboard.
Note: If you still do not see the ILA core after programming and/or refreshing the FPGA or ACAP, check to
make sure the device was programmed with the appropriate .bit file and check to make sure the
implemented design contains an ILA core. Also, check to make sure the appropriate .ltx probes file that
matches the .bit file is associated with the device.
Click the ILA core (called hw_ila_1 in the following figure) to see its properties in the ILA Core
Properties window. You can see all the probes corresponding to the ILA core by using the
Windows → Debug Probes menu option, which displays the Debug Probes window as shown in
the following figure.
Adding Probes
You can add relevant probes to specific windows in an ILA Dashboard by clicking on the "+"
button on the window toolbar or workspace.
Normally, the debug probes file is automatically created during the implementation process.
However, you can also use the write_debug_probes Tcl command to write out the debug
probes information to a file:
IMPORTANT! If you are using non-project mode, you must manually call the
write_debug_probes command immediately following the opt_design command.
You can also set the location using the following Tcl commands to associate a debug probes file
called C:\myprobes.ltx with the first device on the target board:
To perform these operations, right-click an ILA/VIO core's debug probe(s) and select one of the
following:
• Name: Allows you to select the long, short, or custom name of the debug probe. Subsequent
references to the debug probe in the Vivado IDE window will use the name that you selected.
• Long: Displays the full hierarchical name of the signal or bus being probed.
• Custom: Displays the custom name given to the signal or bus when renamed.
You can add the probe into the Basic trigger setup window and set up the trigger conditions. The
comparator usage column gives you information on the comparator used within the probe for the
specific compare condition out of the total number of comparators associated with the probe.
TIP: The Comparator Usage column is a hidden column. To enable this column right-click the Trigger Setup
column title row as shown below and select Comparator Usage.
You can use the ILA Dashboard to interact with the ILA debug core in several ways:
IMPORTANT! User-defined probes that involve constant values can only be used in the Waveform
window. They cannot be used in the Trigger Setup window.
TIP: You can only create user-defined probes on ILA debug cores. Creating user-defined debug probes
for VIO cores is not currently supported.
This brings up the Create User Defined Probe dialog box. Select the ILA core you want to create
the probes on, the name of the new probe, and finally the probe bits, and/or constants that make
up this new probe.
To add specific probe bits to this new probe, click the "+" button and select Add Probe.
This brings up the Add Probes dialog that allows you to choose an existing probe or specific bits
of an existing probe.
You can also add or remove bits in the Create User Defined dialog box. Move specific bits up or
down as shown in the following figure.
Figure 114: Editing Bits in Create User Defined Probe Dialog Box
Tcl Flow
To create a user-defined debug probe use the create_hw_probe Tcl command.
Where:
• name: is the name of the hw_probe. Must be unique for hw_probes belonging to the same
device. Bus probes must have their range specified. For example, myNewProbe[31:0].
hw_ila_1]
# Constant only probe. NO triggering allowed on constant ONLY probes.
create_hw_probe -map {0} {my_constant_gnd[0:0]} [get_hw_ilas hw_ila_1]
# Create a user-defined probe as a mix of constants and ILA probe ports
create_hw_probe -map {0000 probe0[31:0] 1010} {my_mixed_probe[47:8]}
[get_hw_ilas
hw_ila_1]
# Creating scalar hw_probe called "foobar" from probe1:
create_hw_probe -map {probe1} foobar [get_hw_ilas hw_ila_1]
# Creating scalar hw_probe called "foobar" from bit 3 of probe0:
create_hw_probe -map {probe0[3]} foobar [get_hw_ilas hw_ila_1]
# Creating vector hw_probe called "foobar[0:0]" from probe1:
create_hw_probe -map {probe1} foobar[0:0] [get_hw_ilas hw_ila_1]
# Creating vector probe called "foobar[3:0]" from probe0:
create_hw_probe -map {probe0} foobar[3:0] [get_hw_ilas hw_ila_1]
# Creating vector probe called "foobar[3:2]" from probe0[1:0]:
create_hw_probe -map {probe0[1:0]} foobar[3:2] [get_hw_ilas hw_ila_1]
Tcl Flow
You can delete user-defined debug probes using the delete_hw_probe Tcl command.
For example, to delete a probe foobar created earlier using create_hw_probe do the
following:
You can also use the set_property Tcl command to change the trigger mode of the ILA core.
For instance, to change the trigger mode of ILA core hw_ila_1 to BASIC_ONLY, use the
following command:
Note: You can drag-and-drop the first probe anywhere in the Basic Trigger Setup window, but you must
drop the second and subsequent probes on top of the first probe. The new probe is always added above
the previously added probe in the table. You can also use drag-and-drop operations in this manner to re-
arrange probes in the table.
IMPORTANT! Only probes that are in the Basic Trigger Setup window participate in the trigger condition.
Any probes that are not in the window are set to "don't care" values and are not used as part of the trigger
condition.
You can remove probes from the Basic Trigger Setup window by selecting the probe and hitting
the Delete key or by right-click selecting the Remove option.
TIP: Prior to changing the Radix ensure that the value is set to a string that applies to the new Radix.
1. Operator: This is the comparison operator that you can set to the following values:
• == (equal)
• != (not equal)
• < (less than)
• <= (less than or equal)
• > (greater than)
• >= (greater than or equal)
2. Radix: This is the radix or base of the Value that you can set to the following values:
• [B] Binary
• [H] Hexadecimal
• [O] Octal
• [U] Unsigned Decimal
• [S] Signed Decimal
3. Value: This is the comparison value that will be compared (using the Operator) with the real-
time value on the net(s) in the design that are connected to the probe input of the ILA debug
core. Depending on the Radix settings, the Value string is as follows:
• Binary
○ 0: logical zero
○ 1: logical one
○ X: don't care
• Hexadecimal
○ X: All bits corresponding to the value string character are "don't care" values
• Octal
○ X: All bits corresponding to the value string character are "don't care" values
• Unsigned Decimal
○ Any non-negative integer value
• Signed Decimal
○ Any integer value
The meaning of the four possible values is shown in the following table.
IMPORTANT! If the ILA core has two or more debug probes that concatenated together to share a single
physical probe port of the ILA core, then only the "Global AND" (AND) and "Global NAND" (NAND) trigger
condition settings are supported. The "Global OR" (OR) and "Global NOR" (NOR) functions are not
supported due to limitations of the probe port comparator logic. If you want to use the "Global OR" (OR) or
"Global NOR" (NOR) trigger condition settings, then make sure you assign each unique net or bus net to
separate probe ports of the ILA core.
If the ILA core in the design that is running in the hardware device has advanced trigger
capabilities, the advanced trigger mode features can be enabled by setting the Trigger mode
control in the ILA Properties window of the ILA Dashboard to ADVANCED_ONLY or
ADVANCED_OR_TRIG_IN.
1. A new control called Trigger State Machine appears in the ILA Properties window
2. The Basic Trigger Setup window is replaced by a Trigger State Machine code editor window.
If you are specifying an ILA trigger state machine program for the first time, the Trigger State
Machine code editor window will appear as the one shown in the following figure.
To create a new trigger state machine, click the Create new trigger state machine link, otherwise
click the Open existing trigger state machine link to open a trigger state machine program file
(.tsm extension). You can also open an existing trigger state machine program file using the
Trigger state machine text field and/or browse button in the ILA Properties window of the ILA
Dashboard.
The simple default trigger state machine program is designed to be valid for any ILA core
configuration regardless of debug probe or trigger settings. This means that you can click the Run
Trigger for the ILA core without modifying the trigger state machine program.
However, it is likely that you will want to modify the trigger state machine program to implement
some advanced trigger condition. The comment block at the top of the simple state machine
shown in the previous figure gives some instructions on how to use the built-in language
templates in the Vivado IDE to construct a trigger state machine program (see the following
figure). A full description of the ILA trigger state machine language, including examples, is found
in Trigger State Machine Language Description.
Related Information
Figure 122: Compiling the Trigger State Machine without Arming the Trigger
• BASIC_OR_TRIG_IN: used to trigger the ILA core when a logical OR-ing of the TRIG_IN pin of
the ILA core and BASIC_ONLY trigger mode is desired.
• ADVANCED_OR_TRIG_IN: used to trigger the ILA core when a logical OR-ing of the TRIG_IN
pin of the ILA core and ADVANCED_ONLY trigger mode is desired.
• TRIG_IN_ONLY: used to trigger the ILA core when the TRIG_IN pin of the ILA core transitions
from a low to high.
If the ILA core has trigger output ports enabled, then you can use the following TRIG_OUT Mode
to control the propagation of trigger events to the TRIG_OUT port:
• ALWAYS: Store a data sample during a given clock cycle regardless of any capture conditions
• BASIC: Store a data sample during a given clock cycle only if the capture condition evaluates
"true"
You can also use the set_property Tcl command to change the capture mode of the ILA core.
For instance, to change the capture mode of ILA core hw_ila_1 to BASIC, use the following
command:
Related Information
• For information on adding probes to the Basic Capture Setup window, refer to the section
called Adding Probes to Basic Trigger Setup Window.
• For information on setting the compare values on each probe in the Basic Capture Setup
window, refer to the section called ILA Probe Compare Value Settings.
• For information on setting the basic capture condition in the Basic Capture Setup window,
refer to the section called Setting Basic Trigger Condition. One key difference is the ILA core
property used to control the capture condition is called CONTROL.CAPTURE_CONDITION.
Related Information
Note: An ILA buffer size equal to the number of capture windows is not supported.
TIP: Click Stop Trigger before the entire ILA data capture buffer is full to upload and display all capture
windows that have been filled. For example, if the ILA data buffer is segmented into four windows, and
three of them have filled with data, click Stop Trigger to halt the ILA core and upload and display the three
filled capture windows.
The following table illustrates the interaction between the Vivado runtime software and
hardware when you set the Number of Capture Windows to more than 1 and the Trigger Position
to 0.
Software Hardware
User Runs Trigger on the ILA core Window 0: ILA is armed
Window 0: ILA triggers
Window 0: ILA fills capture window 0
Window 1: ILA is rearmed
Window 1: ILA triggers
Window 1: ILA fills capture window 1
...
Window n-1: ILA is rearmed
Window n-1: ILA triggers
Window n-1: ILA fills capture window n
Entire ILA Capture Buffer is Full
Data is uploaded and displayed The ILA core is rearmed such that it is ready to trigger on the clock
cycle immediately following the last sample captured of the previous
window.
The following table illustrates the interaction between the Vivado runtime software and
hardware when you set the Number of Capture Windows to more than 1 and the Trigger
Position to greater than 0.
Table 11: Number of Capture Windows > 1 and Trigger Position > 0
Software Hardware
User Runs Trigger on the ILA core Window 0: ILA is armed
Window 0: ILA fills capture buffer up to trigger position
Window 0: ILA triggers
Window 0: ILA fills the rest of capture window 0
Window 1: ILA is rearmed
Window 1: ILA fills capture buffer up to trigger position
Window 1: ILA triggers
Window 1: ILA fills capture buffer
Window 1: ILA fills window 1
...
Window n-1: ILA is rearmed
Window n-1: ILA fills capture buffer up to trigger position
Window n-1: ILA triggers
Window n-1: ILA fills capture buffer
Window n-1: ILA fills window n
Entire ILA Capture Buffer is Full
Data is uploaded and displayed Triggers could be missed between two windows since the ILA now
has to fill the capture data up to the trigger position.
• Sample number 0 corresponds to the first (left-most) sample in the captured data window.
• Sample number 1023 corresponds to the last (right-most) sample in the captured data
window.
• Samples numbers 511 and 512 correspond to the two "center" samples in the captured data
window.
You can also use the set_property Tcl command to change the ILA core trigger position:
Note: Refer to the section called Modifying Properties on the Debug Cores for more details on how to set
the maximum capture buffer data depth on ILA cores that are added to the design using the Netlist
Insertion probing flow.
You can also use the set_property Tcl command to change the ILA core data depth:
Related Information
• Run Trigger: Selecting the ILA core(s) to be armed followed by clicking the Run Trigger button
on the ILA Dashboard or Hardware window toolbar arms the ILA core to detect the trigger
event that is defined by the ILA core basic or advanced trigger settings.
• Run Trigger Immediate: Selecting the ILA core(s) to be armed followed by clicking the Run
Trigger Immediate button on the ILA Dashboard or Hardware window toolbar arms the ILA
core to trigger immediately regardless of the ILA core trigger settings. This command is useful
for detecting the "aliveness" of the design by capturing any activity at the probe inputs of the
ILA core.
You can also arm the trigger by selecting and right-clicking on the ILA core and selecting Run
Trigger or Run Trigger Immediate from the popup menu (see the following figure).
TIP: You can run or stop the triggers of multiple ILA cores by selecting the desired ILA cores, then using the
Run Trigger, Run Trigger Immediate, or Stop Trigger buttons in the Hardware window toolbar. You can also
run or stop the triggers of all ILA cores in a given device by selecting the device in the Hardware window
and click the appropriate button in the Hardware window toolbar.
Related Information
The table below illustrates the interaction between the Vivado IDE runtime software and
hardware when you invoke the Auto Re-Trigger option.
Software Hardware
Click the Auto Re-trigger option on the ILA core ILA is armed
ILA triggers
ILA fills capture buffer
ILA is full
Data is uploaded and displayed ILA is rearmed
ILA triggers
ILA fills capture buffer
ILA is full
Lots of cycles are missed between the ILA "full" event and display of
the ILA data
IMPORTANT! As there is a delay between the time the ILA data is full and the data is uploaded and
displayed in the GUI, there is a very high probability of missing cycles between these events where the ILA
could have triggered.
• In the Hardware window Status column of the row(s) corresponding to the ILA debug core(s).
• In the Trigger Capture Status window of the ILA Dashboard.
The Status column in the Hardware window indicates the current state or status of each ILA core
(see the following table).
ILA Core
Description
Status
Idle The ILA core is idle and waiting for its trigger to be run. If the trigger position is 0, then the ILA core will
transition to the Waiting for Trigger status once the trigger is run, otherwise the ILA core will transition
to the Pre-Trigger status.
Pre-Trigger The ILA core is capturing pre-trigger data into its data capture window. Once the pre-trigger data has
been captured, the ILA core will transition to the Waiting for Trigger status.
Waiting for The ILA core trigger is armed and is waiting for the trigger event to occur as described by the basic or
Trigger advanced trigger settings. Once the trigger occurs, the ILA core will transition to the Full status if the
trigger position is set to the last data sample in the capture window, otherwise it will transition to the
Post-Trigger status.
Post-Trigger The ILA core is capturing post-trigger data into its data capture window. Once the post-trigger data has
been captured, the ILA core will transition to the Full status.
Full The ILA core capture buffer is full and is being uploaded to the host for display. The ILA core will
transition to the Idle status once the data has been uploaded and displayed.
The contents of the Trigger Capture Status window in the ILA Dashboard depend on the Trigger
Mode setting of the ILA core.
• Core status: indicates the status of the ILA core trigger/capture engine (see Viewing Trigger
and Capture Status for a description of the status indicators).
• Capture status: indicates the current capture window, the current number of samples
captured in the current capture window, and the total number of samples captured by the ILA
core. These values are all reset to 0 once the ILA core status is Idle.
Related Information
• Core status: indicates the status of the ILA core trigger/capture engine (see Viewing Trigger
and Capture Status for a description of the status indicators).
• Trigger State Machine Flags: indicates the current state of the four trigger state machine flags.
• Trigger State: when the core status is Waiting for Trigger, this field indicates the current state
of the trigger state machine.
• Capture status: indicates the current capture window, the current number of samples
captured in the current capture window, and the total number of samples captured by the ILA
core. These values are all reset to 0 once the ILA core status is Idle.
Related Information
Normally, the ILA probe file is automatically created during bitstream generation. However, you
can also use the write_debug_probes Tcl command to write out the debug probes
information to a file:
1. If you are in project mode, open the Implemented Design. If you are in non-project mode,
open the implemented design checklist.
2. Run the write_debug_probes filename.ltx Tcl command.
You can also set the location using the set_property Tcl command:
Related Information
X16755-032717
Enable Auto Re-Trigger: Select the Enable Auto Re-Trigger button on the Waveform window
toolbar to enable Vivado IDE to automatically re-arm the ILA core associated with the Waveform
window trigger after a successful trigger+upload+display operation has completed.
The captured data displayed in the Waveform window corresponding to the ILA core is
overwritten upon each successful trigger event. The Auto Re-Trigger option can be used with the
Run Trigger and Run Trigger Immediate operations. Click the Stop Trigger button to stop the
trigger currently in progress.
Run Trigger: Arms the ILA core associated with the Waveform window to detect the trigger
event that is defined by the ILA core basic or advanced trigger settings.
Run Trigger Immediate: Arms the ILA core associated with the Waveform window to trigger
immediately regardless of the ILA core trigger settings. This command is useful for detecting the
"aliveness" of the design by capturing any activity at the probe inputs of the ILA core.
Stop Trigger: Stops the ILA core trigger of the ILA associated with the Waveform window.
Export ILA Data: Captures data from an ILA core and saves it to a file. The data can be captured
in either native, .csv, or .vcd format. On clicking this icon on the Waveform window toolbar
the following dialog box appears.
The ILA core is the name of the ILA debug core to export data for. The format is a selection
among Native, CSV, and VCD formats.
• Native format configures the write_hw_ila_data command to export the ILA data in
native ILA format.
This ILA file can be imported back into Vivado IDE so that you can view previously captured
ILA data. The read_hw_ila_data TCL command can be used to import the ILA data back
into Vivado IDE as shown in the example below:
read_hw_ila_data {./iladata.ila}
display_hw_ila_data
• CSV format configures the write_hw_ila_data command to export the ILA data in the
form of a .csv file that can be used to import the data into a spreadsheet or third-party
application.
• VCD file format configures the write_hw_ila_data command to export the ILA data in the
form of a .vcd file that can be used to import into a third-party application or viewer.
IMPORTANT! While ILA data can be exported in the CSV, VCD, and native ILA format, only the native
ILA format can be imported into Vivado. Also, native ILA data imported into Vivado is supported only
for offline viewing of previously captured data. The probe signals cannot be used for other purposes
such as triggering, etc.
This Tcl command sequence uploads the captured data from the ILA core and writes it to an
archive file called my_hw_ila_data_file.ila. The archive file contains the waveform
database file, the waveform configuration file, a waveform comma separated value file, and a
debug probes file.
TIP: Use the -csv_file option to generate a comma-separated values (CSV) file. This configures the
write_hw_ila_data command to export the ILA data in the form of a CSV file that can be used to
import into a spreadsheet or third-party application, rather than the default binary ILA file format.
TIP: Use the -vcd_file option to generate a value change dump (VCD) file. This configures the
write_hw_ila_data command to export the ILA data in the form of a VCD file that can be used to
import into a third-party application or viewer, rather than the default binary ILA file format.
You can change the DISPLAY_RADIX property of all the probes of all ILAs in the design as
follows in the Vivado Hardware Manager Tcl Console:
Note: Here you are changing the radix of all the probes in all the ILAs to BINARY. To change the radix to
HEX, use the script below.
This Tcl command sequence reads the previously saved captured data from the ILA core and
displays it in the Waveform window.
Note: The waveform configuration settings (dividers, markers, colors, probe radices, etc.) for the ILA Data
Waveform window is also saved in the ILA captured data archive file. Restoring and displaying any
previously saved ILA data uses these stored waveform configuration settings.
IMPORTANT! Do NOT use the open_wave_config command to open a waveform created from ILA
captured data. This is a simulator-only command and will not function correctly with ILA captured data
waveforms.
The process involves entering enumeration name-value pairs and associating them with a probe.
The enumeration name-value pair associations are available using Tcl commands and are stored
between sessions.
In cases where the mark_debug attribute is used to probe a state register in a state machine with
enumerated states, the state enumeration will be preserved though implementation, and
displayed automatically in the Waveform window.
Figure 130: State Encoding Preserved and Displayed as a Probe Enumeration in the
Waveform Viewer
Probe compare values can be set using enumeration names in the Trigger Setup and Capture
Control Setup windows. Probes and their enumeration names corresponding to values can be
displayed in the Waveform window as well.
Add/Edit Enumerations
Define New Enumerations Using the Hardware Manager
To associate a new enumeration name-value pair to a debug probe, right-click the debug probe
either in the Debug Probes window or the Trigger/Capture Setup window and select Edit
Enumeration.
Select the name-value pair and use the "+" and “-” buttons on the left to add or delete
enumerations. You can change the name, radix, and values fields in the table.
Example:
Example:
TIP: Using the -remove_all option on remove_hw_probe_enum removes all of the enumerations
associated with the probe.
Access Enumeration
Enumerations are stored as hw_probe properties, so set_property, get_property, and
report_property commands can be used on these properties.
The enumeration properties have a prefix ENUM, which needs to be used when using it with
set_property and get_property commands. See the following example.
Advanced Trigger
You can compare values using enumeration in the Advanced Trigger State Machine scripts as in
the following example.
state my_state0:
if (fast_ila_slice5_fb == 5'eFIFTEEN) then
set_flag $flag1;
goto my_state0;
elseif (fast_ila_slice5_fb == 5'eTWELVE) then
trigger;
else
clear_flag $flag1;
goto my_state0;
endif
Enumeration information is saved to waveform data files and is used in subsequent displays of
waveform data. The default for waveform probes that have Enumerations defined is to have the
Enumerations displayed.
When a waveform object has Show as Enumeration selected, enumeration names are displayed.
If there is no matching Enumeration for the waveform value, it will instead be displayed
according to the selected radix.
IMPORTANT! If the waveform has been created prior to creating the enumerations, you can apply new
enumerations to the waveform by saving the waveform ILA data using the Tcl commands below:
See this link in the Vivado Design Suite User Guide: Designing IP Subsystems Using IP Integrator
(UG994) for the steps to debug interfaces and/or nets in the Block Design.
If you have instantiated System ILA debug cores in your IP integrator Block Design, you can
debug and monitor AXI transactions and their corresponding read and write events in the
waveform window.
• Read transactions start with the beginning of the Address Command event on the AR (Read
Address) channel.
• Read transactions end with the Last Read Data event on the R (Read Data) channel.
• Write transactions start with the beginning of the Address Command event on the AW (Write
Address) channel.
• Write transactions end with the Write Response event on the B (Write Response) channel.
Transactions are only shown when the address, data, and/or response events have matching IDs.
In addition, transactions are only shown in the waveform if both the start and end events occur
within the captured data waveform. When multiple outstanding/overlapping transactions are
displayed in the Waveform window, multiple transaction rows are used.
It is possible that the transactions on the interface can cause the outstanding transaction
tracking logic within the System ILA IP to overflow as shown in the following figure.
• The number of outstanding transactions for a particular ID overflow the transaction counter
capacity.
• The number of IDs that have outstanding transactions overflow the number of available
counters.
In either case, an overflow condition can be resolved by re-customizing the System ILA core in
the IP integrator block design to increase the number of outstanding read and/or write
transactions. See the following figure.
Figure 141: Increasing the Number of Outstanding Transactions That Can Be Tracked
by System ILA
This waveform reports AXI interface related transactions and events on the Read, Write, Address,
and Data channel events.
AXI Transactions
The AXI Transaction reports on the Read and Write Transactions of the AXI Read Address, AXI
Read Data, Write Address, and Write Data channels.
Hovering over a specific read or write Transaction in the Waveform window brings up a window
that highlights the Address, ID, Start, End, and Duration associated with the specific transaction
as shown below.
Name Description
No Read Addr Cmds Indicates that no address command events occurred on the Read Address channel.
Addr Cmd Indicates a valid address command phase of a read transaction. This event starts when
ARVALID = '1'. This event ends when both ARVALID = '1' and ARREADY = '1' in the same
clock cycle.
• Net Name
○ ARVALID
○ ARREADY
○ ARID
○ ARADDR
○ ARBURST
○ ARLEN
○ ARSIZE
○ ARCACHE
○ ARPROT
○ ARLOCK
○ ARQOS
○ AR_CNT
Name Description
No Read Data Beats Indicates that no events occurred on the Read Data channel
Data Beat Indicates a (non-last) data beat of a read transaction. This event occurs when RAVLID =
'1' and RREADY = '1' in the current clock cycle.
Name Description
Last Data Indicates the last data beat of a read transaction. This event occurs when RVALID = '1'
and RREADY = '1' and RLAST = '1' in the current clock cycle.
• Net Name
○ RVALID
○ RREADY
○ RLAST
○ RID
○ RDATA
○ RRESP
○ R_CNT
Name Description
No Write Addr Cmds Indicates that no address command events occurred on the Write Address channel.
Addr Cmd Indicates a valid address command phase of a write transaction. This event starts when
AWVALID = '1'. This event ends when both AWVALID = '1' and AWREADY = '1' in the same
clock cycle.
• Net Name
○ AWVALID
○ AWREADY
○ AWID
○ AWADDR
○ AWBURST
○ AWLEN
○ AWSIZE
○ AWCACHE
○ AWPROT
○ AWLOCK
○ AWQOS
○ AW_CNT
Name Description
No Write Data Beats Indicates that no events occurred on the Write Data channel.
Data Beat Indicates a (non-last) data beat of a write transaction. This event occurs when WVALID =
'1' and WREADY = '1' in the current clock cycle, and either of the two signals were '0' in
the previous clock cycle.
Last Data Indicates the last data beat of a write transaction. This event occurs when WVALID = '1'
and WREADY = '1' and WLAST = '1' in the current clock cycle.
• Net Name
○ WVALID
○ WREADY
○ WLAST
○ WDATA
○ WSTRB
Name Description
No Write Responses Indicates that no events occurred on the Write Response channel.
Write Response Indicates response phase of a write transaction. This event occurs when BVALID = '1' and
BREADY = '1' in the current clock cycle.
• Net Name
○ BVALID
○ BREADY
○ BID
○ BRESP
○ B_CNT
The following table shows how to use both the individual AXI control signal probes as well as the
AXI channel control probes to implement useful basic trigger and capture control equations. The
following figure shows how to implement the "End of Read Address Command OR End of Write
Address Command" event using the basic trigger setup GUI.
Combined AXI
AXI Event Individual AXI Control Signals Channel Control
Probe
End of the Read Address Command ((ARVALID == 1) && (ARREADY == 1)) (*ar_ctrl == 2'b11)
End of the Last Read Data Beat ((RVALID == 1) && (RREADY == 1) && (RLAST == 1)) (*r_ctrl == 3'b111)
End of the (Non-Last) Read Data ((RVALID == 1) && (RREADY == 1) && (RLAST == 0)) (*r_ctrl == 3'b011)
Beat
End of the Write Address Command ((AWVALID == 1) && (AWREADY == 1)) (*aw_ctrl == 2'b11)
End of the Write Read Data Beat ((WVALID == 1) && (WREADY == 1) && (WLAST == 1)) (*w_ctrl == 3'b111)
End of the (Non-Last) Read Data ((WVALID == 1) && (WREADY == 1) && (WLAST == 0)) (*w_ctrl == 3'b011)
Beat
Figure 144: Basic Trigger Setup for "End of Read Address Command OR End of Write
Address Command" Event
Note: If you still do not see the VIO core after programming and/or refreshing the FPGA or ACAP, check to
make sure the device was programmed with the appropriate .pdi file and check to make sure the
implemented design contains an VIO core. Also, check to make sure the appropriate .ltx probes file that
matches the .bit file is associated with the device.
Click the VIO core (called hw_vio_1 in the following figure) to see its properties in the VIO Core
Properties window. By selecting the VIO core, you should also see the probes corresponding to
the VIO core in the Debug Probes window as well as the corresponding VIO Dashboard in the
Vivado IDE workspace (see the following figure).
The VIO core can become out-of-sync with the Vivado IDE. Refer to Viewing the VIO Core
Status for more information on how to interpret the VIO status indicators.
The VIO core operates on an object property-based set/commit and refresh/get model:
• To read VIO input probe values, first refresh the hw_vio object with the VIO core values.
Observe the input probe values by getting the property values of the corresponding hw_probe
object. Refer to the section called Interacting with VIO Core Input Probes for more
information.
• To write VIO output probe values, first set the desired value as a property on the hw_probe
object. These property values are then committed to the VIO core in hardware in order to
write these values to the output probe ports of the core. Refer to the section called
Interacting with VIO Core Input Probes for more information.
Related Information
The VIO Dashboard is a central location for all status and control information pertaining to a
given VIO core. When a VIO core is first detected upon refreshing a hardware device, the VIO
Dashboard for the core is automatically opened. If you need to manually open or re-open the
dashboard, right-click the VIO core object in either the Hardware or Debug Probes windows and
select Open Dashboard.
Related Information
Note: Setting the refresh rate to 0 causes all automatic refreshes from the VIO core to stop. Also note that
very small refresh values may cause your Vivado IDE to become sluggish. Xilinx recommends a refresh rate
of 500 ms or longer.
If you want to manually read a VIO input probe value, you can use Tcl commands to do so. For
instance, if you wanted to refresh and get the value of the input probe called BUTTON_IBUF of
the VIO core hw_vio_1, run the following Tcl commands:
Related Information
• Text to display the input as a text field. This is the only display type for VIO input probe
vectors (more than one bit wide).
• LED to display the input as a graphical representation of a light-emitting diode (LED). This
display type is only applicable to VIO input probe scalars and individual elements of VIO input
probe vectors. You can set the high and low values to one of four colors:
○ Gray (off)
○ Red
○ Green
○ Blue
When the display type of the VIO input probe is set to Text, you can change the radix by
right-clicking a VIO input probe in the VIO Probes window of the VIO Dashboard window and
selecting:
• Radix > Binary to change the radix to binary.
• Radix > Octal to change the radix to octal.
• Radix > Hex to change the radix to hexadecimal.
• Radix > Unsigned to change the radix to unsigned decimal.
• Radix > Signed to change the radix to signed decimal.
You can also set the radix of the VIO input probe using a Tcl command. For instance, to change
the radix of a VIO input probe called "BUTTON_IBUF", run the following Tcl command:
The VIO input probe activity values are shown as arrows in the activity column of the VIO
Probes window of the VIO Dashboard window:
• An up arrow indicates that the input probe value has transitioned from a 0 to a 1 during the
activity persistence interval.
• A down arrow indicates that the input probe value has transitioned from a 1 to a 0 during the
activity persistence interval.
• A double-sided arrow indicates that the input probe value has transitioned from a 1 to a 0 and
from a 0 to a 1 at least once during the activity persistence interval.
The persistence of how long the input activity status is displayed can be controlled by right-
clicking a VIO input probe in the VIO Probes window of the VIO Dashboard window and
selecting:
• Activity Persistence > Infinite to accumulate and retain the activity value until you reset it.
• Activity Persistence > Long (80 samples) to accumulate and retain the activity for a longer
period of time.
• Activity Persistence > Short (8 samples) to accumulate and retain the activity for a shorter
period of time.
You can also set the activity persistence using a Tcl command. For instance, to change the activity
persistence on the VIO input probe called BUTTON_IBUF to a long interval, run the following Tcl
command:
The activity for all input probes for a given core can be reset by right-clicking the VIO core in the
Hardware window and selecting Reset All Input Activity. You can also do this by running the
following Tcl command:
TIP: You can change the type, radix, and/or activity persistence of multiple scalar members of a VIO input
probe vector by right-clicking the whole probe or multiple members of the probe, then making a menu
choice. The menu choice applies to all selected probe scalars.
Figure 149: VIO Outputs in the VIO Probes Window of the VIO Dashboard
Related Information
You can also write out a new value to the VIO core using Tcl commands. For instance, if you
wanted to write a binary value of "11111" to the VIO output probe called vio_slice5_fb_2
whose radix is already set to BINARY, run the following Tcl commands:
Related Information
• Text to display the output as a text field. This is the only display type for VIO input probe
vectors (more than one bit wide).
• Toggle Button to display the output as a graphical representation of a toggle button. This
display type is only applicable to VIO output probe scalars and individual elements of VIO
input probe vectors.
When the display type of the VIO output probe is set to "Text", you can change the radix by
right-clicking a VIO output probe in the VIO Cores tabbed view of the Debug Probes window
and selecting:
You can also set the radix of the VIO output probe using a Tcl command. For instance, to change
the radix of a VIO output probe called “vio_slice5_fb_2” to hexadecimal, run the following Tcl
command:
Note: Resetting the VIO output probes to their initial values may cause the output probe values to become
out-of-sync with the Vivado IDE. Refer to the section called Synchronizing the VIO Core Output Values to
the Vivado IDE on how to handle this situation.
Related Information
• Write the values from the Vivado IDE to the VIO core by right-clicking the VIO core in the
Hardware window and selecting the Commit VIO Core Outputs option. You can also do this
running a Tcl command:
commit_hw_vio [get_hw_vios {hw_vio_1}]
• Update the Vivado IDE with the current values of the VIO core output probe ports by right-
clicking the VIO core in the Hardware window and selecting the Refresh Input and Output
Values from VIO Core option. You can also do this running a Tcl command:
refresh_hw_vio -update_output_values 1 [get_hw_vios {hw_vio_1}]
The JTAG-to-AXI Master (JTAG-AXI) cores that you add to your design appear in the Hardware
window under the target device. If you do not see the JTAG-AXI cores appear, right-click the
device and select Refresh Hardware. This re-scans the FPGA device and refreshes the Hardware
window.
Note: If you still do not see the ILA core after programming and/or refreshing the FPGA device, check to
make sure the device was programmed with the appropriate .bit file and check to make sure the
implemented design contains an ILA core.
Click to select the JTAG-AXI core (called hw_axi_1 in the following figure) to see its properties in
the AXI Core Properties window.
where:
The next step is to run the transaction that was just created using the run_hw_axi command.
Here is an example on how to do this:
The last step is to get the data that was read as a result of running the transaction. You can use
either the report_hw_axi_txn or report_property commands to print the data to the screen
or you can use the get_property command to return the value for use elsewhere.
where:
The next step is to run the transaction that was just created using the run_hw_axi command.
Here is an example on how to do this:
IMPORTANT! If you reprogram the device, all the existing jtag_axi transactions will be deleted. You may
need to recreate these transactions again.
TIP: The -queue optional argument to the run_hw_axi Tcl command allows you to specify hw_axi
transactions in queue mode. Queued operation allows up to 16 read and 16 write transactions to be
queued in the JTAG to AXI Master FIFO and issued back-to-back for low latency and higher performance
between the transactions. Non-queued transactions are simply run as submitted.
• Install and run the Vivado Lab Edition on your lab machine. For more details refer to Vivadoo
Lab Edition of this user guide.
• Install and run the full Vivado IDE on your lab machine.
• Install latest version of the Vivado Design Suite or Vivado Hardware Server (Standalone) on
your remote lab machine, and use the Vivado logic analyzer feature on your local machine to
connect to a remote instance of the Vivado Hardware Server (hw_server).
Related Information
The following steps explain how to use the Vivado logic analyzer feature to connect to a Vivado
hardware server (hw_server.bat on Windows platforms or hw_server on Linux platforms)
that is running on the lab machine:
1. Install the latest version of the Vivado Design Suite or Vivado hardware server (standalone)
on the lab machine.
IMPORTANT! You do not need to install the full Vivado Design Suite or Vivado Lab Edition on the lab
machine to only use the remote hardware server feature. However, if you want to use the Vivado
Hardware Manager features (such as the Vivado logic analyzer or Vivado serial I/O analyzer) on the
lab machine, you will need to install the Vivado Lab Edition on the lab machine. You do not need any
software licenses to run the hardware server, any of the Hardware Manager features, or the Vivado
Lab Edition.
2. Start up the hw_server application on the remote lab machine. Assuming you installed the
Vivado hardware server (standalone) to the default location and your lab machine is a 64-bit
Windows machine, the file path is as follows:
C:\Xilinx\VivadoHWSRV\vivado_release.version\bin\hw_server.bat
3. Start the Vivado IDE in GUI mode on a different machine than your lab machine.
4. Follow the steps in the Connecting to the Hardware Target and Programming the Device
section to open a connection to the target board that is connected to your lab machine.
However, instead of connecting to a Vivado CSE server running on localhost, use the host
name of your lab machine.
5. Follow the steps in the Setting up the ILA Core to Take a Measurement section and beyond to
debug your design in hardware.
Related Information
For more information about the Hardware Manager commands, run the help -category
hardware Tcl command in the Tcl Console.
Note: Detailed help for each of these commands can be obtained by typing <command name> -help on
the Vivado Tcl Console.
• One KC705 board's Digilent JTAG-SMT1 cable (serial number 12345) accessible via a Vivado
hw_server running on localhost:3121.
• Single JTAG-to-AXI Master core in a design running in the XC7K325T device on the KC705
board.
• JTAG-to-AXI Master core is in an AXI-based system that has an AXI BRAM Controller Slave
core in it.
• One KC705 board's Digilent JTAG-SMT1 cable (serial number 12345) accessible via a Vivado
CSE server running on localhost:3121.
• Single ILA core in a design running in the XC7K325T device on the KC705 board.
• ILA core has a probe called counter[3:0].
Trigger At Startup
The Trigger at Startup feature is used to configure the trigger settings of an ILA core in a
design .bit file so that it is pre-armed to trigger immediately after device startup. You do this
by taking the various trigger settings that ordinarily get applied to an ILA core running in a design
in hardware, and applying them to the ILA core in the implemented design.
IMPORTANT! The following process for using Trigger at Startup assumes that you are have a valid ILA
design working in hardware, and that the ILA core has NOT been flattened during the synthesis flow.
1. Run through the first pass of the ILA flow as usual to set up the trigger condition.
a. Open the target, configure the device, and bring up the ILA Dashboard.
b. Enter the trigger equations for the ILA core in the ILA Dashboard.
2. From the Vivado Tcl command line, export the trigger register map file for the ILA core. This
file contains all of the register settings to "stamp" back on to the implemented netlist. The
output from this is a single file.
% run_hw_ila -file ila_trig.tas [get_hw_ilas hw_ila_1]
3. Go back and open the previously implemented routed design in Vivado IDE. There are two
ways to do this depending on your project flow.
a. Project Mode: Use the Flow Navigator to open the implemented design.
b. Non-Project Mode: Open your routed checkpoint: %open_checkpoint <file>.dcp
4. At the Implemented Design Tcl Console, apply the trigger settings to the current design in
memory, which is your routed netlist.
%apply_hw_ila_trigger ila_trig.tas
Note: If you see an ERROR indicating that the ILA core has been flattened during synthesis, you will
need to regenerate your design and force synthesis to preserve hierarchy for the ILA core. Ensure that
you are have a valid ILA design working in hardware, and that the ILA core has NOT been flattened
during the synthesis flow.
5. At the Implemented Design Tcl Console, write the bitstream with Trigger at Startup settings.
IMPORTANT! To pick up the routed design changes do this at the Tcl command console only:
write_bitstream trig_at_startup.bit
6. Go back to the Hardware Manager and reconfigure with the new .bit file that you
generated in the previous step. You will have to set the property for the updated .bit file
location either through the GUI or through a Tcl command. Make sure you set the new .bit
file as the one to use for configuration in the hardware tool.
a. Select the device in the hardware tree.
Memory calibration content are shown in a a debug interface that can be used to very quickly
identify calibration status, and read and write window margin. This debug interface is always
included in the generated Memory Interface (UltraScale, and UltraScale+) designs.
• get_hw_migs
○ Displays what memory interfaces exist in the design.
• report_propery[lindex [get_hw_migs] 0]
○ Reports all of the parameters available for the memory interface.
○ Where 0 is the index of the memory interface to be reported (index begins with 0).
For more specific details see the UltraScale or 7 Series Memory Calibration debug commands
in the following documents:
• Xilinx Answer 43879, MIG 7 Series DDR3/DDR2 - Hardware Debug Guide.
• UltraScale Architecture-Based FPGAs Memory IP LogiCORE IP Product Guide (PG150)
Memory calibration content is shown in a debug interface that can be used to very quickly
identify calibration status and read/write window margin. This debug interface is always enabled
as part of the DDRMC integrated block.
• get_hw_ddrmcs
○ Get a list of Versal ACAP integrated and soft DDRMC cores.
For more information on the DDRMC, see the Versal ACAP Programmable Network on Chip and
Integrated Memory Controller LogiCORE IP Product Guide (PG313).
For an example of instantiating debug cores in a DFX design, as well as functionality within the
Vivado Hardware Manager, see this link in Vivado Design Suite Tutorial: Dynamic Function
eXchange (UG947).
Support for the HBM monitor is always included in the generated High Bandwidth Memory
Controller. The HBM monitor displays the stack temperature, read, write, and overall throughput.
You can export the captured data to a comma separated value (CSV) formatted text file for
further post-processing or analysis.
• get_hw_hbms - Displays a list of the HBM interfaces that exist in the design.
• refresh_hw_hbm [lindex [get_hw_hbms] 0] - Refreshes the status of the specified
hardware HBM(s), in this case the HBM denoted by index 0.
More specific details and examples can be found in Appendix D of AXI High Bandwidth Controller
LogiCORE IP Product Guide (PG276).
Figure 155: Enabling PCI Express Link Debug in the Versal PCI Express Integrated
Block IP Configuration GUI
The PCI Express LTSSM debug content will be shown in an LTSSM State Transition Diagram. This
interface displays an ordered list of the LTSSM state transitions showing which states have been
visited as well as a diagram illustrating the visited states and currently occupied state in the
LTSSM.
ChipScoPy API
ChipScoPy is an open-source project from Xilinx® that enables high-level control of Versal®
debug IP running in hardware without the need to use the Vivado® Hardware Manager. Using a
simple Python API, developers can develop applications that control and communicate with
ChipScope™ debug IP such as the Integrated Logic Analyzer (ILA), Virtual IO (VIO), device
memory access, and more.
Chapter 12
The hw_ila Tcl object represents the ILA core in hardware. Every time an ILA core uploads
captured data, it is stored in memory in a corresponding Tcl hw_ila_data object. These objects
are named predictably so the first ILA core in hardware 'hw_ila_1' produces data in a
corresponding Tcl data object named 'hw_ila_data_1' after trigger and upload. When working
online with hardware, every waveform is backed by the in-memory hw_ila_data object and
has a 1:1 correspondence with this object illustrated by the diagram in the previous figure. For
each Tcl hw_ila_data object, a wave database (WDB) file and wave configuration (WCFG) file
are created and automatically tracked in a directory of the Vivado project. The previous figure
illustrates the flow of data from the hardware hw_ila on the left through to the waveform display
on the right.
The combination of the wave configuration, WCFG, file and wave transition database, WDB, file
contain the waveform database and customizations displayed in the Vivado waveform user
interface. These waveform files are automatically managed in the Vivado ILA flow and users are
not expected to modify the WDB or WCFG files directly. The wave configuration can be
modified by changing objects in the waveform viewer (such as signal color, bus radix, signal order,
markers, etc). This automatically saves the wave configuration changes to the appropriate WCFG
file in the Vivado project.
It is possible to archive waveform configurations and data for later viewing by using the Tcl
command write_hw_ila_data. This stores the hw_ila_data, wave database and wave
configuration in an archive for later viewing offline. See the section, Saving and Restoring
Captured Data from the ILA Core for details on using read_hw_ila_data and
write_hw_ila_data for offline storage and retrieval of waveforms.
Related Information
1 2 3 5 4 3
X18959-032717
The description for the labeled objects in the previous figure is as follows:
Figure 159: ILA Probe Names and Values Shown in Waveform Viewer
Immediately after triggering and uploading ILA data for the first time, the waveform viewer
populates with all probes connected to the ILA core. It is possible to customize probes in the
viewer in addition to removing existing probes or adding new probes to the viewer. This section
covers the basic operation of the waveform viewer.
To remove a probe from the waveform viewer, right-click the scalar or bus to delete in the Name
column and select Delete from the popup menu. Alternatively, select the signal or bus to delete
and press the Delete key. Probe transition data is not actually deleted from memory it is just
hidden from view when probes are removed.
To add another copy of a signal or bus to the Waveform window, select the signal or bus in the
Waveform window. Then select Edit → Copy or type Ctrl+C. This copies the object to the
clipboard. Select Edit → Paste or type Ctrl+V to paste a copy of the object in the waveform.
You can do the same using the Tcl command add_wave as shown below.
X16755-032717
• Enable Auto Re-Trigger: Select the Enable Auto Re-Trigger button on the Waveform window
toolbar to enable Vivado IDE to automatically re-arm the ILA core associated with the
Waveform window trigger after a successful trigger+upload+display operation has completed.
The captured data displayed in the Waveform window corresponding to the ILA core is
overwritten upon each successful trigger event. The Auto Re-Trigger option can be used with
the Run Trigger and Run Trigger Immediate operations. Click the Stop Trigger button to stop
the trigger currently in progress.
• Run Trigger: Arms the ILA core associated with the Waveform window to detect the trigger
event that is defined by the ILA core basic or advanced trigger settings.
• Run Trigger Immediate: Arms the ILA core associated with the Waveform window to trigger
immediately regardless of the ILA core trigger settings. This command is useful for detecting
the "aliveness" of the design by capturing any activity at the probe inputs of the ILA core.
• Stop Trigger: Stops the ILA core trigger of the ILA associated with the Waveform window.
• Export ILA Data: Captures data from an ILA core and saves it to a file. The data can be
captured in either native, .csv, or .vcd format. On clicking this icon on the Waveform
window toolbar the following dialog box appears.
The ILA core is the name of the ILA debug core to export data for. The format is a selection
among Native, CSV, and VCD formats.
• Native format configures the write_hw_ila_data command to export the ILA data in the
form of a default ILA file format file that can be used to import into Vivado and back again at
another point in time so that you can view previously captured ILA data.
• CSV format configures the write_hw_ila_data command to export the ILA data in the
form of a .csv file that can be used to import the data into a spreadsheet or third-party
application.
• VCD file format configures the write_hw_ila_data command to export the ILA data in the
form of a .vcd file that can be used to import into a third-party application or viewer.
IMPORTANT! While ILA data can be exported in the CSV, VCD, and native ILA format, only the native ILA
format can be imported into Vivado. Also, native ILA data imported into Vivado is supported only for
offline viewing of previously captured data. The probe signals cannot be used for other purposes such as
triggering, etc.
Waveform Settings
The waveform viewer allows you do customize the way objects are displayed.
When you select the Waveforms Settings button the Waveform Settings window in the following
figure opens:
• Colors tab: Lets you choose custom colors for waveform objects
• Draw waveform shadow: Displays a light green shadow under scalar '1' to help differentiate
between '1' and '0'
• Show signal indices: Display index position number to the left side of scalar and bus names
• Show trigger markers: Show (or hide) the red trigger markers in the wave viewer
Feature Description
Cursors The main cursor and secondary cursor in the Waveform window let you display and
measure time, and they form the focal point for various navigation activities.
Markers You can add markers to navigate through the waveform, and to display the waveform
value at a particular time.
Dividers You can add a divider to create a visual separator of signals.
Using Groups You can add a group, that is a collection to which signals and buses can be added in the
wave configuration as a means of organizing a set of related signals.
Using Virtual Buses You can add a virtual bus to your wave configuration, to which you can add logic scalars
and arrays.
Renaming Objects You can rename objects, signals, buses, and groups.
Radixes The default radix controls the bus radix that displays in the wave configuration, Objects
panel, and the Console panel.
Bus Bit Order You can change the Bus bit order from Most Significant Bit (MSB) to Least Significant Bit
(LSB) and vice versa.
Related Information
Cursors
Markers
Dividers
Using Groups
Using Virtual Buses
Renaming Objects
Radixes
Bus Bit Order
Cursors
Cursors are used primarily for temporary indicators of sample position and are expected to be
moved frequently, as in the case when you are measuring the distance (in samples) between two
waveform edges.
TIP: For more permanent indicators, used in situations such as establishing a time-base for multiple
measurements, add markers to the Wave window instead. See Markers for more information.
You can place the main cursor with a single click in the Waveform window.
To place a secondary cursor, Ctrl+Click and hold the waveform, and drag either left or right. You
can see a flag that labels the location at the top of the cursor.
Alternatively, you can hold the Shift key and click a point in the waveform. The main cursor
remains the original position, and the other cursor is at the point in the waveform that you
clicked.
Note: To preserve the location of the secondary cursor while positioning the main cursor, hold the Shift key
while clicking. When placing the secondary cursor by dragging, you must drag a minimum distance before
the secondary cursor appears.
To move a cursor, hover over the cursor until you see the grab symbol, and click and drag the
cursor to the new location.
As you drag the cursor in the Waveform window, you see a hollow or filled-in circle if the Snap to
Transition button is selected, which is the default behavior.
• A hollow circle indicates that you are between transitions in the waveform of the selected
signal.
• A filled-in circle indicates that you are hovering over the waveform transition of the
selected signal. A secondary cursor can be hidden by clicking anywhere in the Waveform
window where there is no cursor, marker, or floating ruler.
Related Information
Markers
Markers
Use a marker when you want to mark a significant event within your waveform in a permanent
fashion. Markers allow you to measure distance (in samples) relevant to that marked event.
• You add markers to the wave configuration at the location of the main cursor.
1. Place the main cursor at the sample number where you want to add the marker by clicking
in the Waveform window at the sample number or on the transition.
2. Select Edit → Markers → Add Marker, or click the Add Marker button.
A marker is placed at the cursor, or slightly offset if a marker already exists at the location
of the cursor. The sample number of the marker displays at the top of the line.
• You can move the marker to another location in the waveform using the drag and drop
method. Click the marker label (at the top of the marker) and drag it to the location.
○ The drag symbol indicates that the marker can be moved. As you drag the marker in the
Waveform window, you see a hollow or filled-in circle if the Snap to Transition button is
selected, which is the default behavior.
○ A filled-in circle indicates that you are hovering over a transition of the waveform for
the selected signal or over another marker.
○ For markers, the filled-in circle is white.
○ A hollow circle indicates that are you between transitions in the waveform of the
selected signal.
○ Release the mouse key to drop the marker to the new location.
• You can delete one or all markers with one command. Right-click over a marker, and do one of
the following:
○ Select Delete Marker from the popup menu to delete a single marker.
○ Select Delete All Markers from the popup menu to delete all markers.
Note: You can also use the Delete key to delete a selected marker.
Trigger Markers
The red trigger marker (whose label is a red letter 'T') a special marker that indicates the
occurrence of the trigger event in the capture buffer. The position of the trigger marker in the
buffer directly corresponds to the Trigger Position setting (see Using the ILA Default Dashboard).
Note: The trigger markers are not movable using the same technique as regular markers. Set their position
using the ILA core's Trigger Position property setting.
Related Information
Dividers
Dividers create a visual separator between signals. You can add a divider to your wave
configuration to create a visual separator of signals, as follows:
1. In a Name column of the Waveform window, click a signal to add a divider below that signal.
2. From the popup menu, select Edit → New Divider, or right-click and select New Divider.
The change is visual and nothing is added to the HDL code. The new divider is saved with the
wave configuration file when you save the file.
• Move a Divider to another location in the waveform by dragging and dropping the divider
name.
• To delete a Divider, highlight the divider, and click the Delete key, or right-click and select
Delete from the popup menu.
Related Information
Renaming Objects
Using Groups
A Group is a collection of expandable and collapsible categories, to which you can add signals
and buses in the wave configuration to organize related sets of signals. The group itself displays
no waveform data but can be expanded to show its contents or collapsed to hide them. You can
add, change, and remove groups.
To add a Group:
2. Select Edit → New Group, or right-click and select New Group from the popup menu.
A Group that contains the selected signal or bus is added to the wave configuration.
You can move other signals or buses to the group by dragging and dropping the signal or bus
name.
• Move Groups to another location in the Name column by dragging and dropping the group
name.
• Remove a group, by highlighting it and selecting Edit → Wave Objects → Ungroup, or right-
click and select Ungroup from the popup menu. Signals or buses formerly in the group are
placed at the top-level hierarchy in the wave configuration.
CAUTION! The Delete key removes the group and its nested signals and buses from the wave
configuration.
Related Information
Renaming Objects
1. In a wave configuration, select one or more signals or buses you want to add to a virtual bus.
2. Select Edit → New Virtual Bus, or right-click and select New Virtual Bus from the popup
menu.
You can move other signals or buses to the virtual bus by dragging and dropping the signal or bus
name. The new virtual bus and its nested signals or buses are saved when you save the wave
configuration file. You can also move it to another location in the waveform by dragging and
dropping the virtual bus name.
To remove a virtual bus, and ungroup its contents, highlight the virtual bus, and select Edit →
Wave Objects → Ungroup, or right-click and select Ungroup from the popup menu.
CAUTION! The Delete key removes the virtual bus and its nested signals and buses from the wave
configuration.
Related Information
Renaming Objects
Renaming Objects
You can rename any object in the Waveform window, such as signals, dividers, groups, and virtual
buses.
You can also double-click the object name and then type a new name. The change is effective
immediately. Object name changes in the wave configuration do not affect the names of the nets
attached to the ILA core probe inputs.
Radixes
Understanding the type of data on your bus is important. You need to recognize the relationship
between the radix setting and the data type to use the waveform options of Digital and Analog
effectively. See Bus Radixes for more information about the radix setting and its effect on Analog
waveform analysis.
You can change the radix of an individual signal (ILA probe) in the Waveform window as follows:
IMPORTANT! Changes to the radix of an item in the Objects window do not apply to values in the
Waveform window or the Tcl Console. To change the radix of an individual signal (ILA probe) in the
Waveform window, use the Waveform window popup menu.
• Maximum bus width of 64 bits on real. Incorrect values are possible for buses wider than
64 bits.
• Floating point supports only 32- and 64-bit arrays.
Related Information
Bus Radixes
You can display (or hide) a floating ruler and move it to a location in the Waveform window. The
sample base (sample 0) of the floating ruler is the secondary cursor, or, if there is no secondary
cursor, the selected marker.
The floating ruler button and the floating ruler itself are visible only when the secondary cursor
(or selected marker) is present.
1. Select a bus.
2. Right-click and select Reverse Bit Order.
The bus bit order is reversed. The Reverse Bit Order command is marked to show that this is the
current behavior.
Bus Radixes
Bus values are interpreted as numeric values, which are determined by the radix setting on the
bus wave object, as follows:
• Binary, octal, hexadecimal, ASCII, and unsigned decimal radixes cause the bus values to be
interpreted as unsigned integers. The format of data on the bus must match the radix setting.
• Any non-0 or -1 bits cause the entire value to be interpreted as 0.
• The signed decimal radix causes the bus values to be interpreted as signed integers.
You can adjust the height of either an analog waveform or a digital waveform by selecting and
then dragging the rows.
The following figure shows the Analog Settings dialog box with the settings for analog waveform
drawing.
• Row Height: Specifies how tall to make the select wave objects, in pixels. Changing the row
height does not change how much of a waveform is exposed or hidden vertically, but rather
stretches or contracts the height of the waveform.
When switching between Analog and Digital waveform styles, the row height is set to an
appropriate default for the style (20 for digital, 100 for analog).
• Y Range: Specifies the range of numeric values to be shown in the waveform area.
• Auto: Specifies that the range should continually expand whenever values in the visible
time range of the window are discovered to lie outside the current range.
• Min: Specifies the value displays at the bottom of the waveform area.
Both values can be specified as floating point; however, if radix of the wave object radix is
integral, the values are truncated to integers.
• Interpolation Style: Specifies how the line connecting data points is to be drawn.
• Hold: Specifies that of two data points, a horizontal line is drawn from the left point to the
X-coordinate of the right point, then another line is drawn connecting that line to the right
data point, in an L shape.
• Off Scale: Specifies how to draw waveform values that lie outside the Y range of the
waveform area.
• Hide: Specifies that outlying values are not shown, such that a waveform that reaches the
upper or lower bound of the waveform area disappears until values are again within the
range.
• Clip: Specifies that outlying values be altered so that they are at the top or bottom of the
waveform area, such that a waveform that reaches the upper- or lower-bound of the
waveform area follows the bound as a horizontal line until values are again within the
range.
• Overlap: Specifies that the waveform be drawn wherever its values are, even if they lie
outside the bounds of the waveform area and overlap other waveforms, up to the limits of
the wave window itself.
• Horizontal Line: Specifies whether to draw a horizontal rule at the given value. If the check-
box is on, a horizontal grid line is drawn at the vertical position of the specified Y value, if that
value is within the Y range of the waveform.
As with Min and Max, the Y value accepts a floating point number but truncates it to an
integer if the radix of the selected wave objects is integral.
IMPORTANT! Analog settings are saved in a wave configuration; however, because control of zooming in
the Y dimension is highly interactive, unlike other wave object properties such as radix, they do not affect
the modification state of the wave configuration. Consequently, zoom settings are not saved with the wave
configuration.
It can be helpful to view a Bus Plot when it is necessary to perform either of the following:
Figure 165: Bus Plot Showing Trigger Data vs. the Sample in Buffer
2. The Show Bus Plot dialog box appears allowing the selection of a previously saved ILA data
file. By default, the auto-saved ILA data file corresponding to the last ILA trace is auto-
selected. To select a previously saved ILA data file, enter the path to the corresponding .ila
or .csv file.
3. Click OK and a blank Bus Plot window appears. To add a Bus Plot, click the "+" symbol, and a
dialog box appears with options to configure the new Bus Plot.
○ Sample in Window: ILA sample number in the capture window. If one capture window
is selected, this number is the same as the sample in buffer, however if you use multiple
capture windows, this number indicates the sample number for the given capture
window.
○ TRIGGER: Trigger position in the capture window.
• X Axis Radix: Specifies the radix to use when plotting the X Axis data.
○ Signed Integer.
○ Unsigned Integer.
• Data for Y Axis: Specifies the bus data to use for the Y axis.
○ Sample in Buffer: ILA sample number in the ILA capture buffer.
○ Sample in Window: ILA sample number in the capture window. If one capture window
is selected, this number is the same as the sample in buffer, however if you use multiple
capture windows, this number indicates the sample number for the given capture
window.
○ TRIGGER: Trigger position in the capture window.
• Y Axis Radix: Specifies the radix to use when plotting the Y Axis data.
○ Signed Integer.
○ Unsigned Integer.
• Graph Type
○ Line: Display bus plot as a continuous line connected between discreet samples.
• Line Width: Specifies the width to use for drawing the signals in the Bus Plot viewer.
• Plot Color: Allows choosing a different color to draw the Bus Plot.
4. After configuring the Bus Plot, click OK to add the Bus Plot to the Vivado Hardware Manager.
The Bus Plot is displayed.
Note: Bus Plot settings are not saved when exiting the Vivado Hardware Manager. Be sure that all
desired measurements are completed before closing Vivado IDE.
Zoom Gestures
In addition to the zoom gestures supported for zooming in the X dimension, when over an analog
waveform, additional zoom gestures are available, as shown in the following figure.
To invoke a zoom gesture, hold down the left mouse button and drag in the direction indicated in
the diagram, where the starting mouse position is the center of the diagram.
• Zoom Out Y: Zooms out in the Y dimension by a power of 2 determined by how far away the
mouse button is released from the starting point. The zoom is performed such that the Y value
of the starting mouse position remains stationary.
• Zoom Y Range: Draws a vertical curtain which specifies the Y range to display when the
mouse is released.
• Zoom In Y: Zooms in toward the Y dimension by a power of 2 determined by how far away
the mouse button is released from the starting point.
The zoom is performed such that the Y value of the starting mouse position remains
stationary.
• Reset Zoom Y: Resets the Y range to that of the values currently displayed in the wave
window and sets the Y Range mode to Auto.
All zoom gestures in the Y dimension set the Y Range analog settings. Reset Zoom Y sets the Y
Range to Auto, whereas the other gestures set Y Range to Fixed.
Chapter 13
If you want to replace the existing connections to the ILA cores, Xilinx recommends that you use
the ECO flow. The ECO flow operates on an implemented checkpoint (DCP) and could save you
time that could otherwise be spent in a complete re-route of the design.
If you want to add new ILA cores, delete existing ILA cores, or modify existing ILA cores (eg
resizing probe width, changing the data depth, etc.), Xilinx recommends that you use the
Incremental Compile flow. The Incremental flow for debug cores operates on a synthesized
design or checkpoint (DCP) and uses a reference implemented checkpoint (ideally from a
previous run of implementation). This could save you time that could otherwise be spent in a
complete re-implementation of the design.
The sections below discuss each of these debug related flows in detail.
• It saves you time. This feature lets you swap existing debug nets that are being probed for
different nets.
• It is minimally invasive. After replacing probed nets, it is necessary to route those nets to the
inputs of the debug core. The rest of the design remains intact, thereby not only preserving
previous implementation results, but also reducing the possibility that a re-implementation
will hide the bug you are trying to find.
IMPORTANT! This flow is only applicable to designs where ILA cores have already been instantiated or
inserted.
The following figure shows the process of replacing debug nets using the ECO design flow.
ECO FLOW
No
Done
X16399-040516
To use the ECO flow, open the placed and routed design checkpoint (DCP), in the Vivado IDE,
and change the layout to ECO.
The Flow Navigator now changes to ECO Navigator with a different set of options
In the ECO Navigator, click Replace Debug Probes to bring up the Replace Debug Probes dialog
box.
In the Replace Debug Probes dialog box, highlight the probes whose nets you want to change,
and click the Edit Probes button. Use the Edit Probes button to the right of each probe to change
individual nets. Alternatively, you can use the Edit Probes button on the left edge of the window
to change the nets for multiple probes.
Click the Edit Probes button to bring up the Choose Nets dialog box, where you can choose nets
to replace the existing ones.
Enter the Find criterion to select the nets you want to replace the existing nets. If the Find
criterion returns more than 10000 nets, refine you criterion and try again. Select the preferred
nets on the Find Results on the left and click the arrow (->) to add those nets to the Selected
Names column on the right. Ensure the nets in the Selected Names column on the right
correspond to the number of nets being replaced. Click OK to continue.
IMPORTANT! Once you have completed replacing all the debug probes necessary, rerouted them, and
regenerated the bitstream, you must regenerate the debug probes file (.ltx).
TIP: You can also choose multiple nets or a bus by clicking on the Edit Probes button on the left in the
Replace Debug Probes dialog box.
After you replace all the desired nets on the debug cores, click OK to bring up a confirmation
dialog box to confirm the changes about to be made.
IMPORTANT! Check the Tcl Console to ensure that there are no Warnings/Errors.
Deleting any net segment on the path of a net being probed could have an impact on the probe
names displayed in the Hardware Manager. Vivado IDE picks the net segment closest to the net
being probed with a MARK_DEBUG attribute on it. If there is no net segment with a
MARK_DEBUG attribute, then the top level net is picked. If there is more than one net segment
with a MARK_DEBUG attribute, the tool randomly selects one of those nets.
After you have replaced all the debug probe ports, you can save your modifications to a new
checkpoint using the Save Checkpoint As option in the ECO Navigator. The Replace Debug
Probes command in the ECO Navigator needs to be run to generate a new .ltx file for the
debug probes. You should then generate a new bit file to program the device. You can then
connect to the Vivado Hardware Manager to debug the design with the new changes.
This command performs all of the netlist modifications to disconnect existing net connections to
the specified probe ports. In this example the existing net connections to probe port 0 at index 0,
probe port 1 at index 1 and index 2 of the ILA are disconnected. Then each of these probes are
connected to the net specified net_0, net_a, and net_b respectively. The modified
connections are also routed automatically. Nets that become disconnected during the process
are left unconnected.
Incremental Debug changes are applied to a placed and routed design by re-implementing the
design using the Incremental Compile design flow. This flow is recommended in situations where:
• The debug cores are absent from the existing implemented design or,
• You need to modify existing debug cores by changing probe widths, data depth, etc. or,
• You need to delete debug cores from the design.
Reference Design
The reference design is usually an earlier iteration or variation of the current design that has
been synthesized, placed, and routed. However, you can use a checkpoint that has any amount of
placement, routing, or both. The reference design checkpoint (DCP) might be the product of
many design iterations involving code changes, floorplanning, and revised constraints necessary
to close timing. After the current design is loaded, load the reference design checkpoint using the
read_checkpoint -incremental <dcp> command. Loading the reference design
checkpoint with the -incremental option enables the Incremental Compile design flow for
subsequent place and route operations.
Current Design
The current design incorporates small debug related design changes or variations from the
reference design. These changes or variations can include:
To insert, delete, or modify debug cores to an existing design that has been implemented, open
the synthesized DCP or design, and use the debug insertion flow. Details on the debug insertion
flow can be found in Using the Netlist Insertion Debug Probing Flow.
You can also modify existing debug cores or instantiate new debug cores into your existing RTL
design. The Incremental Compile flow reuses placement and routing from the reference design
along with the new debug related modifications. Details on the debug instantiation flow can be
found in HDL Instantiation Debug Probing Flow Overview.
Related Information
IMPORTANT! Make sure the opt_design options and directives match those used in the original
reference run as closely as possible.
IMPORTANT! You must open the synthesized checkpoint to modify the debug cores in the design.
Insertion of debug cores by opening a post-routed checkpoint is not supported.
IMPORTANT! You must open the synthesized design to modify the debug cores in the design.
Insertion of debug cores by opening a post-routed design is not supported.
For more information on the Incremental Compile feature, see this link in the Vivado Design Suite
User Guide: Implementation (UG904).
A higher degree of design similarity results in more effective reuse of placement and routing from
the reference design. The greater the percentage of similarity between the reference design and
current design, the greater the opportunity for placement and routing reuse.
Chapter 14
1. IBERT Core generation phase: Customizing and generating the IBERT core that best meets
your hardware high-speed serial I/O requirements.
2. IBERT Example Design Generation and Implementation phase: Generating the example
design for the IBERT core generated in the previous step.
3. Serial I/O Analysis phase: Interacting with the IBERT IP contained in the design to debug and
verify issues in your high-speed serial I/O links.
The rest of this chapter shows how to complete the first two phases. The third phase is covered
in Debugging the Serial I/O Design in Hardware.
4. In the IP Catalog under Debug and Verification → Debug, you will find one or more available
IBERT cores as shown in the following figure, depending on the device selected in the
previous step.
5. Double-click the desire IBERT architecture to open the Customize IP Wizard for that core.
Customize the IBERT core for your given hardware system requirements. For details on the
various IBERT cores available, see the following IP Documents:
• Integrated Bit Error Ratio Tester 7 Series GTX Transceivers LogiCORE IP Product Guide (PG132)
• Integrated Bit Error Ratio Tester 7 Series GTP Transceivers LogiCORE IP Product Guide (PG133)
• Integrated Bit Error Ratio Tester 7 Series GTH Transceivers LogiCORE IP Product Guide (PG152)
IMPORTANT! Modification of the IBERT IP example design is not reccomended and may result in
functional issues when interacting with the IBERT IP core in hardware.
Once the example design is generated, you can implement the IBERT example design through
bitstream creation core by clicking Generate Bitstream in the Program and Debug section of the
Vivado IDE flow navigator or by running the following Tcl commands:
Refer to the Vivado Design Suite User Guide: Design Flows Overview (UG892) for more details on
the various ways you can implement your design.
The In-System IBERT IP lets you perform 2-D eye scans of UltraScale and UltraScale+
transceivers using the Vivado Serial IO Analyzer tool. This IP uses data from the design to plot
the eye scan of the transceivers in real time while they interact with the rest of the system. This
IP can be integrated with user logic in the design or Xilinx transceiver based IPs (for example GT
Wizard or Aurora).
The In System Serial I/O Debugging flow has three distinct phases:
1. In-System IBERT Core Generation phase: Customizing and generating the In-System IBERT
core that best meets your hardware high-speed serial I/O requirements.
2. Integration phase: Instantiating the IP and integrating it into your design.
3. Serial I/O Analysis phase: Interacting with the In-System IBERT IP contained in the design to
debug and verify issues in your high-speed serial I/O links.
Details about the In-System IBERT Core Generation phase and the Integration phase are covered
the remainder of this section. For details of the Serial I/O Analysis phase, see Debugging the
Serial I/O Design in Hardware.
Related Information
Customize the In-System IBERT core for your given hardware system requirements. For details
on the In-System IBERT cores, see the In-System IBERT LogiCORE IP Product Guide (PG246).
1. Open your top level RTL file to edit and add the In-System IBERT core generated in the above
step.
2. Copy the instantiation template of the In-System IBERT core generated by the tool and
instantiate it in the RTL file.
3. Connect the ports of your transceiver to the In-System IBERT IP.
For a detailed example of how to integrate In-System IBERT into the user design, see Chapter 5
"Example Designs" of the following IP Document: In-System IBERT LogiCORE IP Product Guide
(PG246).
TIP: Ensure that you have read the FAQ section of the In-System IBERT LogiCORE IP Product Guide
(PG246), which lists some recommendations for issues you could encounter while integrating this IP into
your design.
Chapter 15
1. Design creation. Customizing and generating a design that uses the device's GTY
transceivers, typically using the Versal ACAP transceivers wizard or the Versal IBERT
Configurable Example Design in Vivado®.
2. Serial I/O analysis. Interacting with the GTY transceivers in the design using the Vivado
Hardware Manager to debug and verify issues in your high-speed serial I/O links.
Note: Versal IBERT can use internal pattern generators such as PRBS and user data from the design. For
this reason, the In-System IBERT core is not supported for Versal devices. To gain functionality similar to
In-System IBERT, change the pattern to user data.
Note: Versal IBERT does not currently support rate change. Furthermore, it is not recommended to drive
signals such as the PIN_EN pins on the Transceivers Wizard outside the Vivado serial I/O analyzer because
it might lead to unpredictable results.
For more information, see the Versal ACAP Transceivers Wizard LogiCORE IP Product Guide
(PG331).
Chapter 16
1. Connect to the hardware target and programming the FPGA with the bit file.
2. Create Links.
3. Modify link settings and examine status.
4. Run scans as needed.
IMPORTANT! In designs using the In-System IBERT IP for UltraScale and UltraScale+ designs, you will see
the In-System IBERT core being detected in the Hardware window.
Related Information
Note: If you still do not see the IBERT core after programming and/or refreshing the FPGA device, check to
make sure the device was programmed with the appropriate .bit file. Also check to make sure the
implemented design contains an IBERT v3.0 core.
The Vivado serial I/O analyzer feature is built around the concept of links. A link is analogous to a
channel on a board, with a transmitter and a receiver. The transmitter and receiver may or may
not be the same GT, on the same device, or be the same architecture. Because a link must be
associated with both a transmitter and receiver, connecting an external pattern generator to a
single GT receiver is not supported. To create one or more links, go to the Links tab in Vivado,
and click either the Create Links button, or right-click and choose Create Links. This causes the
Create Links dialog window to appear, as shown in the following figure.
When an IBERT core is detected, the Hardware Manager notes that there are no links present,
and shows a green banner at the top. Click Create Links to open the dialog box, as shown in the
following figure.
Choose a TX and/or an RX from the list available. Or type in a string into the search field to
narrow down the list. Then click the Add "+" button to add the link to the list. Repeat for all links
desired.
Links can also be a part of a link group. By default, all new links are grouped together. You can
choose not to add the links to a group by deselecting Create link group. The name of the link
group is specified in the Link group description field.
Each row in the Links window represents a link. Common and useful status and controls are
enabled by default, so the health of the links can be quickly seen. The various settings that can
be viewed in the Links window's table columns are shown in the following table.
It is possible to change the values of a given property for all links in a link group by changing the
setting in the link group row. For instance, changing the TX Pattern to "PRBS 7-bit" in the "Link
Group 0" row changes the TX Pattern of all the links to "PRBS 7-bit". If not all the links in the
group have the same setting, "Multiple" appears for that column in the link group row.
When the In System IBERT IP is used in your design, only a subset of the link settings apply. The
table below lists the applicable link settings.
A scan runs on a link. To create a scan, select a link in the Link window, and either right-click and
choose Create Scan, or click the Create Scan button in the Link window toolbar. This brings up
the Create Scan dialog (see the following figure). The Create Scan dialog shows the settings for
performing a scan, as shown in the following table.
There are two types of scans that can be generated, the 2D Eyescan or the 1D Bathtub Plot.
Both these scans use the same settings specified in the Create Scan dialog shown below. The
Scan type field in the dialog below determines the type of scan generated.
By default, the scan is run after it is created. If you do not want to run the scan, and only define
it, uncheck the Run Scan check box.
If a scan is created, but not run, it can be subsequently run or run by right-clicking on a scan in
the Scans window and choosing Run Scan (see the following figure). While a scan is running, it
can be prematurely stopped by right-clicking on a scan and choosing Stop Scan, or clicking the
Stop Scan button in the Scans window toolbar.
A sweep runs on a link. To create a sweep, select a link in the Link window, and either right-click
and choose Create Sweep, or click the Create Sweep button in the Link window toolbar. This will
bring up the Create Sweep dialog box, which looks similar to the Create Scan dialog box, except
that it has additional options for defining which properties to sweep, and how.
After these settings are chosen, the next step is to choose the Sweep Properties. Any writable
properties of the link can be swept. To add a property, click the "+" button on the left to add
another row to the table. Click the Property Name to choose a property to sweep.
To change the values, click the Values to Sweep Cell, and use the chooser to select which values
to sweep. If the property does not have enumerated values, type one hex value on each line of
the text area provided.
• In the Semi Custom case shown in the following figure, every combination of the properties
chosen is defined for a single scan, and that scan is performed according to the sweep
properties. The number of sweeps that are performed, and in what order can be previewed by
selecting the Preview & Scans tab.
• In the Full Custom case, the first choice for each of the properties listed is used for the first
scan, the second choice for each of the properties is used for the second scan, etc. If one of
the properties has fewer choices than other properties, the last choice will be used for all
subsequent scans. With the same properties choices but Full Custom as the sweep Mode,
only three scans would be performed.
• In the Exhaustive case, the Values to Sweep is no longer editable, as all values are chosen for a
given property.
When all the properties are set, to run each of the scans sequentially, keep Run Sweep checked.
The list of scans is elaborated in the Scan window once you click OK.
During the sweep, the progress is tracked in the Scan window, and the latest Scan result is
displayed.
As in other charts and displays within the Vivado IDE, the mouse gestures for zooming in the eye
scan plot window are as follows:
Also, when the mouse cursor is over the Plot, the current horizontal and vertical codes, along
with the scanned BER value is displayed in the tooltip. You can also change the plot type by
clicking the Plot Type button in the plot window, and choosing Show Contour (filled), Show
Contour (lines), Bathtub (Center Horizontal Line), and Heat Map.
A summary view is present at the bottom of the scan plot, stating the scan settings, along with
basic information like when the scan was performed. During the 2D Eyescan, the number of
pixels in the scan with zero errors is calculated (taking into account the horizontal and vertical
increments), and this result is displayed as Open Area. The Scan window contents are sorted by
Open Area by default, so the scans with the largest open area appear at the top. The following
figure is a Bathtub plot for the same scan as shown in the previous figure.
Properties Window
Whenever a GT or a COMMON block in the hardware window, a Link in the Links window, or a
scan in the Scans window is selected, the properties of that object shows in the Properties
window. For GTs and COMMONs, these include all the attribute, port, and other settings of
those objects. These settings can be changed in the Properties window (see the following figure),
or by writing Tcl commands to change and commit the properties. Some properties are read-only
and cannot be changed.
For more information about the Hardware Manager commands, run the help -category
hardware Tcl command in the Tcl Console.
IMPORTANT! Using the get_property or set_property command does not read or write information to/
from the IBERT core. You must use the refresh_hw_sio and commit_hw_sio commands to read and write
information from/to the hardware, respectively.
• One KC705 board's Digilent JTAG-SMT1 cable (serial number 12345) accessible via a
hw_server running on localhost:3121
• Single IBERT core in a design running in the XC7K325T device on the KC705 board
• IBERT core has Quad 117 and Quad 118 enabled
Once a link is created, the Slicer-Eye, Histogram, and Signal to Noise Ratio (SNR) plots are
displayed for the link. If you created multiple links, the active link can be changed by selecting
the desired DUAL and Channel in the upper-right corner.
For more information on the Slicer-Eye and GTM Transceiver Architecture see the Virtex
UltraScale+ FPGAs GTM Transceivers User Guide (UG581).
For more information on IBERT GTM, see the IBERT for UltraScale GTM Transceivers LogiCORE IP
Product Guide (PG342).
Appendix A
Note: Bitstream settings for BPI are not valid for Spartan®-7 devices.
Default Possible
Setting Description
Value Values
BITSTREAM.CONFIG. 1 1, 2, 3, 4 Helps synchronize BPI configuration with the timing of
BPI_1ST_READ_CYCLE page mode operations in flash devices. It allows you to
set the cycle number for a valid read of the first page.
The BPI_page_size must be set to 4 or 8 for this option to
be available.
BITSTREAM.CONFIG. 1 1, 4, 8 For BPI configuration, this option lets you specify the
BPI_PAGE_SIZE page size which corresponds to the number of reads
required per page of flash memory.
BITSTREAM.CONFIG. Disable Disable, Sets the BPI synchronous configuration mode for
BPI_SYNC_MODE Type1, Type2 different types of BPI flash devices.
Disable (the default) disables the synchronous
configuration mode.
Type1 enables the synchronous configuration mode and
settings to support the Micron G18(F) family.
Type2 enables the synchronous configuration mode and
settings to support the Micron (Numonyx) P30 and P33
families.
BITSTREAM.CONFIG. CCLKPIN Pullup Pullup, Adds an internal pull-up to the Cclk pin. The Pullnone
Pullnone setting disables the pullup.
BITSTREAM.CONFIG. Disable Disable, Enables or disables the loading of a default bitstream
CONFIGFALLBACK Enable when a configuration attempt fails.
If the MultiBoot solution setting
BITSTREAM.CONFIG.NEXT_CONFIG_ADDR is used then
the BITSTREAM.CONFIG.FALLBACK setting will be
enabled.
Fallback MultiBoot is not supported in Virtex-7 HT
devices.
Default Possible
Setting Description
Value Values
BITSTREAM.CONFIG. 3 3, 6, 9, 12, 16, Uses an internal oscillator to generate the configuration
CONFIGRATE 22, 26, 33, 40, clock, Cclk, when configuring in a master mode. Use this
50, 66 option to select the rate for Cclk.
BITSTREAM.CONFIG. AsRequired AsRequired, Controls how often the Digitally Controlled Impedance
DCIUPDATEMODE Continuous, circuit attempts to update the impedance match for DCI
Quiet IOSTANDARDs.
BITSTREAM.CONFIG. DONEPIN1 Pullup Pullup, Adds an internal pull-up to the DONE pin. The Pullnone
Pullnone setting disables the pullup. Use DonePin only if you
intend to connect an external pull-up resistor to this pin.
The internal pull-up resistor is automatically connected if
you do not use DonePin.
BITSTREAM.CONFIG. Disable Disable, Allows an external clock to be used as the configuration
EXTMASTERCCLK_EN Div-1, Div-2, clock for all master modes. The external clock must be
Div-4, Div-8 connected to the dual-purpose EMCCLK pin.
BITSTREAM.CONFIG. INITPIN1 Pullup Pullup, Specifies whether you want to add a Pullup resistor to the
Pullnone INIT pin, or leave the INIT pin floating.
BITSTREAM.CONFIG. Enable Enable, When Enabled, the INIT_B pin asserts to '0' when a
INITSIGNALSERROR Disable configuration error is detected.
BITSTREAM.CONFIG. M0PIN1 Pullup Pullup, Adds an internal pull-up, pull-down, or neither to the M0
Pulldown, pin. Select Pullnone to disable both the pull-up resistor
Pullnone and the pull-down resistor on the M0 pin.
BITSTREAM.CONFIG. M1PIN1 Pullup Pullup, Adds an internal pull-up, pull-down, or neither to the M1
Pulldown, pin. Select Pullnone to disable both the pull-up resistor
Pullnone and the pull-down resistor on the M1 pin.
BITSTREAM.CONFIG. M2PIN1 Pullup Pullup, Adds an internal pull-up, pull-down, or neither to the M2
Pulldown, pin. Select Pullnone to disable both the pull-up resistor
Pullnone and the pull-down resistor on the M2 pin.
BITSTREAM.CONFIG. None <string> Sets the starting address for the next configuration in a
NEXT_CONFIG_ADDR MultiBoot set up, which is stored in the WBSTAR register.
BITSTREAM.CONFIG. Enable Enable, When set to Disable the IPROG command is removed
NEXT_CONFIG_REBOOT Disable from the .bit file. This allows the Golden image to load
upon power up rather than jumping to the multiboot
image in a multiboot setup.
BITSTREAM.CONFIG. PERSIST No No, Yes Maintains the configuration logic access to the multi-
function configuration pins after configuration. Primarily
used to maintain the SelectMAP port after configuration
for readback access, but can be used with any
configuration mode. Persist is not needed for JTAG
configuration since the JTAG port is dedicated and always
available. PERSIST and ICAP cannot be used at the same
time.
Refer to the user guide for a description. Persist is
needed for Readback and Partial Reconfiguration using
the SelectMAP configuration pins, and should be used
when either SelectMAP or Serial modes are used.
BITSTREAM.CONFIG. 00 00, 01, 10, 11 Specifies the internal value of the RS[1:0] settings in the
REVISIONSELECT Warm Boot Start Address (WBSTAR) register for the next
warm boot.
BITSTREAM.CONFIG. Disable Disable, Specifies whether the RS[1:0] 3-state is enabled by setting
REVISIONSELECT_ TRISTATE Enable the option in the Warm Boot Start Address (WBSTAR).
0: Enable RS 3-state
1: Disable RS 3-state
Default Possible
Setting Description
Value Values
BITSTREAM.CONFIG. Enable Enable, Enables or disables the SelectMAP mode Abort sequence.
SELECTMAPABORT Disable If disabled, an Abort sequence on the device pins is
ignored.
BITSTREAM.CONFIG. No No, Yes Enables SPI 32-bit address style, which is required for SPI
SPI_32BIT_ADDR devices with storage of 256 Mb and larger.
BITSTREAM.CONFIG. NONE NONE, 1, 2, 4 Sets the SPI bus to Dual (x2) or Quad (x4) mode for
SPI_BUSWIDTH Master SPI configuration from third party SPI flash
devices.
BITSTREAM.CONFIG. No No, Yes Sets the FPGA to use a falling edge clock for SPI data
SPI_FALL_EDGE capture. This improves timing margins and may allow
faster clock rates for configuration.
BITSTREAM.CONFIG. TCKPIN1 Pullup Pullup, Adds a pull-up, a pull-down, or neither to the TCK pin, the
Pulldown, JTAG test clock. The Pullnone setting shows that there is
Pullnone no connection to either the pull-up or the pull-down.
BITSTREAM.CONFIG. TDIPIN1 Pullup Pullup, Adds a pull-up, a pull-down, or neither to the TDI pin, the
Pulldown, serial data input to all JTAG instructions and JTAG
Pullnone registers. The Pullnone setting shows that there is no
connection to either the pull-up or the pull-down.
BITSTREAM.CONFIG. TDOPIN1 Pullup Pullup, Adds a pull-up, a pull-down, or neither to the TDO pin,
Pulldown, the serial data output for all JTAG instruction and data
Pullnone registers. The Pullnone setting shows that there is no
connection to either the pull-up or the pull-down.
BITSTREAM.CONFIG. None <8-digit hex Enables the Watchdog Timer in Configuration mode and
TIMER_CFG string> sets the value. This option cannot be used at the same
time as TIMER_USR.
BITSTREAM.CONFIG. 0x00000000 <8-digit hex Enables the Watchdog Timer in Configuration mode and
TIMER_USR string> sets the value. This option cannot be used at the same
time as TIMER_CFG.
BITSTREAM.CONFIG. TMSPIN1 Pullup Pullup, Adds a pull-up, pull-down, or neither to the TMS pin, the
Pulldown, mode input signal to the TAP controller. The TAP
Pullnone controller provides the control logic for JTAG. The
Pullnone setting shows that there is no connection to
either the pull-up or the pull-down.
BITSTREAM.CONFIG. Pulldown Pulldown, Adds a pull-up, a pull-down, or neither to unused
UNUSEDPIN Pullup, SelectIO™pins (IOBs). It has no effect on dedicated
Pullnone configuration pins. The list of dedicated configuration
pins varies depending upon the architecture. The
Pullnone setting shows that there is no connection to
either the pull-up or the pull-down.
BITSTREAM.CONFIG. USERID 0xFFFFFFFF <8-digit hex Used to identify implementation revisions. You can enter
string> up to an 8-digit hexadecimal string in the User ID
register.
BITSTREAM.CONFIG. None None, <8- Writes an 8-digit hexadecimal string, or a timestamp into
USR_ACCESS digit hex the AXSS configuration register. The format of the
string>, timestamp value is ddddd MMMM yyyyyy hhhhh
TIMESTAMP mmmmmm ssssss : day, month, year (year 2000 = 00000),
hour, minute, seconds. The contents of this register may
be directly accessed by the FPGA fabric via the
USR_ACCESS primitive.
BITSTREAM.ENCRYPTION. No No Yes Encrypts the bitstream.
ENCRYPT
Default Possible
Setting Description
Value Values
BITSTREAM.ENCRYPTION. bbram bbram, efuse Determines the location of the AES encryption key to be
ENCRYPTKEYSELECT used, either from the battery-backed RAM (BBRAM) or
the eFUSE register.
This property is only available when the Encrypt option is
set to True.
BITSTREAM.ENCRYPTION. HKEY None <hex string> HKey sets the HMAC authentication key for bitstream
encryption. 7 series devices have an on-chip bitstream-
keyed Hash Message Authentication Code (HMAC)
algorithm implemented in hardware to provide
additional security beyond AES decryption alone. These
devices require both AES and HMAC keys to load, modify,
intercept, or clone the bitstream.
To use this option, you must first set Encrypt to Yes.
BITSTREAM.ENCRYPTION. KEY0 None <hex string> Key0 sets the AES encryption key for bitstream
encryption. To use this option, you must first set Encrypt
to Yes.
BITSTREAM.ENCRYPTION. None <string> Specifies the name of the input encryption file (with
KEYFILE a .nky file extension). To use this option, you must first
set Encrypt to Yes.
BITSTREAM.ENCRYPTION. None <32-bit hex Sets the starting cipher block chaining (CBC) value.
STARTCBC string>
BITSTREAM.GENERAL. False True, False Uses the multiple frame write feature in the bitstream to
COMPRESS reduce the size of the bitstream, not just the Bitstream
(.bit) file. Using Compress does not guarantee that the
size of the bitstream shrinks.
BITSTREAM.GENERAL. CRC Enable Enable, Controls the generation of a Cyclic Redundancy Check
Disable (CRC) value in the bitstream. When enabled, a unique
CRC value is calculated based on bitstream contents. If
the calculated CRC value does not match the CRC value in
the bitstream, the device will fail to configure. When CRC
is disabled a constant value is inserted in the bitstream in
place of the CRC, and the device does not calculate a CRC.
The CRC default value is Enable, except when
BITSTREAM.ENCRYPTION.ENCRYPT is Yes, the CRC is
disabled.
BITSTREAM.GENERAL. No No, Yes Lets you create a debug bitstream. A debug bitstream is
DEBUGBITSTREAM significantly larger than a standard bitstream.
DebugBitstream can be used only for master and slave
serial configurations. DebugBitstream is not valid for
Boundary Scan or Slave Parallel/SelectMAP. In addition to
a standard bitstream, a debug bitstream offers the
following features:
Writes 32 0s to the LOUT register after the
synchronization word.
Loads each frame individually.
Performs a Cyclic Redundancy Check (CRC) after each
frame.
Writes the frame address to the LOUT register after each
frame.
BITSTREAM.GENERAL. No No, Yes Disables communication to the Boundary Scan (BSCAN)
DISABLE_JTAG block via JTAG after configuration.
BITSTREAM.GENERAL. Enable Enable, Enables or disables the JTAG connection to the XADC.
JTAG_XADC Disable,
StatusOnly
Default Possible
Setting Description
Value Values
BITSTREAM.GENERAL. No No, Yes Inserts CRC values at regular intervals within bitstreams.
PERFRAMECRC These values validate the integrity of the incoming
bitstream and can flag an error (shown on the INIT_B pin
and the PRERROR port of the ICAP) prior to loading the
configuration data into the device. While most
appropriate for partial bitstreams, when set to Yes, this
property inserts the CRC values into all bitstreams,
including full device bitstreams.
BITSTREAM.GENERAL. Off Off, On Disables some built-in digital calibration features that
XADCENHANCEDLINEARITY make INL look worse than the actual analog
performance.
BITSTREAM.READBACK. No No, Yes Prevents the assertions of GHIGH and GSR during
ACTIVERECONFIG configuration. This is required for the active partial
reconfiguration enhancement features.
BITSTREAM.READBACK. Auto Auto, Top, Selects between the top and bottom ICAP ports.
ICAP_SELECT Bottom
BITSTREAM.READBACK. False True, False Lets you perform the Readback function by creating the
READBACK necessary readback files.
BITSTREAM.READBACK. None None, Level1, Specifies whether to disable Readback and
SECURITY Level2 Reconfiguration.
Specifying Security Level1 disables Readback. Specifying
Security Level2 disables Readback and Reconfiguration.
BITSTREAM.READBACK. Disable Disable, When Disabled XADC can work continuously during
XADCPARTIALRECONFIG Enable Partial Reconfiguration. When Enabled XADC works in
Safe mode during partial reconfiguration.
BITSTREAM.STARTUP. Yes Yes, No Tells the FPGA device to wait on the CFG_DONE (DONE)
DONEPIPE pin to go High and then wait for the first clock edge
before moving to the Done state.
BITSTREAM.STARTUP. 4 4, 1, 2, 3, 5, 6, Selects the Startup phase that activates the FPGA Done
DONE_CYCLE Keep signal. Done is delayed when DonePipe=Yes.
BITSTREAM.STARTUP. 5 5, 1, 2, 3, 4, 6, Selects the Startup phase that releases the internal 3-
GTS_CYCLE Done, Keep state control to the I/O buffers.
BITSTREAM.STARTUP. 6 6, 1, 2, 3, 4, 5, Selects the Startup phase that asserts the internal write
GWE_CYCLE Done, Keep enable to flip-flops, LUT RAMs, and shift registers.
GWE_cycle also enables the BRAMS. Before the Startup
phase, both block RAMs writing and reading are disabled.
BITSTREAM.STARTUP. NoWait NoWait, 0, 1, Selects the Startup phase to wait until DLLs/ DCMs/PLLs
LCK_CYCLE 2, 3, 4, 5, 6 lock. If you select NoWait, the Startup sequence does not
wait for DLLs/DCMs/PLLs to lock.
Default Possible
Setting Description
Value Values
BITSTREAM.STARTUP. Auto Auto, NoWait, Specifies a stall in the Startup cycle until digitally
MATCH_CYCLE 0, 1, 2, 3, 4, 5, controlled impedance (DCI) match signals are asserted.
6 DCI matching does not begin on the Match_cycle. The
Startup sequence waits in this cycle until DCI has
matched. Given that there are a number of variables in
determining how long it takes DCI to match, the number
of CCLK cycles required to complete the Startup
sequence may vary in any given system. Ideally, the
configuration solution should continue driving CCLK until
DONE goes high.
When the Auto setting is specified, write_bitstream
searches the design for any DCI I/O standards. If DCI
standards exist, write_bitstream uses
BITSTREAM.STARTUP.MATCH_CYCLE=2. Otherwise,
write_bitstream uses
BITSTREAM.STARTUP.MATCH_CYCLE=NoWait.
BITSTREAM.STARTUP. Cclk Cclk, UserClk, The StartupClk sequence following the configuration of a
STARTUPCLK JtagClk device can be synchronized to either Cclk, a User Clock, or
the JTAG Clock. The default is Cclk.
Cclk lets you synchronize to an internal clock provided in
the FPGA device.
UserClk lets you synchronize to a user-defined signal
connected to the CLK pin of the STARTUP symbol.
JtagClk lets you synchronize to the clock provided by
JTAG. This clock sequences the TAP controller which
provides the control logic for JTAG.
The Spartan7 7s6 / 7s15 devices, do not support the
STARTUPE2.CLK (UserClk) user startup clock pin.
Notes:
1. For the dedicated configuration pins Xilinx recommends that you use the bitstream setting default.
Table 39: Artix UltraScale+, Virtex UltraScale, and Kintex UltraScale+ Bitstream
Settings
Default Possible
Setting Description
Values Values
BITSTREAM. AUTHENTICATION. No No, Yes Indicates whether or not to use RSA authentication. If No
AUTHENTICATE then AES_GCM is used.
Table 39: Artix UltraScale+, Virtex UltraScale, and Kintex UltraScale+ Bitstream
Settings (cont'd)
Default Possible
Setting Description
Values Values
BITSTREAM. AUTHENTICATION. Specifies the OpenSSL .pem file that contains the key
RSAPRIVATEKEYFILE pairs that should be used to sign the RSA-2048
authenticated bitstream.
BITSTREAM.CONFIG. 1 1, 2, 3, 4 Helps synchronize BPI configuration with the timing of
BPI_1ST_READ_CYCLE page mode operations in flash devices. It allows you to
set the cycle number for a valid read of the first page.
The BPI_page_size must be set to 4 or 8 for this option to
be available.
BITSTREAM.CONFIG. 1 1, 4, 8 For BPI configuration, this sub-option lets you specify the
BPI_PAGE_SIZE page size which corresponds to the number of reads
required per page of flash memory.
BITSTREAM.CONFIG. Disable Disable, Type1, Sets the BPI synchronous configuration mode for
BPI_SYNC_MODE Type2 different types of BPI flash devices.
Disable (the default) disables the synchronous
configuration mode.
Type1 enables the synchronous configuration mode and
settings to support the Micron G18(F) family.
Type2 enables the synchronous configuration mode and
settings to support the Micron (Numonyx) P30 and P33
families.
BITSTREAM.CONFIG. CCLKPIN Pullup Pullup, Adds an internal pull-up to the Cclk pin. The Pullnone
Pullnone setting disables the pullup.
BITSTREAM.CONFIG. PERSIST No No, Yes Prohibit usage of the configuration pins as user I/O and
persist after configuration.
BITSTREAM.CONFIG. 2.7 2.7, 5.3, 8.0, Bitstream generation uses an internal oscillator to
CONFIGRATE 10.6, 21.3, 31.9, generate the configuration clock, Cclk, when configuring
36.4, 51.0, 56.7, is in a master mode. Use this sub-option to select the
63.8, 72.9, 85.0, rate for Cclk.
102.0, 127.5,
170.0
BITSTREAM.CONFIG. D00_MOSI Pullup Pullup, Adds an internal pull-up, pull-down, or neither to the
Pulldown, D00_MOSI pin. Select Pullnone to disable both the pull-up
Pullnone resistor and the pull-down resistor on the D00_MOSI pin.
BITSTREAM.CONFIG. D01_DIN Pullup Pullup, Adds an internal pull-up, pull-down, or neither to the
Pulldown, D01_DIN pin. Select Pullnone to disable both the pull-up
Pullnone resistor and the pull-down resistor on the D01_DIN pin.
BITSTREAM.CONFIG. D02 Pullup Pullup, Adds an internal pull-up, pull-down, or neither to the D02
Pulldown, pin. Select Pullnone to disable both the pull-up resistor
Pullnone and the pull-down resistor on the D02 pin.
BITSTREAM.CONFIG. D03 Pullup Pullup, Adds an internal pull-up, pull-down, or neither to the D03
Pulldown, pin. Select Pullnone to disable both the pull-up resistor
Pullnone and the pull-down resistor on the D03 pin.
BITSTREAM.CONFIG. AsRequired AsRequired, Controls how often the Digitally Controlled Impedance
DCIUPDATEMODE Quiet, Safe circuit attempts to update the impedance match for DCI
IOSTANDARDs.
BITSTREAM.CONFIG. DONEPIN Pullup Pullup, Adds an internal pull-up to the DONE pin. The Pullnone
Pullnone setting disables the pullup. Use DonePin only if you
intend to connect an external pull-up resistor to this pin.
The internal pull-up resistor is automatically connected if
you do not use DonePin.
Table 39: Artix UltraScale+, Virtex UltraScale, and Kintex UltraScale+ Bitstream
Settings (cont'd)
Default Possible
Setting Description
Values Values
BITSTREAM.CONFIG. Disable Disable, Div-1, Allows an external clock to be used as the configuration
EXTMASTERCCLK_EN Div-2, Div-3. clock for all master modes. The external clock must be
Div-4, Div-6, connected to the dual-purpose EMCCLK pin.
Div-8, Div-12,
Div-16, Div-24,
Div-48
BITSTREAM.ENCRYPTION. None Path to Specifies the install location of the Family Key. No specific
FAMILY_KEY_FILEPATH familyKey.cfg directory is required.
Xilinx® does not provide the family key as part of the
Xilinx Tool Suite. Customers must send a request for the
family key to secure.solutions@xilinx.com. The family key
is then distributed to qualified customers through the
Product Licensing site on https://www.xilinx.com.
BITSTREAM.CONFIG. INITPIN Pullup Pullup, Specifies whether you want to add a Pullup resistor to
Pullnone the INIT pin, or leave the INIT pin floating.
BITSTREAM.CONFIG. M0PIN Pullup Pullup, Adds an internal pull-up, pull-down, or neither to the M0
Pulldown, pin. Select Pullnone to disable both the pull-up resistor
Pullnone and the pull-down resistor on the M0 pin.
BITSTREAM. CONFIG.M1PIN Pullup Pullup, Adds an internal pull-up, pull-down, or neither to the M1
Pulldown, pin. Select Pullnone to disable both the pull-up resistor
Pullnone and the pull-down resistor on the M1 pin.
BITSTREAM.CONFIG. M2PIN Pullup Pullup, Adds an internal pull-up, pull-down, or neither to the M2
Pulldown, pin. Select Pullnone to disable both the pull-up resistor
Pullnone and the pull-down resistor on the M2 pin.
BITSTREAM.CONFIG. None <string> Sets the starting address for the next configuration in a
NEXT_CONFIG_ADDR MultiBoot set up, which is stored in the WBSTAR register.
BITSTREAM.CONFIG. Enable Enable, Disable When set to Disable the IPROG command is removed
NEXT_CONFIG_REBOOT from the .bit file.
BITSTREAM.CONFIG. Enable Enable, Disable Enables or disables the SelectMAP mode Abort sequence.
SELECTMAPABORT If disabled, an Abort sequence on the device pins is
ignored.
BITSTREAM.CONFIG. Enable Enable, Disable Enables or disables the loading of a default bitstream
CONFIGFALLBACK when a configuration attempt fails.
BITSTREAM.CONFIG. PROGPIN Pullup Pullup, Adds an internal pull-up to the PROGRAM_B pin. The
Pullnone Pullnone setting disables the pullup. The pullup affects
the pin after configuration.
BITSTREAM.CONFIG. PUDC_B Pullup Pullup, Adds an internal pull-up, pull-down, or neither to the
Pulldown, PUDC_B pin. Select Pullnone to disable both the pull-up
Pullnone resistor and the pull-down resistor on the PUDC_B pin.
BITSTREAM.CONFIG. Pullup Pullup, Adds an internal pull-up, pull-down, or neither to the
RDWR_B_FCS_B Pulldown, RDWR_B_FCS_B pin. Select Pullnone to disable both the
Pullnone pull-up resistor and the pull-down resistor on the
RDWR_B_FCS_B pin.
BITSTREAM.CONFIG. 00 00, 01, 10, 11 Specifies the internal value of the RS[1:0] settings in the
REVISIONSELECT Warm Boot Start Address (WBSTAR) register for the next
warm boot.
Table 39: Artix UltraScale+, Virtex UltraScale, and Kintex UltraScale+ Bitstream
Settings (cont'd)
Default Possible
Setting Description
Values Values
BITSTREAM.CONFIG. Disable Disable, Enable Specifies whether the RS[1:0] 3-state is enabled by
REVISIONSELECT_ TRISTATE setting the option in the Warm Boot Start
Address(WBSTAR).
RS[1:0] pins 3-state enable
0: Enable RS 3-state
1: Disable RS 3-state
BITSTREAM.CONFIG. Disable Disable, Enable Enables the device to shut down when the System
OVERTEMPSHUTDOWN Monitor detects a temperature beyond the acceptable
operational maximum. An external circuitry set up for the
System Monitor is required to use this option.
BITSTREAM.CONFIG. No No, Yes Enables SPI 32-bit address style, which is required for SPI
SPI_32BIT_ADDR devices with storage of 256 Mb and larger.
BITSTREAM.CONFIG. NONE NONE, 1, 2, 4, 8 Sets the SPI bus to Dual (x2) or Quad (x4) mode for
SPI_BUSWIDTH Master SPI configuration from third party SPI flash
devices.
BITSTREAM.CONFIG. No No, Yes Sets the FPGA to use a falling edge clock for SPI data
SPI_FALL_EDGE capture. This improves timing margins and may allow
faster clock rates for configuration.
BITSTREAM.CONFIG. TCKPIN Pullup Pullup, Adds a pull-up, a pull-down, or neither to the TCK pin, the
Pulldown, JTAG test clock. The Pullnone setting shows that there is
Pullnone no connection to either the pull-up or the pull-down.
BITSTREAM.CONFIG. TDIPIN Pullup Pullup, Adds a pull-up, a pull-down, or neither to the TDI pin, the
Pulldown, serial data input to all JTAG instructions and JTAG
Pullnone registers. The Pullnone setting shows that there is no
connection to either the pull-up or the pull-down.
BITSTREAM.CONFIG. TDOPIN Pullup Pullup, Adds a pull-up, a pull-down, or neither to the TDO pin,
Pulldown, the serial data output for all JTAG instruction and data
Pullnone registers. The Pullnone setting shows that there is no
connection to either the pull-up or the pull-down.
BITSTREAM.CONFIG. Enables the Watchdog Timer in Configuration mode and
TIMER_CFG sets the value. This option cannot be used at the same
time as TIMER_USR.
BITSTREAM.CONFIG. Enables the Watchdog Timer in Configuration mode and
TIMER_USR sets the value. This option cannot be used at the same
time as TIMER_CFG.
BITSTREAM.CONFIG. TMSPIN Pullup Pullup, Adds a pull-up, pull-down, or neither to the TMS pin, the
Pulldown, mode input signal to the TAP controller. The TAP
Pullnone controller provides the control logic for JTAG. The
Pullnone setting shows that there is no connection to
either the pull-up or the pull-down.
BITSTREAM.CONFIG. Pulldown Pullup, Adds a pull-up, a pull-down, or neither to unused
UNUSEDPIN Pulldown, SelectIO pins (IOBs). It has no effect on dedicated
Pullnone configuration pins. The list of dedicated configuration
pins varies depending upon the architecture. The
Pullnone setting shows that there is no connection to
either the pull-up or the pull-down.
BITSTREAM.CONFIG. USERID 0xFFFFFFFF 0xFFFFFFFF Used to identify implementation revisions. You can enter
up to an 8-digit hexadecimal string in the User ID
register.
Table 39: Artix UltraScale+, Virtex UltraScale, and Kintex UltraScale+ Bitstream
Settings (cont'd)
Default Possible
Setting Description
Values Values
BITSTREAM.CONFIG. None None, <8-digit Writes an 8-digit hexadecimal string, or a timestamp into
USR_ACCESS hex string>, the AXSS configuration register. The format of the
TIMESTAMP timestamp value is ddddd MMMM yyyyyy hhhhh
mmmmmm ssssss : day, month, year (year 2000 = 00000),
hour, minute, seconds. The contents of this register may
be directly accessed by the FPGA fabric via the
USR_ACCESS primitive.
BITSTREAM.CONFIG. Enable Enable, Disable When Enabled, the INIT_B pin asserts to '0' when a
INITSIGNALSERROR configuration error is detected.
BITSTREAM. ENCRYPTION. No No, Yes Encrypts the bitstream.
ENCRYPT
BITSTREAM.ENCRYPTION.DEBU No No, Yes When enabled, generate a debug file containing all the
GKDFKEYS keys generated in the KDF mode.
BITSTREAM. ENCRYPTION. bbram bbram, efuse Determines the location of the AES encryption key to be
ENCRYPTKEYSELECT used, either from the battery-backed RAM (BBRAM) or
the eFUSE register. This property is only available when
the Encrypt option is set to True.
BITSTREAM. ENCRYPTION. Disable Disable, Enable When the AES key is not read-secured, a read of the key
OBFUSCATEKEY returns the CRC hash of the key instead of the actual key
value.
BITSTREAM. ENCRYPTION. KEY0 Key0 sets the 64-bit AES encryption key for bitstream
encryption. To get the pick setting, leave this blank
generator to select a random number for the value. To
use this option, you must first set Encrypt to Yes.
BITSTREAM. ENCRYPTION. Sets the starting AES initial vector value. Only the first 96
STARTIV0 bits of the 128-bit value are used for the initialization
vector. To use this option, you must first set Encrypt to
Yes.
BITSTREAM. ENCRYPTION. Sets the 128-bit starting obfuscate initial vector value. To
STARTIVOBFUSCATE use this option, you must first set Encrypt to Yes.
BITSTREAM.ENCRYPTION.KDFFI None Optional 60-byte fixed input value, specified as a 120-
XEDINPUT digit hexadecimal value. This 60-byte fixed input along
with the 4-Byte counter serves as the 64-Byte fixed input
data to the KDF pseudo-random-function (PRF) to
generate the 32-byte key output (KO). If not specified,
write_bitstream generates a 60-byte pseudo-random
fixed input value using RAND_bytes.
BITSTREAM.ENCRYPTION.KDFS None Optional 32-byte seed value for the KDF, specified as a
EED 64-digit hexadecimal value.If not specified,
write_bitstream takes the Key0 value from an input .NKY
file as the seed value. If not specified and if no Key0 input
from an NKY file exists, then write_bitstream generates a
32-byte pseudo-random seed value via RAND_bytes.
BITSTREAM. ENCRYPTION. Specifies the name of the input encryption file (with
KEYFILE a .nky file extension). To use this option, you must first
set Encrypt to Yes.
BITSTREAM. ENCRYPTION. 32 4 up to The number of 128-bit encryption blocks over which a
KEYLIFE 2147483647 single key should be used for AES-GCM authenticated
bitstreams.
Table 39: Artix UltraScale+, Virtex UltraScale, and Kintex UltraScale+ Bitstream
Settings (cont'd)
Default Possible
Setting Description
Values Values
BITSTREAM. ENCRYPTION. 8 8 up to Specifies how many configuration frames should be used
RSAKEYLIFEFRAMES 2147483647 for any given AES-256 key when RSA Public Key
Authentication is specified. A value of 8 configuration
frames is equivalent to using the key for 246 encryption
blocks.
BITSTREAM. GENERAL. False True, False Uses the multiple frame write feature in the bitstream to
COMPRESS reduce the size of the bitstream, not just the bit file.
Using compress does not guarantee that the size of the
bitstream will shrink.
BITSTREAM.GENERAL.CRC Enable Enable, Disable Controls the generation of a Cyclic Redundancy Check
(CRC) value in the bitstream. When enabled, a unique
CRC value is calculated based on bitstream contents. If
the calculated CRC value does not match the CRC value in
the bitstream, the device will fail to configure. When CRC
is disabled a constant value is inserted in the bitstream in
place of the CRC, and the device does not calculate a CRC.
The CRC default value is Enable, except when
BITSTREAM.ENCRYPTION.ENCRYPT is Yes, the CRC is
disabled.
BITSTREAM.GENERAL. No No, Yes Lets you create a debug bitstream. A debug bitstream is
DEBUGBITSTREAM significantly larger than a standard bitstream.
DebugBitstream can be used only for master and slave
serial configurations. DebugBitstream is not valid for
Boundary Scan or Slave Parallel/SelectMAP. In addition to
a standard bitstream, a debug bitstream offers the
following features: Writes 32 0s to the LOUT register after
the synchronization word. Loads each frame individually.
Performs a Cyclic Redundancy Check (CRC) after each
frame. Writes the frame address to the LOUT register
after each frame.
BITSTREAM.GENERAL. No No, Yes Inserts CRC values at regular intervals within bitstreams.
PERFRAMECRC These values validate the integrity of the incoming
bitstream and can flag an error (shown on the INIT_B pin
and the PRERROR port of the ICAP) prior to loading the
configuration data into the device. While most
appropriate for partial bitstreams, when set to Yes, this
property inserts the CRC values into all bitstreams,
including full device bitstreams.
BITSTREAM.GENERAL. Disable Disable, Enable Enables the device to power down SYSMON to save
SYSMONPOWERDOWN power. Only recommended for permanently powering
down SYSMON.
BITSTREAM.GENERAL. No No, Yes Disables communication to the Boundary Scan (BSCAN)
DISABLE_JTAG block via JTAG after configuration.
BITSTREAM.GENERAL. Enable Enable, Disable, Enables or disables the JTAG connection to SYSMON.
JTAG_SYSMON StatusOnly
BITSTREAM.READBACK. Auto Auto, Top, Selects between the top and bottom ICAP ports.
ICAP_SELECT Bottom
BITSTREAM.READBACK. No No, Yes Prevents the assertions of GHIGH and GSR during
ACTIVERECONFIG configuration. This is required for the active partial
reconfiguration enhancement features.
BITSTREAM. READBACK. None None, Level1, Specifies whether to disable Readback and
SECURITY Level2 Reconfiguration.
Specifying Security Level1 disables Readback.
Table 39: Artix UltraScale+, Virtex UltraScale, and Kintex UltraScale+ Bitstream
Settings (cont'd)
Default Possible
Setting Description
Values Values
BITSTREAM.STARTUP. 4 4, 1, 2, 3, 5, 6 Selects the Startup phase that activates the FPGA Done
DONE_CYCLE signal. Done is delayed when DonePipe=Yes.
BITSTREAM.STARTUP. 5 5, 1, 2, 3, 4, 6, Selects the Startup phase that releases the internal 3-
GTS_CYCLE Done, Keep state control to the I/O buffers.
BITSTREAM.STARTUP. 6 6, 1, 2, 3, 4, 5, Selects the Startup phase that asserts the internal write
GWE_CYCLE Done, Keep enable to flip-flops, LUT RAMs, and shift registers.
GWE_cycle also enables the BRAMS. Before the Startup
phase, both block RAMs writing and reading are disabled.
BITSTREAM.STARTUP. NoWait NoWait, 0, 1, 2, Selects the Startup phase to wait until MMCM/PLLs lock.
LCK_CYCLE 3, 4, 5, 6 If you select NoWait, the Startup sequence does not wait
for MMCM/PLLs to lock.
BITSTREAM.STARTUP. Auto Auto, NoWait, Specifies a stall in the Startup cycle until digitally
MATCH_CYCLE 0, 1, 2, 3, 4, 5, 6 controlled impedance (DCI) match signals are asserted.
DCI matching does not begin on the Match_cycle. The
Startup sequence waits in this cycle until DCI has
matched. Given that there are a number of variables in
determining how long it takes DCI to match, the number
of CCLK cycles required to complete the Startup
sequence may vary in any given system. Ideally, the
configuration solution should continue driving CCLK until
DONE goes High.
When the Auto setting is specified, write_bitstream
searches the design for any DCI I/O standards. If DCI
standards exist, write_bitstream uses
BITSTREAM.STARTUP.MATCH_CYCLE=2. Otherwise,
write_bitstream uses
BITSTREAM.STARTUP.MATCH_CYCLE=NoWait.
Default Possible
Setting Description
Value Values
BITSTREAM. AUTHENTICATION. No Yes, No Indicates whether or not to use RSA authentication. If No
AUTHENTICATE then AES_GCM is used.
BITSTREAM. AUTHENTICATION. None <string> Specifies the OpenSSL .pem file that contains the key
RSAPRIVATEKEYFILE pairs that should be used to sign the RSA-2048
authenticated bitstream.
Default Possible
Setting Description
Value Values
BITSTREAM.CONFIG. 1 1, 2, 3, 4 Helps synchronize BPI configuration with the timing of
BPI_1ST_READ_CYCLE page mode operations in flash devices. It allows you to
set the cycle number for a valid read of the first page. The
BPI_page_size must be set to 4 or 8 for this option to be
available.
BITSTREAM.CONFIG. 1 1, 4, 8 For BPI configuration, this option lets you specify the
BPI_PAGE_SIZE page size which corresponds to the number of reads
required per page of flash memory.
BITSTREAM.CONFIG. Disable Disable, Type1, Sets the BPI synchronous configuration mode for
BPI_SYNC_MODE Type2 different types of BPI flash devices.
Disable (the default) disables the synchronous
configuration mode.
Type1 enables the synchronous configuration mode and
settings to support the Micron G18(F) family.
Type2 enables the synchronous configuration mode and
settings to support the Micron (Numonyx) P30 and P33
families.
BITSTREAM.CONFIG. CCLKPIN1 Pullup Pullup, Adds an internal pull-up to the Cclk pin. The Pullnone
Pullnone setting disables the pullup.
BITSTREAM.CONFIG. Enable Disable, Enable Enables or disables the loading of a default bitstream
CONFIGFALLBACK when a configuration attempt fails.
BITSTREAM.CONFIG. 3 3, 6, 9, 12, 22, Uses an internal oscillator to generate the configuration
CONFIGRATE 33, 40, 50, 57, clock, Cclk, when configuring in a master mode. Use this
69, 82, 87, 90, option to select the rate for Cclk.
110, 115, 130,
148
BITSTREAM.CONFIG. Pullup Pullup, Adds an internal pull-up, pull-down, or neither to the
D00_MOSI1 Pulldown, D00_MOSI pin. Select Pullnone to disable both the pull-up
Pullnone resistor and the pull-down resistor on the D00_MOSI pin.
BITSTREAM.CONFIG. D01_DIN1 Pullup Pullup, Adds an internal pull-up, pull-down, or neither to the
Pulldown, D01_DIN pin. Select Pullnone to disable both the pull-up
Pullnone resistor and the pull-down resistor on the D01_DIN pin.
BITSTREAM.CONFIG. D021 Pullup Pullup, Adds an internal pull-up, pull-down, or neither to the D02
Pulldown, pin. Select Pullnone to disable both the pull-up resistor
Pullnone and the pull-down resistor on the D02 pin.
BITSTREAM.CONFIG. D031 Pullup Pullup, Adds an internal pull-up, pull-down, or neither to the D03
Pulldown, pin. Select Pullnone to disable both the pull-up resistor
Pullnone and the pull-down resistor on the D03 pin.
BITSTREAM.CONFIG. AsRequired AsRequired, Controls how often the Digitally Controlled Impedance
DCIUPDATEMODE Continuous, circuit attempts to update the impedance match for DCI
Quiet IOSTANDARDs.
BITSTREAM.CONFIG. Pullup Pullup, Adds an internal pull-up to the DONE pin. The Pullnone
DONEPIN1 Pullnone setting disables the pullup. Use DonePin only if you
intend to connect an external pull-up resistor to this pin.
The internal pull-up resistor is automatically connected if
you do not use DonePin.
BITSTREAM.CONFIG. Disable Disable, Div-1, Allows an external clock to be used as the configuration
EXTMASTERCCLK_EN Div-2, Div-3, clock for all master modes. The external clock must be
Div-4, Div-6, connected to the dual-purpose EMCCLK pin.
Div-8, Div-12,
Div-16, Div-24,
Div-48
Default Possible
Setting Description
Value Values
BITSTREAM.CONFIG. INITPIN1 Pullup Pullup, Specifies whether you want to add a Pullup resistor to the
Pullnone INIT pin, or leave the INIT pin floating.
BITSTREAM.CONFIG. Enable Enable, Disable When Enabled, the INIT_B pin asserts to '0' when a
INITSIGNALSERROR configuration error is detected.
BITSTREAM.CONFIG. M0PIN1 Pullup Pullup, Adds an internal pull-up, pull-down, or neither to the M0
Pulldown, pin. Select Pullnone to disable both the pull-up resistor
Pullnone and the pull-down resistor on the M0 pin.
BITSTREAM.CONFIG. M1PIN1 Pullup Pullup, Adds an internal pull-up, pull-down, or neither to the M1
Pulldown, pin. Select Pullnone to disable both the pull-up resistor
Pullnone and the pull-down resistor on the M1 pin.
BITSTREAM.CONFIG. M2PIN1 Pullup Pullup, Adds an internal pull-up, pull-down, or neither to the M2
Pulldown, pin. Select Pullnone to disable both the pull-up resistor
Pullnone and the pull-down resistor on the M2 pin.
BITSTREAM.CONFIG. none <string> Sets the ing address for the next configuration in a
NEXT_CONFIG_ADDR MultiBoot set up, which is stored in the WBSTAR register.
BITSTREAM.CONFIG. Enable Enable, Disable When set to Disable the IPROG command is removed
NEXT_CONFIG_REBOOT from the .bit file. This allows the Golden image to load
upon power up rather than jumping to the multiboot
image in a multiboot setup.
BITSTREAM.CONFIG. Disable Disable, Enable Enables the device to shut down when the System
OVERTEMPSHUTDOWN Monitor detects a temperature beyond the acceptable
operational maximum. An external circuitry set up for the
System Monitor is required to use this option.
BITSTREAM.CONFIG. PERSIST No No, Yes Maintains the configuration logic access to the multi-
function configuration pins after configuration. Primarily
used to maintain the SelectMAP port after configuration
for readback access, but can be used with any
configuration mode. Persist is not needed for JTAG
configuration because the JTAG port is dedicated and
always available. Persist and ICAP cannot be used at the
same time.
Refer to the user guide for a description. Persist is needed
for Readback and Partial Reconfiguration using the
SelectMAP configuration pins, and should be used when
either SelectMAP or Serial modes are used.
BITSTREAM.CONFIG. PROGPIN1 Pullup Pullup, Adds an internal pull-up to the PROGRAM_B pin. The
Pullnone Pullnone setting disables the pullup. The pullup affects
the pin after configuration.
BITSTREAM.CONFIG. PUDC_B1 Pullup Pullup, Adds an internal pull-up, pull-down, or neither to the
Pulldown, PUDC_B pin. Select Pullnone to disable both the pull-up
Pullnone resistor and the pull-down resistor on the PUDC_B pin.
BITSTREAM.CONFIG. Pullup Pullup, Adds an internal pull-up, pull-down, or neither to the
RDWR_B_FCS_B1 Pulldown, RDWR_B_FCS_B pin. Select Pullnone to disable both the
Pullnone pull-up resistor and the pull-down resistor on the
RDWR_B_FCS_B pin.
BITSTREAM.CONFIG. 00 00, 01, 10, 11 Specifies the internal value of the RS[1:0] settings in the
REVISIONSELECT Warm Boot Start Address (WBSTAR) register for the next
warm boot.
Default Possible
Setting Description
Value Values
BITSTREAM.CONFIG. Disable Disable, Enable Specifies whether the RS[1:0] 3-state is enabled by setting
REVISIONSELECT_ TRISTATE the option in the Warm Boot Start Address (WBSTAR).
RS[1:0] pins 3-state enable
0: Enable RS 3-state
1: Disable RS 3-state
BITSTREAM.CONFIG. Enable Enable, Disable Enables or disables the SelectMAP mode Abort sequence.
SELECTMAPABORT If disabled, an Abort sequence on the device pins is
ignored.
BITSTREAM.CONFIG. No No, Yes Enables SPI 32-bit address style, which is required for SPI
SPI_32BIT_ADDR devices with storage of 256 Mb and larger.
BITSTREAM.CONFIG. NONE NONE, 1, 2, 4, 8 Sets the SPI bus to Dual (x2) or Quad (x4) mode for
SPI_BUSWIDTH Master SPI configuration from third party SPI flash
devices.
BITSTREAM.CONFIG. No No, Yes Sets the FPGA to use a falling edge clock for SPI data
SPI_FALL_EDGE capture. This improves timing margins and may allow
faster clock rates for configuration.
BITSTREAM.CONFIG. TCKPIN1 Pullup Pullup, Adds a pull-up, a pull-down, or neither to the TCK pin, the
Pulldown, JTAG test clock. The Pullnone setting shows that there is
Pullnone no connection to either the pull-up or the pull-down.
BITSTREAM.CONFIG. TDIPIN1 Pullup Pullup, Adds a pull-up, a pull-down, or neither to the TDI pin, the
Pulldown, serial data input to all JTAG instructions and JTAG
Pullnone registers. The Pullnone setting shows that there is no
connection to either the pull-up or the pull-down.
BITSTREAM.CONFIG. TDOPIN1 Pullup Pullup, Adds a pull-up, a pull-down, or neither to the TDO pin, the
Pulldown, serial data output for all JTAG instruction and data
Pullnone registers. The Pullnone setting shows that there is no
connection to either the pull-up or the pull-down.
BITSTREAM.CONFIG. None <8-digit hex Enables the Watchdog Timer in Configuration mode and
TIMER_CFG string> sets the value. This option cannot be used at the same
time as TIMER_USR.
BITSTREAM.CONFIG. 0x00000000 <8-digit hex Enables the Watchdog Timer in Configuration mode and
TIMER_USR string> sets the value. This option cannot be used at the same
time as TIMER_CFG.
BITSTREAM.CONFIG. TMSPIN1 Pullup Pullup, Adds a pull-up, pull-down, or neither to the TMS pin, the
Pulldown, mode input signal to the TAP controller. The TAP
Pullnone controller provides the control logic for JTAG. The
Pullnone setting shows that there is no connection to
either the pull-up or the pull-down.
BITSTREAM.CONFIG. Pulldown Pulldown, Adds a pull-up, a pull-down, or neither to unused SelectIO
UNUSEDPIN Pullup, pins (IOBs). It has no effect on dedicated configuration
Pullnone pins. The list of dedicated configuration pins varies
depending upon the architecture. The Pullnone setting
shows that there is no connection to either the pull-up or
the pull-down.
BITSTREAM.CONFIG. USERID 0xFFFFFFFF <8-digit hex Used to identify implementation revisions. You can enter
string> up to an 8-digit hexadecimal string in the User ID register.
BITSTREAM.CONFIG. None <8-digit hex Writes an 8-digit hexadecimal string, or a timestamp into
USR_ACCESS string>, the AXSS configuration register. The format of the
TIMESTAMP timestamp value is ddddd MMMM yyyyyy hhhhh
mmmmmm ssssss : day, month, year (year 2000 = 00000),
hour, minute, seconds. The contents of this register may
be directly accessed by the FPGA fabric via the
USR_ACCESS primitive.
Default Possible
Setting Description
Value Values
BITSTREAM.ENCRYPTION. No No Yes Encrypts the bitstream.
ENCRYPT
BITSTREAM.ENCRYPTION.DEBU No No, Yes When enabled, generate a debug file containing all the
GKDFKEYS keys generated in the KDF mode.
BITSTREAM.ENCRYPTION. bbram bbram, efuse Determines the location of the AES encryption key to be
ENCRYPTKEYSELECT used, either from the battery-backed RAM (BBRAM) or the
eFUSE register.
This property is only available when the Encrypt option is
set to True.
BITSTREAM.ENCRYPTION. None Path to Specifies the install location of the Family Key. No specific
FAMILY_KEY_FILEPATH familyKey.cfg directory is required.
Xilinx does not provide the family key as part of the Xilinx
Tool Suite. Customers must send a request for the family
key to secure.solutions@xilinx.com. The family key is then
distributed to qualified customers through the Product
Licensing site on https://www.xilinx.com.
BITSTREAM.ENCRYPTION. KEY0 None <hex string> Key0 sets the AES encryption key for bitstream
encryption. To use this option, you must first set Encrypt
to Yes.
BITSTREAM.ENCRYPTION. None <string> Specifies the name of the input encryption file (with
KEYFILE a .nky file extension). To use this option, you must first
set Encrypt to Yes.
BITSTREAM.ENCRYPTION. 32 4 up to The number of 128-bit encryption blocks over which a
KEYLIFE 2147483647 single key should be used for AES-GCM authenticated
bitstreams.
Setting this to 0 will disable these options
BITSTREAM.ENCRYPTION. 8 8 up to Specifies how many configuration frames should be used
RSAKEYLIFEFRAMES 2147483647 for any given AES-256 key when RSA Public Key
Authentication is specified. A value of 8 configuration
frames is equivalent to using the key for 246 encryption
blocks.
Setting this to 0 will disable these options.
BITSTREAM.ENCRYPTION. Disable Enable, Disable Creates a bitstream whereby the key used to encrypt the
OBFUSCATEKEY bitstream is obfuscated before it is written to eFUSE or
battery-backed RAM (BBR). This allows the user to provide
the device programmer with an obfuscated key rather
than the original customer key. The device programmer
can then write the obfuscated key to the eFUSE or BBR
and mark it as obfuscated using the obfuscated-key flag
in the selected storage location.
BITSTREAM.ENCRYPTION. The initialization vector used to specify the initial GCM
STARTIV0 count value in the first AES-GCM message. 128-bit hex
value.
BITSTREAM.ENCRYPTION. Sets the starting AES initial vector value. Only the first 96
STARTIVOBFUSCATE bits of the 128-bit value are used for the initialization
vector. To use this option, you must first set Encrypt to
Yes
BITSTREAM.ENCRYPTION.KDFFI None Optional 60-byte fixed input value, specified as a 120-digit
XEDINPUT hexadecimal value. This 60-byte fixed input along with the
4-Byte counter erves as the 64-Byte fixed input data to the
KDF pseudo-random-function (PRF) to generate the 32-
byte key output (KO). If not specified, write_bitstream
generates a 60-byte pseudo-random fixed input value via
RAND_bytes.
Default Possible
Setting Description
Value Values
BITSTREAM.ENCRYPTION.KDFS None Optional 32-byte seed value for the KDF, specified as a 64-
EED digit hexadecimal value.If not specified, write_bitstream
takes the Key0 value from an input .NKY file as the seed
value. If not specified and if no Key0 input from an NKY
file exists, then write_bitstream generates a 32-byte
pseudo-random seed value via RAND_bytes.
BITSTREAM.GENERAL. False True, False Uses the multiple frame write feature in the bitstream to
COMPRESS reduce the size of the bitstream, not just the bitstream
(.bit) file. Using Compress does not guarantee that the
size of the bitstream shrinks.
BITSTREAM.GENERAL. CRC Enable Enable, Disable Controls the generation of a cyclic redundancy check
(CRC) value in the bitstream. When enabled, a unique CRC
value is calculated based on bitstream contents. If the
calculated CRC value does not match the CRC value in the
bitstream, the device will fail to configure. When CRC is
disabled a constant value is inserted in the bitstream in
place of the CRC, and the device does not calculate a CRC.
The CRC default value is Enable, except when
BITSTREAM.ENCRYPTION.ENCRYPT is Yes, the CRC is
disabled.
BITSTREAM.GENERAL. No No, Yes Lets you create a debug bitstream. A debug bitstream is
DEBUGBITSTREAM significantly larger than a standard bitstream.
DebugBitstream can be used only for master and slave
serial configurations. DebugBitstream is not valid for
Boundary Scan or Slave Parallel/SelectMAP. In addition to
a standard bitstream, a debug bitstream offers the
following features:
Writes 32 0s to the LOUT register after the
synchronization word.
Loads each frame individually.
Performs a Cyclic Redundancy Check (CRC) after each
frame.
Writes the frame address to the LOUT register after each
frame.
BITSTREAM.GENERAL. No No, Yes Disables communication to the Boundary Scan (BSCAN)
DISABLE_JTAG block via JTAG after configuration.
BITSTREAM.GENERAL. No No, Yes Inserts CRC values at regular intervals within bitstreams.
PERFRAMECRC These values validate the integrity of the incoming
bitstream and can flag an error (shown on the INIT_B pin
and the PRERROR port of the ICAP) prior to loading the
configuration data into the device. While most
appropriate for partial bitstreams, when set to Yes, this
property inserts the CRC values into all bitstreams,
including full device bitstreams.
BITSTREAM.GENERAL. Enable Enable, Enables or disables the JTAG connection to SYSMON.
JTAG_SYSMON Disable,
StatusOnly
BITSTREAM.GENERAL. Disable Disable, Enable Enables the device to power down SYSMON to save
SYSMONPOWERDOWN power. Only recommended for permanently powering
down SYSMON.
BITSTREAM.MMCM.BANDWIDT DEFAULT POSTCRC Changes all MMCM(s) with a BANDWIDTH setting of
H OPTIMIZED to POSTCRC.
BITSTREAM.PLL.BANDWIDTH DEFAULT POSTCRC Changes all PLL(s) with a BANDWIDTH setting of
OPTIMIZED to POSTCRC.
Default Possible
Setting Description
Value Values
BITSTREAM.READBACK. No No, Yes Prevents the assertions of GHIGH and GSR during
ACTIVERECONFIG configuration. This is required for the active partial
reconfiguration enhancement features.
BITSTREAM.READBACK. Auto Auto, Top, Selects between the top and bottom ICAP ports.
ICAP_SELECT Bottom
BITSTREAM.READBACK. False True, False Lets you perform the Readback function by creating the
READBACK necessary readback files.
BITSTREAM.READBACK. None None, Level1, Specifies whether to disable Readback and
SECURITY Level2 Reconfiguration.
Specifying Security Level1 disables Readback. Specifying
Security Level2 disables Readback and Reconfiguration.
BITSTREAM.STARTUP. 4 4, 1, 2, 3, 5, 6, Selects the Startup phase that activates the FPGA Done
DONE_CYCLE Keep signal. Done is delayed when DonePipe=Yes.
BITSTREAM.STARTUP. 5 5, 1, 2, 3, 4, 6, Selects the Startup phase that releases the internal 3-
GTS_CYCLE Done, Keep state control to the I/O buffers.
BITSTREAM.STARTUP. 6 6, 1, 2, 3, 4, 5, Selects the Startup phase that asserts the internal write
GWE_CYCLE Done, Keep enable to flip-flops, LUT RAMs, and shift registers.
GWE_cycle also enables the BRAMS. Before the Startup
phase, both block RAMs writing and reading are disabled.
BITSTREAM.STARTUP. NoWait NoWait, 0, 1, 2, Selects the Startup phase to wait until DLLs/DCMs/PLLs
LCK_CYCLE 3, 4, 5, 6 lock. If you select NoWait, the Startup sequence does not
wait for DLLs/DCMs/PLLs to lock.
BITSTREAM.STARTUP. Auto Auto, NoWait, Specifies a stall in the Startup cycle until digitally
MATCH_CYCLE 0, 1, 2, 3, 4, 5, 6 controlled impedance (DCI) match signals are asserted.
DCI matching does not begin on the Match_cycle. The
Startup sequence waits in this cycle until DCI has
matched. Given that there are a number of variables in
determining how long it takes DCI to match, the number
of CCLK cycles required to complete the Startup sequence
may vary in any given system. Ideally, the configuration
solution should continue driving CCLK until DONE goes
High.
When the Auto setting is specified, write_bitstream
searches the design for any DCI I/O standards. If DCI
standards exist, write_bitstream uses
BITSTREAM.STARTUP.MATCH_CYCLE=2. Otherwise,
write_bitstream uses
BITSTREAM.STARTUP.MATCH_CYCLE=NoWait.
Notes:
1. For the dedicated configuration pins Xilinx recommends that you use the default bitstream setting.
Default Possible
Setting Description
Values Value
BITSTREAM.CONFIG. AsRequired AsRequired, Controls how often the Digitally Controlled Impedance
DCIUPDATEMODE Quiet, Safe circuit attempts to update the impedance match for DCI
IOSTANDARDs.
BITSTREAM.CONFIG. PUDC_B Pullup Pullup, Adds an internal pull-up, pull-down, or neither to the
Pulldown, PUDC_B pin. Select Pullnone to disable both the pull-up
Pullnone resistor and the pull-down resistor on the PUDC_B pin.
BITSTREAM.CONFIG. Disable Disable, Enables the device to shut down when the System
OVERTEMPSHUTDOWN Enable Monitor detects a temperature beyond the acceptable
operational maximum. An external circuitry set up for the
System Monitor is required to use this option.
BITSTREAM.CONFIG. Pulldown Pullup, Adds a pull-up, a pull-down, or neither to unused
UNUSEDPIN Pulldown, SelectIO pins (IOBs). It has no effect on dedicated
Pullnone configuration pins. The list of dedicated configuration
pins varies depending upon the architecture. The
Pullnone setting shows that there is no connection to
either the pull-up or the pull-down.
BITSTREAM.CONFIG. USERID 0xFFFFFFFF 0xFFFFFFFF Used to identify implementation revisions. You can enter
up to an 8-digit hexadecimal string in the User ID
register.
BITSTREAM.CONFIG. None None, <8- Writes an 8-digit hexadecimal string, or a timestamp into
USR_ACCESS digit hex the AXSS configuration register. The format of the
string>, timestamp value is ddddd MMMM yyyyyy hhhhh
TIMESTAMP mmmmmm ssssss : day, month, year (year 2000 = 00000),
hour, minute, seconds. The contents of this register may
be directly accessed by the FPGA fabric via the
USR_ACCESS primitive.
BITSTREAM.CONFIG. Enable Enable, When Enabled, the INIT_B pin asserts to '0' when a
INITSIGNALSERROR Disable configuration error is detected.
BITSTREAM.GENERAL. False True, False Uses the multiple frame write feature in the bitstream to
COMPRESS reduce the size of the bitstream, not just the bit file.
Using compress does not guarantee that the size of the
bitstream will shrink.
BITSTREAM.GENERAL. CRC Enable Enable, Controls the generation of a Cyclic Redundancy Check
Disable (CRC) value in the bitstream. When enabled, a unique
CRC value is calculated based on bitstream contents. If
the calculated CRC value does not match the CRC value in
the bitstream, the device will fail to configure. When CRC
is disabled a constant value is inserted in the bitstream in
place of the CRC, and the device does not calculate a CRC.
BITSTREAM.GENERAL. No No, Yes Inserts CRC values at regular intervals within bitstreams.
PERFRAMECRC These values validate the integrity of the incoming
bitstream and can flag an error (shown on the INIT_B pin
and the PRERROR port of the ICAP) prior to loading the
configuration data into the device. While most
appropriate for partial bitstreams, when set to Yes, this
property inserts the CRC values into all bitstreams,
including full device bitstreams.
BITSTREAM.GENERAL. Disable Disable, Enables the device to power down SYSMON to save
SYSMONPOWERDOWN Enable power. Only recommended for permanently powering
down SYSMON.
BITSTREAM.GENERAL. No No, Yes Disables communication to the Boundary Scan (BSCAN)
DISABLE_JTAG block via JTAG after configuration.
BITSTREAM.GENERAL. Enable Enable, Enables or disables the JTAG connection to SYSMON.
JTAG_SYSMON Disable,
StatusOnly
Default Possible
Setting Description
Values Value
BITSTREAM.READBACK. Auto Auto, Top, Selects between the top and bottom ICAP ports.
ICAP_SELECT Bottom
BITSTREAM.READBACK. No No, Yes Prevents the assertions of GHIGH and GSR during
ACTIVERECONFIG configuration. This is required for the active partial
reconfiguration enhancement features.
BITSTREAM.READBACK. None None, Level1, Specifies whether to disable Readback and
SECURITY Level2 Reconfiguration.
Specifying Security Level1 disables Readback.Specifying
Security
BITSTREAM.STARTUP. 4 4, 1, 2, 3, 5, 6, Selects the Startup phase that activates the FPGA Done
DONE_CYCLE Keep signal. Done is delayed when DonePipe=Yes
BITSTREAM.STARTUP. 5 5, 1, 2, 3, 4, 6, Selects the Startup phase that releases the internal 3-
GTS_CYCLE Done, Keep state control to the I/O buffers
BITSTREAM.STARTUP. 6 6, 1, 2, 3, 4, 5, Selects the Startup phase that asserts the internal write
GWE_CYCLE Done, Keep enable to flip-flops, LUT RAMs, and shift registers.
GWE_cycle also enables the BRAMS. Before the Startup
phase, both block RAMs writing and reading are disabled.
BITSTREAM.STARTUP. NoWait NoWait, 0, 1, Selects the Startup phase to wait until MMCM/PLLs lock.
LCK_CYCLE 2, 3, 4, 5, 6 If you select NoWait, the Startup sequence does not wait
for MMCM/PLLs to lock.
BITSTREAM.STARTUP. Auto Auto, NoWait, Specifies a stall in the Startup cycle until digitally
MATCH_CYCLE 0, 1, 2, 3, 4, 5, controlled impedance (DCI) match signals are asserted.
6 DCI matching does not begin on the Match_cycle. The
Startup sequence waits in this cycle until DCI has
matched. Given that there are a number of variables in
determining how long it takes DCI to match, the number
of CCLK cycles required to complete the Startup
sequence may vary in any given system. Ideally, the
configuration solution should continue driving CCLK until
DONE goes high.
When the Auto setting is specified, write_bitstream
searches the design for any DCI I/O standards. If DCI
standards exist, write_bitstream uses
BITSTREAM.STARTUP.MATCH_CYCLE=2. Otherwise,
write_bitstream uses
BITSTREAM.STARTUP.MATCH_CYCLE=NoWait.
Note: Bitstream settings for encryption are not valid for Zynq-7000 devices.
Default Possible
Setting Description
Value Values
BITSTREAM.CONFIG. 1 1, 2, 3, 4 Helps synchronize BPI configuration with the timing of
BPI_1ST_READ_CYCLE page mode operations in flash devices. It allows you to
set the cycle number for a valid read of the first page.
The BPI_page_size must be set to 4 or 8 for this option to
be available.
BITSTREAM.CONFIG. 1 1, 4, 8 For BPI configuration, this option lets you specify the
BPI_PAGE_SIZE page size which corresponds to the number of reads
required per page of flash memory.
BITSTREAM.CONFIG. Disable Disable, Sets the BPI synchronous configuration mode for
BPI_SYNC_MODE Type1, Type2 different types of BPI flash devices.
Disable (the default) disables the synchronous
configuration mode.
Type1 enables the synchronous configuration mode and
settings to support the Micron G18(F) family.
Type2 enables the synchronous configuration mode and
settings to support the Micron (Numonyx) P30 and P33
families.
BITSTREAM.CONFIG. CCLKPIN1 Pullup Pullup, Adds an internal pull-up to the Cclk pin. The Pullnone
Pullnone setting disables the pullup.
BITSTREAM.CONFIG. Enable Disable, Enables or disables the loading of a default bitstream
CONFIGFALLBACK Enable when a configuration attempt fails.
BITSTREAM.CONFIG. 3 3, 6, 9, 12, 16, Uses an internal oscillator to generate the configuration
CONFIGRATE 22, 26, 33, 40, clock, Cclk, when configuring in a master mode. Use this
50, 66 option to select the rate for Cclk.
BITSTREAM.CONFIG. AsRequired AsRequired, Controls how often the Digitally Controlled Impedance
DCIUPDATEMODE Continuous, circuit attempts to update the impedance match for DCI
Quiet IOSTANDARDs.
BITSTREAM.CONFIG. DONEPIN1 Pullup Pullup, Adds an internal pull-up to the DONE pin. The Pullnone
Pullnone setting disables the pullup. Use DonePin only if you
intend to connect an external pull-up resistor to this pin.
The internal pull-up resistor is automatically connected if
you do not use DonePin.
BITSTREAM.CONFIG. INITPIN1 Pullup Pullup, Specifies whether you want to add a Pullup resistor to
Pullnone the INIT pin, or leave the INIT pin floating.
BITSTREAM.CONFIG. Enable Enable, When Enabled, the INIT_B pin asserts to '0' when a
INITSIGNALSERROR Disable configuration error is detected.
BITSTREAM.CONFIG. M0PIN1 Pullup Pullup, Adds an internal pull-up, pull-down, or neither to the M0
Pulldown, pin. Select Pullnone to disable both the pull-up resistor
Pullnone and the pull-down resistor on the M0 pin.
BITSTREAM.CONFIG. M1PIN1 Pullup Pullup, Adds an internal pull-up, pull-down, or neither to the M1
Pulldown, pin. Select Pullnone to disable both the pull-up resistor
Pullnone and the pull-down resistor on the M1 pin.
BITSTREAM.CONFIG. M2PIN1 Pullup Pullup, Adds an internal pull-up, pull-down, or neither to the M2
Pulldown, pin. Select Pullnone to disable both the pull-up resistor
Pullnone and the pull-down resistor on the M2 pin.
BITSTREAM.CONFIG. None <string> Sets the starting address for the next configuration in a
NEXT_CONFIG_ADDR MultiBoot set up, which is stored in the WBSTAR register.
BITSTREAM.CONFIG. Enable Enable, When set to Disable the IPROG command is removed
NEXT_CONFIG_REBOOT Disable from the .bit file. This allows the Golden image to load
upon power up rather than jumping to the multiboot
image in a multiboot setup.
Default Possible
Setting Description
Value Values
BITSTREAM.CONFIG. Disable Disable, Enables the device to shut down when the XADC detects
OVERTEMPPOWERDOWN Enable a temperature beyond the acceptable operational
maximum. An external circuitry set up for the XADC is
required to use this option.
BITSTREAM.CONFIG. PERSIST No No, Yes Maintains the configuration logic access to the multi-
function configuration pins after configuration. Primarily
used to maintain the SelectMAP port after configuration
for readback access, but can be used with any
configuration mode. Persist is not needed for JTAG
configuration since the JTAG port is dedicated and always
available. PERSIST and ICAP cannot be used at the same
time.
Refer to the user guide for a description. Persist is
needed for Readback and Partial Reconfiguration using
the SelectMAP configuration pins, and should be used
when either SelectMAP or Serial modes are used.
BITSTREAM.CONFIG. 00 00, 01, 10, 11 Specifies the internal value of the RS[1:0] settings in the
REVISIONSELECT Warm Boot Start Address (WBSTAR) register for the next
warm boot.
BITSTREAM.CONFIG. Disable Disable, Specifies whether the RS[1:0] 3-state is enabled by
REVISIONSELECT_ TRISTATE Enable setting the option in the Warm Boot Start Address
(WBSTAR).
RS[1:0] pins 3-state enable
0: Enable RS 3-state
1: Disable RS 3-state
BITSTREAM.CONFIG. Enable Enable, Enables or disables the SelectMAP mode Abort sequence.
SELECTMAPABORT Disable If disabled, an Abort sequence on the device pins is
ignored.
BITSTREAM.CONFIG. No No, Yes Enables SPI 32-bit address style, which is required for SPI
SPI_32BIT_ADDR devices with storage of 256 Mb and larger.
BITSTREAM.CONFIG. NONE NONE, 1, 2, 4 Sets the SPI bus to Dual (x2) or Quad (x4) mode for
SPI_BUSWIDTH Master SPI configuration from third party SPI flash
devices.
BITSTREAM.CONFIG. No No, Yes Sets the FPGA to use a falling edge clock for SPI data
SPI_FALL_EDGE capture. This improves timing margins and may allow
faster clock rates for configuration.
BITSTREAM.CONFIG. TCKPIN1 Pullup Pullup, Adds a pull-up, a pull-down, or neither to the TCK pin, the
Pulldown, JTAG test clock. The Pullnone setting shows that there is
Pullnone no connection to either the pull-up or the pull-down.
BITSTREAM.CONFIG. TDIPIN1 Pullup Pullup, Adds a pull-up, a pull-down, or neither to the TDI pin, the
Pulldown, serial data input to all JTAG instructions and JTAG
Pullnone registers. The Pullnone setting shows that there is no
connection to either the pull-up or the pull-down.
BITSTREAM.CONFIG. TDOPIN1 Pullup Pullup, Adds a pull-up, a pull-down, or neither to the TDO pin,
Pulldown, the serial data output for all JTAG instruction and data
Pullnone registers. The Pullnone setting shows that there is no
connection to either the pull-up or the pull-down.
BITSTREAM.CONFIG. None <8-digit hex Enables the Watchdog Timer in Configuration mode and
TIMER_CFG string> sets the value. This option cannot be used at the same
time as TIMER_USR.
BITSTREAM.CONFIG. 0x00000000 <8-digit hex Enables the Watchdog Timer in Configuration mode and
TIMER_USR string> sets the value. This option cannot be used at the same
time as TIMER_CFG.
Default Possible
Setting Description
Value Values
BITSTREAM.CONFIG. TMSPIN1 Pullup Pullup, Adds a pull-up, pull-down, or neither to the TMS pin, the
Pulldown, mode input signal to the TAP controller. The TAP
Pullnone controller provides the control logic for JTAG. The
Pullnone setting shows that there is no connection to
either the pull-up or the pull-down.
BITSTREAM.CONFIG. Pulldown Pulldown, Adds a pull-up, a pull-down, or neither to unused
UNUSEDPIN Pullup, SelectIO™pins (IOBs). It has no effect on dedicated
Pullnone configuration pins. The list of dedicated configuration
pins varies depending upon the architecture. The
Pullnone setting shows that there is no connection to
either the pull-up or the pull-down.
BITSTREAM.CONFIG. USERID 0xFFFFFFFF <8-digit hex Used to identify implementation revisions. You can enter
string> up to an 8-digit hexadecimal string in the User ID
register.
BITSTREAM.CONFIG. None <8-digit hex Writes an 8-digit hexadecimal string, or a timestamp into
USR_ACCESS string>, the AXSS configuration register. The format of the
TIMESTAMP timestamp value is ddddd MMMM yyyyyy hhhhh
mmmmmm ssssss : day, month, year (year 2000 = 00000),
hour, minute, seconds. The contents of this register may
be directly accessed by the FPGA fabric via the
USR_ACCESS primitive.
BITSTREAM.ENCRYPTION. bbram bbram, efuse Determines the location of the AES encryption key to be
ENCRYPTKEYSELECT used, either from the battery-backed RAM (BBRAM) or
the eFUSE register(7 series).
This property is only available when the Encrypt option is
set to True.
BITSTREAM.GENERAL. False True, False Uses the multiple frame write feature in the bitstream to
COMPRESS reduce the size of the bitstream, not just the Bitstream
(.bit) file. Using Compress does not guarantee that the
size of the bitstream shrinks.
BITSTREAM.GENERAL. CRC Enable Enable, Controls the generation of a Cyclic Redundancy Check
Disable (CRC) value in the bitstream. When enabled, a unique
CRC value is calculated based on bitstream contents. If
the calculated CRC value does not match the CRC value in
the bitstream, the device will fail to configure. When CRC
is disabled a constant value is inserted in the bitstream in
place of the CRC, and the device does not calculate a CRC.
The CRC default value is Enable, except when
BITSTREAM.ENCRYPTION.ENCRYPT is Yes, the CRC is
disabled.
BITSTREAM.GENERAL. No No, Yes Disables communication to the Boundary Scan (BSCAN)
DISABLE_JTAG block via JTAG after configuration.
BITSTREAM.GENERAL. Enable Enable, Enables or disables the JTAG connection to the XADC.
JTAG_XADC Disable,
StatusOnly
BITSTREAM.GENERAL. Off Off, On Disables some built-in digital calibration features that
XADCENHANCEDLINEARITY make INL look worse than the actual analog
performance.
Default Possible
Setting Description
Value Values
BITSTREAM.GENERAL. No No, Yes Inserts CRC values at regular intervals within bitstreams.
PERFRAMECRC These values validate the integrity of the incoming
bitstream and can flag an error (shown on the INIT_B pin
and the PRERROR port of the ICAP) prior to loading the
configuration data into the device. While most
appropriate for partial bitstreams, when set to Yes, this
property inserts the CRC values into all bitstreams,
including full device bitstreams.
BITSTREAM.READBACK. No No, Yes Prevents the assertions of GHIGH and GSR during
ACTIVERECONFIG configuration. This is required for the active partial
reconfiguration enhancement features.
BITSTREAM.READBACK. Auto Auto, Top, Selects between the top and bottom ICAP ports.
ICAP_SELECT Bottom
BITSTREAM.READBACK. False True, False Lets you perform the Readback function by creating the
READBACK necessary readback files.
BITSTREAM.READBACK. None None, Level1, Specifies whether to disable Readback and
SECURITY Level2 Reconfiguration.
Specifying Security Level1 disables Readback. Specifying
Security Level2 disables Readback and Reconfiguration.
BITSTREAM.READBACK. Disable Disable, When Disabled XADC can work continuously during
XADCPARTIALRECONFIG Enable Partial Reconfiguration. When Enabled XADC works in
Safe mode during partial reconfiguration.
BITSTREAM.STARTUP. Yes Yes, No Tells the FPGA device to wait on the CFG_DONE (DONE)
DONEPIPE pin to go High and then wait for the first clock edge
before moving to the Done state.
BITSTREAM.STARTUP. 4 4, 1, 2, 3, 5, 6, Selects the Startup phase that activates the FPGA Done
DONE_CYCLE Keep signal. Done is delayed when DonePipe=Yes.
BITSTREAM.STARTUP. 5 5, 1, 2, 3, 4, 6, Selects the Startup phase that releases the internal 3-
GTS_CYCLE Done, Keep state control to the I/O buffers.
BITSTREAM.STARTUP. 6 6, 1, 2, 3, 4, 5, Selects the Startup phase that asserts the internal write
GWE_CYCLE Done, Keep enable to flip-flops, LUT RAMs, and shift registers.
GWE_cycle also enables the BRAMS. Before the Startup
phase, both block RAMs writing and reading are disabled.
BITSTREAM.STARTUP. NoWait NoWait, 0, 1, Selects the Startup phase to wait until DLLs/ DCMs/PLLs
LCK_CYCLE 2, 3, 4, 5, 6 lock. If you select NoWait, the Startup sequence does not
wait for DLLs/DCMs/PLLs to lock.
BITSTREAM.STARTUP. Auto Auto, NoWait, Specifies a stall in the Startup cycle until digitally
MATCH_CYCLE 0, 1, 2, 3, 4, 5, controlled impedance (DCI) match signals are asserted.
6 DCI matching does not begin on the Match_cycle. The
Startup sequence waits in this cycle until DCI has
matched. Given that there are a number of variables in
determining how long it takes DCI to match, the number
of CCLK cycles required to complete the Startup
sequence may vary in any given system. Ideally, the
configuration solution should continue driving CCLK until
DONE goes high.
When the Auto setting is specified, write_bitstream
searches the design for any DCI I/O standards. If DCI
standards exist, write_bitstream uses
BITSTREAM.STARTUP.MATCH_CYCLE=2. Otherwise,
write_bitstream uses
BITSTREAM.STARTUP.MATCH_CYCLE=NoWait.
Default Possible
Setting Description
Value Values
BITSTREAM.STARTUP. Cclk Cclk, UserClk, The StartupClk sequence following the configuration of a
STARTUPCLK JtagClk device can be synchronized to either Cclk, a User Clock,
or the JTAG Clock. The default is Cclk.
Cclk lets you synchronize to an internal clock provided in
the FPGA device.
UserClk lets you synchronize to a user-defined signal
connected to the CLK pin of the STARTUP symbol.
JtagClk lets you synchronize to the clock provided by
JTAG. This clock sequences the TAP controller which
provides the control logic for JTAG.
Notes:
1. For the dedicated configuration pins Xilinx recommends that you use the bitstream setting default.
Note: On the Versal ACAP architecture, most programmable device image settings previously supported as
a Bitstream setting are configured in either the Control, Interface, and Processing System (CIPS) IP or as
Bootgen settings. See the Control, Interface and Processing System LogiCORE IP Product Guide (PG352) or the
Bootgen User Guide (UG1283) for more information.
Possible
Setting Default Value Description
Values
BITSTREAM.GENERAL.COMPRESS True True, False Use the run length encoding
algorithm to reduce the size of the
PL configuration data. In most cases
this can reduce the size of the PL
configuration data.
BITSTREAM.GENERAL.CRC False True, False Controls the generation of a Cyclic
Redundancy Check (CRC) value in
the PL portion of the PDI. When
enabled, a unique CRC value is
calculated based on the PL portion
of the PDI contents. If the calculated
CRC value does not match the CRC
value in the PDI the device will fail
to configure.
Possible
Setting Default Value Description
Values
BITSTREAM.GENERAL.PERFRAMECRC False True, False Inserts CRC values at regular
intervals in the PL portion of the
PDI. These values validate the
integrity of the incoming
configuration data and can flag an
error prior to loading the
configuration data into the device.
While most appropriate for partial
PDI's, when set to Yes this property
inserts the CRC values into all PDI's
including full device images.
Appendix B
• Up to 16 states.
• One-, two-, and three-way conditional branching used for complex state transitions.
• Four built-in 16-bit counters used to count events, implement timers, etc.
• Four built-in flags used for monitoring trigger state machine execution status.
• Trigger action.
States
Each state machine program can have up to 16 states declared. Each state is composed of a state
declaration and a body:
state <state_name>:
<state_body>
Goto Action
The goto action is used to transition between states. Here is an example of using the goto
action to transition from one state to another before triggering:
state my_state_0:
goto my_state_1;
state my_state_1:
trigger;
Conditional Branching
The trigger state machine language supports one-, two-, and three-way conditional branching per
state.
For more information on how to construct conditional statements represented above with
<condition1> and <condition2>, refer to the section Conditional Statements.
Related Information
Conditional Statements
Counters
The four built-in 16-bit counters have fixed names and are called $counter0, $counter1,
$counter2, $counter3. The counters can be reset, incremented, and used in conditional
statements.
For more information on how to use counters in conditional statements, refer to Conditional
Statements.
Related Information
Conditional Statements
Flags
Flags can be used to monitor progress of the trigger state machine program as it executes. The
four built-in flags have fixed names and are called $flag0, $flag1, $flag2, and $flag3. The
flags can be set and cleared.
Conditional Statements
Debug Probe Conditions
Debug probe conditions can be used in two-way and three-way branching conditional
statements. Each debug probe condition consumes one trigger comparator on the PROBE port of
the ILA to which the debug probe is attached.
IMPORTANT! Each PROBE port can have from 1 to 16 trigger comparators as configured at compile time.
This means that you can only use a particular debug probe in a debug probe condition up from 1 to 16
times in the entire trigger state machine program, depending on the number of comparators configured on
the PROBE port.
The debug probe conditions consist of a comparison operator and a value. The valid debug probe
condition comparison operators are:
• == (equals)
• != (not equals)
• > (greater than)
• < (less than)
• >= (greater than or equal to)
• <= (less than or equal to)
<bit_width>'<radix><value>
Where:
○ h (hexadecimal)
○ u (unsigned decimal)
• <value> is one of
○ 0 (Logical zero)
○ 1 (Logical one)
○ X (dont care)
Counter Conditions
Counter conditions can be used in two-way and three-way branching conditional statements.
Each counter condition consumes one counter comparator.
IMPORTANT! Each counter has only one counter comparator. This means that you can only use a
particular counter in a counter condition once in the entire trigger state machine program.
The probe port conditions consist of a comparison operator and a value. The valid probe
condition comparison operators are:
• == (equals)
• != (not equals)
• All debug probe comparisons must be combined together using the same "||" (OR) or "&&"
(AND) operators.
• The combined debug probe condition can be combined with the counter condition using
either the "||" (OR) or "&&" (AND) operators, regardless of the operator used to combine the
debug probe comparisons together.
• Two debug probe comparisons combined with an "OR" function, then combined with counter
conditional using "AND" function:
if (((xyz >= 23'u456) || (abc == 1'b0)) && ($counter0 == 16'u0023)) then
• Two debug probe comparisons combined with an "AND" function, then combined with
counter conditional using "OR" function:
if (((xyz >= 23'u456) && (abc == 1'b0)) || ($counter0 == 16'u0023)) then
• Three debug probe comparisons combined with an "OR" function, then combined with
counter conditional using "AND" function:
if (((xyz >= 23'u456) || (abc == 1'b0) || (klm != 23'h0000A5)) &&
($counter0 ==
16'u0023)) then
• Three debug probe comparisons combined with an "AND" function, then combined with
counter conditional using "OR" function:
if (((xyz >= 23'u456) && (abc == 1'b0) && (klm != 23'h0000A5)) ||
($counter0 ==
16'u0023)) then
Appendix C
Low level JTAG commands allow you to scan multiple FPGA JTAG chains. The SVF commands
generated for chain operations use these low-level commands to access the FPGAs in the chain.
This appendix is an overview of these commands. A detailed explanation can be found in the
Serial Vector Format Specification document that can be found at: http://www.jtagtest.com/pdf/
svf_specification.pdf.
Purpose
Specifies a default header pattern that is shifted in before every scan operation. The header
pattern specifies how to pad the scan statements with a set of leading bits that accommodate the
devices located on the scan path beyond the component of interest.
General Information
The Header Data Register (HDR) specifies a default header pattern that is pre-pended to the
beginning of all subsequent SDR commands. The Header Instruction Register (HIR) specifies a
default header pattern that is pre-pended to the beginning of all subsequent SIR commands. The
header commands have a set of counterpart trailer commands (TIR, TDR) that are described in a
following section. A header can be removed by setting its length to 0.
Purpose
Specifies a default trailer pattern that is shifted in after all subsequent scan operations. The trailer
pattern specifies how to pad the scan statements with a set of trailing bits that accommodate the
devices located on the scan path after the component of interest.
General Information
The Trailer Data Register (TDR) specifies a trailer pattern that will be appended to the end of all
subsequent SDR commands. Trailer Instruction Register (TIR) specifies a default trailer pattern
that is appended to the end of all subsequent SIR commands. A trailer can be removed by setting
its length to 0.
Example
In this example a SVF file is developed for an ASIC. The ASIC is then placed in a board as u3,
shown below:
The set of SVF statements originally developed for the ASIC can be reused with minimal
modification if the appropriate header and trailer statements are defined to accommodate the
devices in front of and behind u3. In this example, a header pattern would be defined for devices
u4 and u5, and a trailer pattern would be defined for u2 and u1. The optional parameters can be
specified in any order. Each optional parameter can only be specified once. Hex strings specified
for TDI, TDO, MASK, or SMASK cannot be a value larger than the maximum implied by the
length parameter. Leading zeros are assumed for a hex string if not explicitly specified.
scan_ir_hw
Perform shift IR on hw_jtag.
Syntax
scan_ir_hw_jtag [-tdi <arg>] [-tdo <arg>] [-mask <arg>] [-smask <arg>] [-
quiet]
[-verbose] <length>
General Information
The scan_ir_hw_jtag command specifies a scan pattern to be scanned into the JTAG
interface target instruction register. The command targets a hw_jtag object which is created
when the hw_target is opened in JTAG mode through the use of the open_hw_target -
jtag_mode command. When targeting the hw_jtag object prior to shifting the scan pattern
specified in the scan_ir_hw_jtag command, the last defined header property (HIR) is pre-pended
to the beginning of the specified data pattern. The last defined trailer property (TIR) is appended
to the end of the data pattern.
The number of bits represented by the hex strings specified for -tdi, -tdo, -mask, or -smask
cannot be greater than the maximum specified by <length>.
The scan_ir_hw_jtag command returns a hex array containing captured TDO data from the
hw_jtag, or returns an error if it fails.
Example
The following example scans the JTAG instruction register for a 24 bit value:
scan_ir_hw_jtag 24
The following example sends a 24 bit value 0x00_0010 (LSB first) to TDI, then captures the TDO
output, applies a mask with 0xF3_FFFF, and compares the returned TDO value against the
specified value -tdo 0x81_8181.
scan_dr_hw
Perform shift DR on 'hw_jtag'.
Syntax
scan_dr_hw_jtag [-tdi <arg>] [-tdo <arg>] [-mask <arg>] [-smask <arg>] [-
quiet]
[-verbose] <length>
General Information
The scan_dr_hw_jtag command specifies a scan pattern to be scanned into the JTAG
interface target data register. The command targets a hw_jtag object which is created when the
hw_target is opened in JTAG mode through the use of the open_hw_target -jtag_mode
command. When targeting the hw_jtag object prior to shifting the scan pattern specified in the
scan_dr_hw_jtag command, the last defined header property (HDR) is pre-pended to the
beginning of the specified data pattern. The last defined trailer property (TDR) is appended to the
end of the data pattern.
The scan_dr_hw_jtag command returns a hex array containing captured TDO data from the
hw_jtag, or returns an error if it fails.
Example
The following example scans the JTAG data register for a 24 bit value:
scan_dr_hw_jtag 24
The following example sends a 24 bit value 0x00_0010 (LSB first) to TDI, then captures the data
output, TDO, applies a mask with 0xF3_FFFF, and compares the returned TDO value against the
specified value -tdo 0x81_8181.
Two devices, xcku11 and xcku9, are connected in a chain. A configuration memory is attached to
the second device in the chain (xcku9). To access this configuration memory, SVF generates
commands using the HIR, HDR, TIR, and TDR commands. The commands generated for flashing
this configuration memory take into account the chain length, and incorporate this information in
the low level JTAG operations.
HIR 0 ;
TIR 6 TDI (3f) SMASK (3f) ;
HDR 0 ;
TDR 1 TDI (00) SMASK (01) ;
// config/idcode
SIR 6 TDI (09) ;
SDR 32 TDI (00000000) TDO (0484a093) MASK (0fffffff) ;
// config/jprog
STATE RESET;
STATE IDLE;
SIR 6 TDI (0b) ;
SIR 6 TDI (14) ;
// Modify the below delay for config_init operation (0.100000 sec typical,
0.100000
sec maximum)
RUNTEST 0.100000 SEC;
// config/jprog/poll
RUNTEST 10000 TCK;
SIR 6 TDI (14) TDO (11) MASK (31) ;
// config/slr
SIR 6 TDI (05) ;
If the configuration memory attached to the first device (xcku11) needs to be programmed, the
SVF generated commands are different:
Figure 189: Multi Chain SVF Operation Example with Configuration Memory Attached
to First Device
Now let's consider four devices, xcku11, xcku9, xcku11 and xcku9, are connected in a chain. A
configuration memory is attached to the second device in the chain (xcku9) and you want to
access it, both the HIR and TIR instructions are used in this case:
Appendix D
Appendix E
Note: For on-board implementation details including FTDI connectivity, please reference the Xilinx
VCK190 Schematics available in XTP610 on https://www.xilinx.com/products/boards-and-kits/
vck190.html.
• FT232H
• FT2232H
• FT4232H
Command Reference:
program_ftdi
Short Description
Write/Read to FTDI EEPROM for Xilinx JTAG Tools support
Syntax:
program_ftdi {-write -ftdi=<ftdi_part> -serial=<serial_number> [-
vendor=<vendor_name>][-board=<board_name>][-m=<manufacturer>][-
desc=<description>] |
-write -filein=<cfg_filein> |
-read [-fileout=<cfg_fileout>]} [-help][-longhelp]
Usage:
Name Description
----------------------------------------------------------------------------
---------
-ftdi Specify the ftdi device to be programmed <FT232H | FT2232H
| FT4232H>
-serial Serial number to be written into the EEPROM
[-vendor] Vendor information
[-board ] Name of the board being programmed
[-mfg ] Manufacturer information
[-desc ] A short description of the board
-file_in Input file with all fields to be written
Description:
program_ftdi writes/reads the fdti part according to the option specified.
When called with write, either -ftdi and -serial must be used or -filein
with -ftdi must be specified. The Xilinx supported configuration for the
part specified using -ftdi flag is written into the EEPROM.
-vendor, --board, -m and -desc are optional arguments which can be used to
specify more details to be written. All strings must be specified within
inverted commas ("").
When used with read, the command reads back the content of FTDI EEPROM to
standard out. if -fileout option is used, the read back information is
written to the file specified.
If no arguments are passed, FTDI communication is skipped and help menu is
printed.
Restrictions:
Only the 1st ftdi part found will be programmed/read. If more than 1 ftdi
device is detected this command will error out.
Arguments:
-write - Write the FTDI EEPROM with either the options specifed with
command line option of by a given input configuration file.
program_ftdi write -ftdi FT2232H -vendor "my vendor co" -board "my board" -
m "my mfg co" -desc "my product desc" -serial 0ABC01
Note: Be sure to verify and update the Vendor, Board, Manufacturer Information, Description and Serial
Number fields in the above example before programming.
Appendix F
The tables in this Appendix are running lists per Xilinx® family of non-volatile memories which Vivado software is capable of erasing,
blank checking, programming, and verifying. Xilinx strives to retain components on this list even after they are no longer appropriate
for new designs, to support long-term maintenance of end products which may contain them.
IMPORTANT! Given the evolving nature of the commodity non-volatile memory market, Xilinx recommends contacting your non-volatile memory
supplier to confirm device availability and life cycle. References to specific devices in the tables are not an assurance of their current or future
availability.
MEMOR
Manufact Manufacturer MANUFACTURE DEVICE_ID
Device Alias Y_TYPE_I DEVICE_ID_1 Density Mbits Data Width Bits
urer Family R_READ_ID _2
D
Spansion s29glxxxt s70gl02gt 1 227e 2248 2201 2,048 x16, x8
Spansion s29glxxxs s70gl02gs 1 227e 2248 2201 2,048 x16
Spansion s29glxxxp s70gl02gp 1 227e 2248 2201 2,048 x16
Spansion s29glxxxt s29gl512t 1 227e 2223 2201 512 x16, x8
Spansion s29glxxxs s29gl512s 1 227e 2223 2201 512 x16
Spansion s29glxxxp s29gl512p 1 227e 2223 2201 512 x16, x8
Spansion s29glxxxs s29gl256s 1 227e 2222 2201 256 x16
Spansion s29glxxxp s29gl256p 1 227e 2222 2201 256 x16, x8
Spansion s29glxxxs s29gl128s 1 227e 2221 2201 128 x16
Spansion s29glxxxp s29gl128p 1 227e 2221 2201 128 x16, x8
Spansion s29glxxxt s29gl01gt 1 227e 2228 2201 1,024 x16, x8
Spansion s29glxxxs s29gl01gs 1 227e 2228 2201 1,024 x16
Spansion s29glxxxp s29gl01gp 1 227e 2228 2201 1,024 x16, x8
Table 44: Supported Flash Memory Devices for Artix-7 -BPI (cont'd)
MEMOR
Manufact Manufacturer MANUFACTURE DEVICE_ID
Device Alias Y_TYPE_I DEVICE_ID_1 Density Mbits Data Width Bits
urer Family R_READ_ID _2
D
Macronix mx29gl mx29gl128f c2 227e 2221 2201 128 x16, x8
Micron g18 mt28gu512aax1e 89 887e NULL NULL 512 x16
[28f512g18f-bpi-
x16]
Micron g18 mt28gu256aax1e 89 8901 NULL NULL 256 x16
[28f256g18f-bpi-
x16]
Micron g18 mt28gu01gaax1e 89 88b0 NULL NULL 1,024 x16
[28f00ag18f-bpi-
x16]
Micron mt28fw mt28fw02gb 89 227e 2248 2201 2,048 x16
Micron mt28ew mt28ew512a 89 227e 2239 2201 512 x16, x8
Micron mt28ew mt28ew256a 89 227e 2222 2201 256 x16, x8
Micron mt28ew mt28ew128a 89 227e 2221 2201 128 x16, x8
Micron mt28ew mt28ew01ga 89 227e 2228 2201 1,024 x16, x8
Micron m29w m29w640gl 20 227e 220c 2200 64 x16, x8
Micron m29w m29w640gh 20 227e 220c 2201 64 x16, x8
Micron m29w m29w256gl 20 227e 2222 2201 256 x16, x8
Micron m29w m29w256gh 20 227e 2222 2201 256 x16, x8
Micron m29w m29w128gl 20 227e 2221 2200 128 x16, x8
Micron m29w m29w128gh 20 227e 2221 2201 128 x16, x8
Micron p33 28f640p33t 89 881d NULL NULL 64 x16
Micron p33 28f640p33b 89 8820 NULL NULL 64 x16
Micron p30 28f640p30t 89 8817 NULL NULL 64 x16
Micron p30 28f640p30b 89 881a NULL NULL 64 x16
Micron p33 28f512p33t 89 8964 NULL NULL 512 x16
Micron p33 28f512p33e 89 899e NULL NULL 512 x16
Micron p33 28f512p33b 89 8965 NULL NULL 512 x16
Table 44: Supported Flash Memory Devices for Artix-7 -BPI (cont'd)
MEMOR
Manufact Manufacturer MANUFACTURE DEVICE_ID
Device Alias Y_TYPE_I DEVICE_ID_1 Density Mbits Data Width Bits
urer Family R_READ_ID _2
D
Micron p30 28f512p30t 89 8960 NULL NULL 512 x16
Micron p30 28f512p30e 89 8999 NULL NULL 512 x16
Micron p30 28f512p30b 89 8961 NULL NULL 512 x16
Micron m29ew 28f512m29ew 89 227e 2223 2201 512 x16, x8
Micron p33 28f256p33t 89 891f NULL NULL 256 x16
Micron p33 28f256p33b 89 8922 NULL NULL 256 x16
Micron p30 28f256p30t 89 8919 NULL NULL 256 x16
Micron p30 28f256p30b 89 891c NULL NULL 256 x16
Micron m29ew 28f256m29ew 89 227e 2222 2201 256 x16, x8
Micron p33 28f128p33t 89 881e NULL NULL 128 x16
Micron p33 28f128p33b 89 8821 NULL NULL 128 x16
Micron p30 28f128p30t 89 8818 NULL NULL 128 x16
Micron p30 28f128p30b 89 881b NULL NULL 128 x16
Micron m29ew 28f128m29ew 89 227e 2221 2201 128 x16, x8
Micron g18 28f128g18f 89 8900 NULL NULL 128 x16
Micron m29ew 28f064m29ewt 89 227e 2210 2201 64 x16, x8
Micron m29ew 28f064m29ewl 89 227e 220c 2201 64 x16, x8
Micron m29ew 28f064m29ewh 89 227e 220c 2201 64 x16, x8
Micron m29ew 28f064m29ewb 89 227e 2210 2200 64 x16, x8
Micron p30 28f00bp30e 89 899a NULL NULL 2,048 x16
Micron m29ew 28f00bm29ew 89 227e 2248 2201 2,048 x16, x8
Micron p33 28f00ap33t 89 8966 NULL NULL 1,024 x16
Micron p33 28f00ap33e 89 899f NULL NULL 1,024 x16
Micron p33 28f00ap33b 89 8967 NULL NULL 1,024 x16
Micron p30 28f00ap30t 89 8962 NULL NULL 1,024 x16
Table 44: Supported Flash Memory Devices for Artix-7 -BPI (cont'd)
MEMOR
Manufact Manufacturer MANUFACTURE DEVICE_ID
Device Alias Y_TYPE_I DEVICE_ID_1 Density Mbits Data Width Bits
urer Family R_READ_ID _2
D
Micron p30 28f00ap30e 89 899a NULL NULL 1,024 x16
Micron p30 28f00ap30b 89 8963 NULL NULL 1,024 x16
Micron m29ew 28f00am29ew 89 227e 2228 2201 1,024 x16, x8
Table 45: Supported Flash Memory Devices for Artix-7 -SPI (cont'd)
Table 45: Supported Flash Memory Devices for Artix-7 -SPI (cont'd)
Table 45: Supported Flash Memory Devices for Artix-7 -SPI (cont'd)
Table 45: Supported Flash Memory Devices for Artix-7 -SPI (cont'd)
The tables in this Appendix are running lists per Xilinx® family of non-volatile memories which Vivado software is capable of erasing,
blank checking, programming, and verifying. Xilinx strives to retain components on this list even after they are no longer appropriate
for new designs, to support long-term maintenance of end products which may contain them.
IMPORTANT! Given the evolving nature of the commodity non-volatile memory market, Xilinx recommends contacting your non-volatile memory
supplier to confirm device availability and life cycle. References to specific devices in the tables are not an assurance of their current or future
availability.
MEMOR
Manufact Manufacturer MANUFACTURE Data Width
Device Alias Y_TYPE_I DEVICE_ID_1 DEVICE_ID_2 Density Mbits
urer Family R_READ_ID Bits
D
Spansion s29glxxxt s70gl02gt 1 227e 2248 2201 2,048 x16, x8
Spansion s29glxxxs s70gl02gs 1 227e 2248 2201 2,048 x16
Spansion s29glxxxp s70gl02gp 1 227e 2248 2201 2,048 x16
Spansion s29glxxxt s29gl512t 1 227e 2223 2201 512 x16, x8
Spansion s29glxxxs s29gl512s 1 227e 2223 2201 512 x16
Spansion s29glxxxp s29gl512p 1 227e 2223 2201 512 x16, x8
Spansion s29glxxxs s29gl256s 1 227e 2222 2201 256 x16
Spansion s29glxxxp s29gl256p 1 227e 2222 2201 256 x16, x8
Spansion s29glxxxs s29gl128s 1 227e 2221 2201 128 x16
Spansion s29glxxxp s29gl128p 1 227e 2221 2201 128 x16, x8
Spansion s29glxxxt s29gl01gt 1 227e 2228 2201 1,024 x16, x8
Spansion s29glxxxs s29gl01gs 1 227e 2228 2201 1,024 x16
Spansion s29glxxxp s29gl01gp 1 227e 2228 2201 1,024 x16, x8
MEMOR
Manufact Manufacturer MANUFACTURE Data Width
Device Alias Y_TYPE_I DEVICE_ID_1 DEVICE_ID_2 Density Mbits
urer Family R_READ_ID Bits
D
Macronix mx29gl mx29gl128f c2 227e 2221 2201 128 x16, x8
Micron g18 mt28gu512aax1e 89 887e NULL NULL 512 x16
[28f512g18f-bpi-
x16]
Micron g18 mt28gu256aax1e 89 8901 NULL NULL 256 x16
[28f256g18f-bpi-
x16]
Micron g18 mt28gu01gaax1e 89 88b0 NULL NULL 1,024 x16
[28f00ag18f-bpi-
x16]
Micron mt28fw mt28fw02gb 89 227e 2248 2201 2,048 x16
Micron mt28ew mt28ew512a 89 227e 2239 2201 512 x16, x8
Micron mt28ew mt28ew256a 89 227e 2222 2201 256 x16, x8
Micron mt28ew mt28ew128a 89 227e 2221 2201 128 x16, x8
Micron mt28ew mt28ew01ga 89 227e 2228 2201 1,024 x16, x8
Micron m29w m29w640gl 20 227e 220c 2200 64 x16, x8
Micron m29w m29w640gh 20 227e 220c 2201 64 x16, x8
Micron m29w m29w256gl 20 227e 2222 2201 256 x16, x8
Micron m29w m29w256gh 20 227e 2222 2201 256 x16, x8
Micron m29w m29w128gl 20 227e 2221 2200 128 x16, x8
Micron m29w m29w128gh 20 227e 2221 2201 128 x16, x8
Micron p33 28f640p33t 89 881d NULL NULL 64 x16
Micron p33 28f640p33b 89 8820 NULL NULL 64 x16
Micron p30 28f640p30t 89 8817 NULL NULL 64 x16
Micron p30 28f640p30b 89 881a NULL NULL 64 x16
Micron p33 28f512p33t 89 8964 NULL NULL 512 x16
Micron p33 28f512p33e 89 899e NULL NULL 512 x16
Micron p33 28f512p33b 89 8965 NULL NULL 512 x16
MEMOR
Manufact Manufacturer MANUFACTURE Data Width
Device Alias Y_TYPE_I DEVICE_ID_1 DEVICE_ID_2 Density Mbits
urer Family R_READ_ID Bits
D
Micron p30 28f512p30t 89 8960 NULL NULL 512 x16
Micron p30 28f512p30e 89 8999 NULL NULL 512 x16
Micron p30 28f512p30b 89 8961 NULL NULL 512 x16
Micron m29ew 28f512m29ew 89 227e 2223 2201 512 x16, x8
Micron p33 28f256p33t 89 891f NULL NULL 256 x16
Micron p33 28f256p33b 89 8922 NULL NULL 256 x16
Micron p30 28f256p30t 89 8919 NULL NULL 256 x16
Micron p30 28f256p30b 89 891c NULL NULL 256 x16
Micron m29ew 28f256m29ew 89 227e 2222 2201 256 x16, x8
Micron p33 28f128p33t 89 881e NULL NULL 128 x16
Micron p33 28f128p33b 89 8821 NULL NULL 128 x16
Micron p30 28f128p30t 89 8818 NULL NULL 128 x16
Micron p30 28f128p30b 89 881b NULL NULL 128 x16
Micron m29ew 28f128m29ew 89 227e 2221 2201 128 x16, x8
Micron g18 28f128g18f 89 8900 NULL NULL 128 x16
Micron m29ew 28f064m29ewt 89 227e 2210 2201 64 x16, x8
Micron m29ew 28f064m29ewl 89 227e 220c 2201 64 x16, x8
Micron m29ew 28f064m29ewh 89 227e 220c 2201 64 x16, x8
Micron m29ew 28f064m29ewb 89 227e 2210 2200 64 x16, x8
Micron p30 28f00bp30e 89 899a NULL NULL 2,048 x16
Micron m29ew 28f00bm29ew 89 227e 2248 2201 2,048 x16, x8
Micron p33 28f00ap33t 89 8966 NULL NULL 1,024 x16
Micron p33 28f00ap33e 89 899f NULL NULL 1,024 x16
Micron p33 28f00ap33b 89 8967 NULL NULL 1,024 x16
Micron p30 28f00ap30t 89 8962 NULL NULL 1,024 x16
MEMOR
Manufact Manufacturer MANUFACTURE Data Width
Device Alias Y_TYPE_I DEVICE_ID_1 DEVICE_ID_2 Density Mbits
urer Family R_READ_ID Bits
D
Micron p30 28f00ap30e 89 899a NULL NULL 1,024 x16
Micron p30 28f00ap30b 89 8963 NULL NULL 1,024 x16
Micron m29ew 28f00am29ew 89 227e 2228 2201 1,024 x16, x8
The tables in this Appendix are running lists per Xilinx® family of non-volatile memories which Vivado software is capable of erasing,
blank checking, programming, and verifying. Xilinx strives to retain components on this list even after they are no longer appropriate
for new designs, to support long-term maintenance of end products which may contain them.
IMPORTANT! Given the evolving nature of the commodity non-volatile memory market, Xilinx recommends contacting your non-volatile memory
supplier to confirm device availability and life cycle. References to specific devices in the tables are not an assurance of their current or future
availability.
Note: Serial peripheral interface (SPI) flash is the supported configuration memory storage for Spartan-7 devices. Byte-wide Peripheral Interface
(BPI) flash is not supported for Spartan-7 devices.
Table 48: Supported Flash Memory Devices for Spartan-7-SPI Device Configuration
Table 48: Supported Flash Memory Devices for Spartan-7-SPI Device Configuration (cont'd)
Table 48: Supported Flash Memory Devices for Spartan-7-SPI Device Configuration (cont'd)
Table 48: Supported Flash Memory Devices for Spartan-7-SPI Device Configuration (cont'd)
Table 48: Supported Flash Memory Devices for Spartan-7-SPI Device Configuration (cont'd)
The tables in this Appendix are running lists per Xilinx® family of non-volatile memories which Vivado software is capable of erasing,
blank checking, programming, and verifying. Xilinx strives to retain components on this list even after they are no longer appropriate
for new designs, to support long-term maintenance of end products which may contain them.
IMPORTANT! Given the evolving nature of the commodity non-volatile memory market, Xilinx recommends contacting your non-volatile memory
supplier to confirm device availability and life cycle. References to specific devices in the tables are not an assurance of their current or future
availability.
Table 49: Supported Flash Memory Devices for Virtex-7-BPI Device Configuration
MANUF
MEMOR
Manufact Manufacturer ACTURE Data Width
Device Alias Y_TYPE_I DEVICE_ID_1 DEVICE_ID_2 Density Mbits
urer Family R_READ_ Bits
D
ID
Spansion s29glxxxt s70gl02gt 1 227e 2248 2201 2,048 x16, x8
Spansion s29glxxxs s70gl02gs 1 227e 2248 2201 2,048 x16
Spansion s29glxxxt s29gl512t 1 227e 2223 2201 512 x16, x8
Spansion s29glxxxs s29gl512s 1 227e 2223 2201 512 x16
Spansion s29glxxxp s29gl512p 1 227e 2223 2201 512 x16, x8
Spansion s29glxxxs s29gl256s 1 227e 2222 2201 256 x16
Spansion s29glxxxp s29gl256p 1 227e 2222 2201 256 x16, x8
Spansion s29glxxxs s29gl128s 1 227e 2221 2201 128 x16
Spansion s29glxxxp s29gl128p 1 227e 2221 2201 128 x16, x8
Spansion s29glxxxt s29gl01gt 1 227e 2228 2201 1,024 x16, x8
Spansion s29glxxxs s29gl01gs 1 227e 2228 2201 1,024 x16
Spansion s29glxxxp s29gl01gp 1 227e 2228 2201 1,024 x16, x8
Table 49: Supported Flash Memory Devices for Virtex-7-BPI Device Configuration (cont'd)
MANUF
MEMOR
Manufact Manufacturer ACTURE Data Width
Device Alias Y_TYPE_I DEVICE_ID_1 DEVICE_ID_2 Density Mbits
urer Family R_READ_ Bits
D
ID
Macronix mx29gl mx29gl128f c2 227e 2221 2201 128 x16, x8
Micron g18 mt28gu512aax1e [28f512g18f- 89 887e NULL NULL 512 x16
bpi-x16]
Micron g18 mt28gu256aax1e [28f256g18f- 89 8901 NULL NULL 256 x16
bpi-x16]
Micron g18 mt28gu01gaax1e [28f00ag18f- 89 88b0 NULL NULL 1,024 x16
bpi-x16]
Micron mt28fw mt28fw02gb 89 227e 2248 2201 2,048 x16
Micron mt28ew mt28ew512a 89 227e 2239 2201 512 x16, x8
Micron mt28ew mt28ew256a 89 227e 2222 2201 256 x16, x8
Micron mt28ew mt28ew128a 89 227e 2221 2201 128 x16, x8
Micron mt28ew mt28ew01ga 89 227e 2228 2201 1,024 x16, x8
Micron m29w m29w256gl 20 227e 2222 2201 256 x16, x8
Micron m29w m29w256gh 20 227e 2222 2201 256 x16, x8
Micron m29w m29w128gl 20 227e 2221 2200 128 x16, x8
Micron m29w m29w128gh 20 227e 2221 2201 128 x16, x8
Micron p30 28f640p30t 89 8817 NULL NULL 64 x16
Micron p30 28f640p30b 89 881a NULL NULL 64 x16
Micron p30 28f512p30t 89 8960 NULL NULL 512 x16
Micron p30 28f512p30e 89 8999 NULL NULL 512 x16
Micron p30 28f512p30b 89 8961 NULL NULL 512 x16
Micron m29ew 28f512m29ew 89 227e 2223 2201 512 x16, x8
Micron p30 28f256p30t 89 8919 NULL NULL 256 x16
Micron p30 28f256p30b 89 891c NULL NULL 256 x16
Micron m29ew 28f256m29ew 89 227e 2222 2201 256 x16, x8
Micron p30 28f128p30t 89 8818 NULL NULL 128 x16
Table 49: Supported Flash Memory Devices for Virtex-7-BPI Device Configuration (cont'd)
MANUF
MEMOR
Manufact Manufacturer ACTURE Data Width
Device Alias Y_TYPE_I DEVICE_ID_1 DEVICE_ID_2 Density Mbits
urer Family R_READ_ Bits
D
ID
Micron p30 28f128p30b 89 881b NULL NULL 128 x16
Micron m29ew 28f128m29ew 89 227e 2221 2201 128 x16, x8
Micron g18 28f128g18f 89 8900 NULL NULL 128 x16
Micron m29ew 28f064m29ewt 89 227e 2210 2201 64 x16, x8
Micron m29ew 28f064m29ewl 89 227e 220c 2201 64 x16, x8
Micron m29ew 28f064m29ewh 89 227e 220c 2201 64 x16, x8
Micron m29ew 28f064m29ewb 89 227e 2210 2200 64 x16, x8
Micron p30 28f00bp30e 89 899a NULL NULL 2,048 x16
Micron m29ew 28f00bm29ew 89 227e 2248 2201 2,048 x16, x8
Micron p30 28f00ap30t 89 8962 NULL NULL 1,024 x16
Micron p30 28f00ap30e 89 899a NULL NULL 1,024 x16
Micron p30 28f00ap30b 89 8963 NULL NULL 1,024 x16
Micron m29ew 28f00am29ew 89 227e 2228 2201 1,024 x16, x8
Table 50: Supported Flash Memory Devices for Virtex-7-SPI Device Configuration
Table 50: Supported Flash Memory Devices for Virtex-7-SPI Device Configuration (cont'd)
Table 50: Supported Flash Memory Devices for Virtex-7-SPI Device Configuration (cont'd)
The tables in this Appendix are running lists per Xilinx® family of non-volatile memories which Vivado software is capable of erasing,
blank checking, programming, and verifying. Xilinx strives to retain components on this list even after they are no longer appropriate
for new designs, to support long-term maintenance of end products which may contain them.
IMPORTANT! Given the evolving nature of the commodity non-volatile memory market, Xilinx recommends contacting your non-volatile memory
supplier to confirm device availability and life cycle. References to specific devices in the tables are not an assurance of their current or future
availability.
Table 51: Supported Flash Memory Devices for Artix UltraScale+ BPI Device Configuration
Manufa
Manufact Manufacturer Device Device ID Device ID
Device Alias cturer Density Mbits Data Width Bits
urer Family ID (Hex) (Hex) (Hex)
ID
Spansion s29glxxxt s70gl02gt 1 227e 227e 227e 2048 x16, x8
Spansion s29glxxxs s70gl02gs 1 227e 227e 227e 2048 x16
Spansion s29glxxxt s29gl512t 1 227e 227e 227e 512 x16, x8
Spansion s29glxxxs s29gl512s 1 227e 227e 227e 512 x16
Spansion s29glxxxp s29gl512p 1 227e 227e 227e 512 x16, x8
Spansion s29glxxxs s29gl256s 1 227e 227e 227e 256 x16
Spansion s29glxxxp s29gl256p 1 227e 227e 227e 256 x16, x8
Spansion s29glxxxs s29gl128s 1 227e 227e 227e 128 x16
Spansion s29glxxxp s29gl128p 1 227e 227e 227e 128 x16, x8
Spansion s29glxxxt s29gl01gt 1 227e 227e 227e 1024 x16, x8
Spansion s29glxxxs s29gl01gs 1 227e 227e 227e 1024 x16
Spansion s29glxxxp s29gl01gp 1 227e 227e 227e 1024 x16, x8
Macronix mx29gl mx29gl128f c2 227e 227e 227e 128 x16, x8
Table 51: Supported Flash Memory Devices for Artix UltraScale+ BPI Device Configuration (cont'd)
Manufa
Manufact Manufacturer Device Device ID Device ID
Device Alias cturer Density Mbits Data Width Bits
urer Family ID (Hex) (Hex) (Hex)
ID
Micron g18 mt28gu256aax1e [28f256g18f- 89 227e 227e 227e 512 x16
bpi-x16]
Micron g18 mt28gu512aax1e [28f512g18f- 89 227e 227e 227e 256 x16
bpi-x16]
Micron g18 mt28gu01gaax1e 89 227e 227e 227e 1024 x16
[28f00ag18f-bpi-x16]
Micron mt28fw mt28fw02gb 89 227e 227e 227e 2048 x16
Micron mt28ew mt28ew512a 89 227e 227e 227e 512 x16, x8
Micron mt28ew mt28ew256a 89 227e 227e 227e 256 x16, x8
Micron mt28ew mt28ew128a 89 227e 227e 227e 128 x16, x8
Micron mt28ew mt28ew01ga 89 227e 227e 227e 1024 x16, x8
Micron m29w m29w256gl 20 227e 227e 227e 256 x16, x8
Micron m29w m29w256gh 20 227e 227e 227e 256 x16, x8
Micron m29w m29w128gl 20 227e 227e 227e 128 x16, x8
Micron m29w m29w128gh 20 227e 227e 227e 128 x16, x8
Micron p30 28f640p30t 89 227e 227e 227e 64 x16
Micron p30 28f640p30b 89 227e 227e 227e 64 x16
Micron p30 28f512p30t 89 227e 227e 227e 512 x16
Micron p30 28f512p30e 89 227e 227e 227e 512 x16
Micron p30 28f512p30b 89 227e 227e 227e 512 x16
Micron m29ew 28f512m29ew 89 227e 227e 227e 512 x16, x8
Micron p30 28f256p30t 89 227e 227e 227e 256 x16
Micron p30 28f256p30b 89 227e 227e 227e 256 x16
Micron m29ew 28f256m29ew 89 227e 227e 227e 256 x16, x8
Micron p30 28f128p30t 89 227e 227e 227e 128 x16
Micron p30 28f128p30b 89 227e 227e 227e 128 x16
Micron m29ew 28f128m29ew 89 227e 227e 227e 128 x16, x8
Table 51: Supported Flash Memory Devices for Artix UltraScale+ BPI Device Configuration (cont'd)
Manufa
Manufact Manufacturer Device Device ID Device ID
Device Alias cturer Density Mbits Data Width Bits
urer Family ID (Hex) (Hex) (Hex)
ID
Micron g18 28f128g18f 89 227e 227e 227e 128 x16
Micron m29ew 28f064m29ewt 89 227e 227e 227e 64 x16, x8
Micron m29ew 28f064m29ewl 89 227e 227e 227e 64 x16, x8
Micron m29ew 28f064m29ewh 89 227e 227e 227e 64 x16, x8
Micron m29ew 28f064m29ewb 89 227e 227e 227e 64 x16, x8
Micron p30 28f00bp30e 89 227e 227e 227e 2048 x16
Micron m29ew 28f00bm29ew 89 227e 227e 227e 2048 x16, x8
Micron p30 28f00ap30t 89 227e 227e 227e 1024 x16
Micron p30 28f00ap30e 89 227e 227e 227e 1024 x16
Micron p30 28f00ap30b 89 227e 227e 227e 1024 x16
Micron m29ew 28f00am29ew 89 227e 227e 227e 1024 x16, x8
Table 52: Supported Flash Memory Devices for Artix UltraScale+ SPI Device Configuration
Table 52: Supported Flash Memory Devices for Artix UltraScale+ SPI Device Configuration (cont'd)
Table 52: Supported Flash Memory Devices for Artix UltraScale+ SPI Device Configuration (cont'd)
The tables in this Appendix are running lists per Xilinx® family of non-volatile memories which Vivado software is capable of erasing,
blank checking, programming, and verifying. Xilinx strives to retain components on this list even after they are no longer appropriate
for new designs, to support long-term maintenance of end products which may contain them.
IMPORTANT! Given the evolving nature of the commodity non-volatile memory market, Xilinx recommends contacting your non-volatile memory
supplier to confirm device availability and life cycle. References to specific devices in the tables are not an assurance of their current or future
availability.
Table 53: Supported Flash Memory Devices for Kintex UltraScale BPI Device Configuration
MANUFA MEMOR
Manufactu Manufacturer DEVICE_I DEVICE_I Density Data Width
Device Alias CTURER_ Y_TYPE_I
rer Family D_1 D_2 Mbits Bits
READ_ID D
Spansion s29glxxxt s70gl02gt 1 227e 2248 2201 2,048 x16, x8
Spansion s29glxxxs s70gl02gs 1 227e 2248 2201 2,048 x16
Spansion s29glxxxp s70gl02gp 1 227e 2248 2201 2,048 x16
Spansion s29glxxxt s29gl512t 1 227e 2223 2201 512 x16, x8
Spansion s29glxxxs s29gl512s 1 227e 2223 2201 512 x16
Spansion s29glxxxp s29gl512p 1 227e 2223 2201 512 x16, x8
Spansion s29glxxxs s29gl256s 1 227e 2222 2201 256 x16
Spansion s29glxxxp s29gl256p 1 227e 2222 2201 256 x16, x8
Spansion s29glxxxs s29gl128s 1 227e 2221 2201 128 x16
Spansion s29glxxxp s29gl128p 1 227e 2221 2201 128 x16, x8
Spansion s29glxxxt s29gl01gt 1 227e 2228 2201 1,024 x16, x8
Spansion s29glxxxs s29gl01gs 1 227e 2228 2201 1,024 x16
Spansion s29glxxxp s29gl01gp 1 227e 2228 2201 1,024 x16, x8
Table 53: Supported Flash Memory Devices for Kintex UltraScale BPI Device Configuration (cont'd)
MANUFA MEMOR
Manufactu Manufacturer DEVICE_I DEVICE_I Density Data Width
Device Alias CTURER_ Y_TYPE_I
rer Family D_1 D_2 Mbits Bits
READ_ID D
Macronix mx29gl mx29gl128f c2 227e 2221 2201 128 x16, x8
Micron g18 mt28gu512aax1e [28f512g18f-bpi-x16] 89 887e NULL NULL 512 x16
Micron g18 mt28gu256aax1e [28f256g18f-bpi-x16] 89 8901 NULL NULL 256 x16
Micron g18 mt28gu01gaax1e [28f00ag18f-bpi-x16] 89 88b0 NULL NULL 1,024 x16
Micron mt28fw mt28fw02gb 89 227e 2248 2201 2,048 x16
Micron mt28ew mt28ew512a 89 227e 2239 2201 512 x16, x8
Micron mt28ew mt28ew256a 89 227e 2222 2201 256 x16, x8
Micron mt28ew mt28ew128a 89 227e 2221 2201 128 x16, x8
Micron mt28ew mt28ew01ga 89 227e 2228 2201 1,024 x16, x8
Micron m29w m29w640gl 20 227e 220c 2200 64 x16, x8
Micron m29w m29w640gh 20 227e 220c 2201 64 x16, x8
Micron m29w m29w256gl 20 227e 2222 2201 256 x16, x8
Micron m29w m29w256gh 20 227e 2222 2201 256 x16, x8
Micron m29w m29w128gl 20 227e 2221 2200 128 x16, x8
Micron m29w m29w128gh 20 227e 2221 2201 128 x16, x8
Micron p33 28f640p33t 89 881d NULL NULL 64 x16
Micron p33 28f640p33b 89 8820 NULL NULL 64 x16
Micron p30 28f640p30t 89 8817 NULL NULL 64 x16
Micron p30 28f640p30b 89 881a NULL NULL 64 x16
Micron p33 28f512p33t 89 8964 NULL NULL 512 x16
Micron p33 28f512p33e 89 899e NULL NULL 512 x16
Micron p33 28f512p33b 89 8965 NULL NULL 512 x16
Micron p30 28f512p30t 89 8960 NULL NULL 512 x16
Micron p30 28f512p30e 89 8999 NULL NULL 512 x16
Micron p30 28f512p30b 89 8961 NULL NULL 512 x16
Table 53: Supported Flash Memory Devices for Kintex UltraScale BPI Device Configuration (cont'd)
MANUFA MEMOR
Manufactu Manufacturer DEVICE_I DEVICE_I Density Data Width
Device Alias CTURER_ Y_TYPE_I
rer Family D_1 D_2 Mbits Bits
READ_ID D
Micron m29ew 28f512m29ew 89 227e 2223 2201 512 x16, x8
Micron p33 28f256p33t 89 891f NULL NULL 256 x16
Micron p33 28f256p33b 89 8922 NULL NULL 256 x16
Micron p30 28f256p30t 89 8919 NULL NULL 256 x16
Micron p30 28f256p30b 89 891c NULL NULL 256 x16
Micron m29ew 28f256m29ew 89 227e 2222 2201 256 x16, x8
Micron p33 28f128p33t 89 881e NULL NULL 128 x16
Micron p33 28f128p33b 89 8821 NULL NULL 128 x16
Micron p30 28f128p30t 89 8818 NULL NULL 128 x16
Micron p30 28f128p30b 89 881b NULL NULL 128 x16
Micron m29ew 28f128m29ew 89 227e 2221 2201 128 x16, x8
Micron g18 28f128g18f 89 8900 NULL NULL 128 x16
Micron m29ew 28f064m29ewt 89 227e 2210 2201 64 x16, x8
Micron m29ew 28f064m29ewl 89 227e 220c 2201 64 x16, x8
Micron m29ew 28f064m29ewh 89 227e 220c 2201 64 x16, x8
Micron m29ew 28f064m29ewb 89 227e 2210 2200 64 x16, x8
Micron p30 28f00bp30e 89 899a NULL NULL 2,048 x16
Micron m29ew 28f00bm29ew 89 227e 2248 2201 2,048 x16, x8
Micron p33 28f00ap33t 89 8966 NULL NULL 1,024 x16
Micron p33 28f00ap33e 89 899f NULL NULL 1,024 x16
Micron p33 28f00ap33b 89 8967 NULL NULL 1,024 x16
Micron p30 28f00ap30t 89 8962 NULL NULL 1,024 x16
Micron p30 28f00ap30e 89 899a NULL NULL 1,024 x16
Micron p30 28f00ap30b 89 8963 NULL NULL 1,024 x16
Micron m29ew 28f00am29ew 89 227e 2228 2201 1,024 x16, x8
Table 54: Supported Flash Memory Devices for Kintex UltraScale SPI Device Configuration
MANUFA MEMORY
Manufactur Manufacturer MEMORY Density
Device Alias CTURER_ _CAPACIT Data Width Bits
er Family _TYPE_ID Mbits
READ_ID Y_ID
Spansion s25flxxxs s25fl512s 1 2 20 512 x1, x2, x4
Spansion s25flxxxs s25fl256sxxxxxx1 1 2 19 256 x1, x2, x4
Spansion s25flxxxs s25fl256sxxxxxx0 1 2 19 256 x1, x2, x4
Spansion s25flxxxl s25fl256l 1 60 19 256 x1, x2, x4
Spansion s25fl1 s25fl164k 1 40 17 64 x1, x2, x4
Spansion s25fl1 s25fl132k 1 40 16 32 x1, x2, x4
Spansion s25flxxxs s25fl128sxxxxxx1 1 20 18 128 x1, x2, x4
Spansion s25flxxxs s25fl128sxxxxxx0 [s25fl127s-spi-x1_x2_x4] 1 20 18 128 x1, x2, x4
Spansion s25flxxxl s25fl128l 1 60 18 128 x1, x2, x4
Spansion s25fl1 s25fl116k 1 40 15 16 x1, x2, x4
Spansion s25flxxxp s25fl064p 1 2 16 64 x1, x2, x4
Spansion s25flxxxl s25fl064l 1 60 17 64 x1, x2, x4
Spansion s25flxxxp s25fl032p 1 2 15 32 x1, x2, x4
Micron n25q n25q64-3.3v 20 ba 17 64 x1, x2, x4
Micron n25q n25q64-1.8v 20 bb 17 64 x1, x2, x4
Micron n25q n25q32-3.3v 20 ba 16 32 x1, x2, x4
Micron n25q n25q32-1.8v 20 bb 16 32 x1, x2, x4
Macronix mx66u mx66u2g45g c2 25 3c 2048 x1, x2, x4
Macronix mx66u mx66u1g45g c2 25 3b 1024 x1, x2, x4
Macronix mx66l mx66l2g45g c2 20 1c 2048 x1, x2, x4
Macronix mx66l mx66l1g45g c2 20 1b 1024 x1, x2, x4
Macronix mx25l mx25v8035f c2 23 14 8 x1, x2, x4
Macronix mx25l mx25v1635f c2 23 15 16 x1, x2, x4
Macronix mx25u mx25u8035f [mx25u8033e-spi-x1_x2_x4, c2 25 34 8 x1, x2, x4, x8
mx25u8033e-spi-x1_x2_x4_x8]
Table 54: Supported Flash Memory Devices for Kintex UltraScale SPI Device Configuration (cont'd)
MANUFA MEMORY
Manufactur Manufacturer MEMORY Density
Device Alias CTURER_ _CAPACIT Data Width Bits
er Family _TYPE_ID Mbits
READ_ID Y_ID
Macronix mx25u mx25u6472f [mx25u6435f-mx25u6432f-spi-x1_x2_x4, c2 25 37 64 x1, x2, x4, x8
mx25u6435f-mx25u6432f-spi-x1_x2_x4_x8]
Macronix mx25u mx25u51245g [mx66u51235f-spi-x1_x2_x4] c2 25 3a 512 x1, x2, x4
Macronix mx25u mx25u3235f [mx25u3232f-spi-x1_x2_x4] c2 25 36 32 x1, x2, x4
Macronix mx25u mx25u25673g [mx25u25635f-mx25u25643g- c2 25 39 256 x1, x2, x4, x8
mx25u25645g-spi-x1_x2_x4, mx25u25635f-
mx25u25643g-mx25u25645g-spi-x1_x2_x4_x8]
Macronix mx25u mx25u1635f [mx25u1632f-spi-x1_x2_x4] c2 25 35 16 x1, x2, x4
Macronix mx25u mx25u12872f [mx25u12832f-mx25u12835f- c2 25 38 128 x1, x2, x4, x8
mx25u12843g-spi-x1_x2_x4, mx25u12832f-
mx25u12835f-mx25u12843g-spi-x1_x2_x4_x8]
Macronix mx25l mx25l6433f [mx25l6433f-spi-x1_x2_x4] c2 20 17 64 x1, x2, x4
Macronix mx25l mx25l51273g [mx25l51245g-mx66l51235f-spi- c2 20 1a 512 x1, x2, x4, x8
x1_x2_x4, mx25l51245g-mx66l51235f-spi-
x1_x2_x4_x8]
Macronix mx25l mx25l3273f [mx25l3233f-spi-x1_x2_x4] c2 20 16 32 x1, x2, x4
Macronix mx25l mx25l25673g [mx25l25635f-mx25l25645g-spi- c2 20 19 256 x1, x2, x4, x8
x1_x2_x4, mx25l25635f-mx25l25645g-spi-
x1_x2_x4_x8]
Macronix mx25l mx25l12872f [mx25l12833f-mx25l12835f- c2 20 18 128 x1, x2, x4, x8
mx25l12845g-spi-x1_x2_x4, mx25l12833f-
mx25l12835f-mx25l12845g-spi-x1_x2_x4_x8]
Micron mt25qu mt25qu512 20 bb 20 512 x1, x2, x4
Micron mt25qu mt25qu256 [n25q256-1.8v-spi-x1_x2_x4] 20 bb 19 256 x1, x2, x4
Micron mt25qu mt25qu128 [n25q128-1.8v-spi-x1_x2_x4] 20 bb 18 128 x1, x2, x4
Micron mt25qu mt25qu02g 20 bb 22 2048 x1, x2, x4
Micron mt25qu mt25qu01g 20 bb 21 1024 x1, x2, x4
Micron mt25ql mt25ql512 20 ba 20 512 x1, x2, x4
Micron mt25ql mt25ql256 [n25q256-3.3v-spi-x1_x2_x4] 20 ba 19 256 x1, x2, x4
Micron mt25ql mt25ql128 [n25q128-3.3v-spi-x1_x2_x4] 20 ba 18 128 x1, x2, x4
Table 54: Supported Flash Memory Devices for Kintex UltraScale SPI Device Configuration (cont'd)
MANUFA MEMORY
Manufactur Manufacturer MEMORY Density
Device Alias CTURER_ _CAPACIT Data Width Bits
er Family _TYPE_ID Mbits
READ_ID Y_ID
Micron mt25ql mt25ql02g 20 ba 22 2048 x1, x2, x4
Micron mt25ql mt25ql01g 20 ba 21 1024 x1, x2, x4
ISSI is25wp is25wp512m 9d 70 1a 512 x1, x2, x4
ISSI is25wp is25wp256d 9d 70 19 256 x1, x2, x4
ISSI is25wp is25wp128f 9d 70 18 128 x1, x2, x4
ISSI is25wp is25wp080d 9d 70 14 8 x1, x2, x4
ISSI is25wp is25wp064a 9d 70 17 64 x1, x2, x4
ISSI is25wp is25wp032d 9d 70 16 32 x1, x2, x4
ISSI is25w is25wp01g 9d 70 1b 1024 x1, x2, x4, x8
ISSI is25wp is25wp016d 9d 70 15 16 x1, x2, x4
ISSI is25lp is25lp512m 9d 60 1a 512 x1, x2, x4
ISSI is25lp is25lp256d 9d 60 19 256 x1, x2, x4
ISSI is25lp is25lp128f 9d 60 18 128 x1, x2, x4
ISSI is25lp is25lp080d 9d 60 14 8 x1, x2, x4
ISSI is25lp is25lp064a 9d 60 17 64 x1, x2, x4
ISSI is25lp is25lp032d 9d 60 16 32 x1, x2, x4
ISSI is25l is25lp01g 9d 60 1b 1024 x1, x2, x4, x8
ISSI is25lp is25lp016d 9d 60 15 16 x1, x2, x4
The tables in this Appendix are running lists per Xilinx® family of non-volatile memories which Vivado software is capable of erasing,
blank checking, programming, and verifying. Xilinx strives to retain components on this list even after they are no longer appropriate
for new designs, to support long-term maintenance of end products which may contain them.
IMPORTANT! Given the evolving nature of the commodity non-volatile memory market, Xilinx recommends contacting your non-volatile memory
supplier to confirm device availability and life cycle. References to specific devices in the tables are not an assurance of their current or future
availability.
Table 55: Supported Flash Memory Devices for Kintex UltraScale+ BPI Device Configuration
Table 55: Supported Flash Memory Devices for Kintex UltraScale+ BPI Device Configuration (cont'd)
Table 55: Supported Flash Memory Devices for Kintex UltraScale+ BPI Device Configuration (cont'd)
Table 56: Supported Flash Memory Devices for Kintex UltraScale+ SPI Device Configuration
Table 56: Supported Flash Memory Devices for Kintex UltraScale+ SPI Device Configuration (cont'd)
Table 56: Supported Flash Memory Devices for Kintex UltraScale+ SPI Device Configuration (cont'd)
The tables in this Appendix are running lists per Xilinx® family of non-volatile memories which Vivado software is capable of erasing,
blank checking, programming, and verifying. Xilinx strives to retain components on this list even after they are no longer appropriate
for new designs, to support long-term maintenance of end products which may contain them.
IMPORTANT! Given the evolving nature of the commodity non-volatile memory market, Xilinx recommends contacting your non-volatile memory
supplier to confirm device availability and life cycle. References to specific devices in the tables are not an assurance of their current or future
availability.
Table 57: Supported Flash Memory Devices for Virtex UltraScale BPI Device Configuration
MANUFAC
Manufactur Manufacturer MEMORY_ DEVICE_I DEVICE_I Density
Device Alias TURER_REA Data Width Bits
er Family TYPE_ID D_1 D_2 Mbits
D_ID
Spansion s29glxxxt s70gl02gt 1 227e 2248 2201 128 x16
Spansion s29glxxxs s70gl02gs 1 227e 2248 2201 256 x16
Spansion s29glxxxt s29gl512t 1 227e 2223 2201 512 x16
Spansion s29glxxxs s29gl512s 1 227e 2223 2201 1,024 x16
Spansion s29glxxxp s29gl512p 1 227e 2223 2201 64 x16, x8
Spansion s29glxxxs s29gl256s 1 227e 2222 2201 64 x16, x8
Spansion s29glxxxp s29gl256p 1 227e 2222 2201 64 x16, x8
Spansion s29glxxxs s29gl128s 1 227e 2221 2201 64 x16, x8
Spansion s29glxxxp s29gl128p 1 227e 2221 2201 128 x16, x8
Spansion s29glxxxt s29gl01gt 1 227e 2228 2201 256 x16, x8
Spansion s29glxxxs s29gl01gs 1 227e 2228 2201 512 x16, x8
Spansion s29glxxxp s29gl01gp 1 227e 2228 2201 1,024 x16, x8
Macronix mx29gl mx29gl128f c2 227e 2221 2201 2,048 x16, x8
Table 57: Supported Flash Memory Devices for Virtex UltraScale BPI Device Configuration (cont'd)
MANUFAC
Manufactur Manufacturer MEMORY_ DEVICE_I DEVICE_I Density
Device Alias TURER_REA Data Width Bits
er Family TYPE_ID D_1 D_2 Mbits
D_ID
Micron g18 mt28gu512aax1e [28f512g18f-bpi- 89 887e NULL NULL 128 x16, x8
x16]
Micron g18 mt28gu256aax1e [28f256g18f-bpi- 89 8901 NULL NULL 128 x16, x8
x16]
Micron g18 mt28gu01gaax1e [28f00ag18f-bpi- 89 88b0 NULL NULL 256 x16, x8
x16]
Micron mt28fw mt28fw02gb 89 227e 2248 2201 256 x16, x8
Micron mt28ew mt28ew512a 89 227e 2239 2201 128 x16, x8
Micron mt28ew mt28ew256a 89 227e 2222 2201 256 x16, x8
Micron mt28ew mt28ew128a 89 227e 2221 2201 512 x16, x8
Micron mt28ew mt28ew01ga 89 227e 2228 2201 1,024 x16, x8
Micron m29w m29w256gl 20 227e 2222 2201 2,048 x16
Micron m29w m29w256gh 20 227e 2222 2201 64 x16
Micron m29w m29w128gl 20 227e 2221 2200 64 x16
Micron m29w m29w128gh 20 227e 2221 2201 128 x16
Micron p30 28f640p30t 89 8817 NULL NULL 128 x16
Micron p30 28f640p30b 89 881a NULL NULL 256 x16
Micron p30 28f512p30t 89 8960 NULL NULL 256 x16
Micron p30 28f512p30e 89 8999 NULL NULL 512 x16
Micron p30 28f512p30b 89 8961 NULL NULL 512 x16
Micron m29ew 28f512m29ew 89 227e 2223 2201 512 x16
Micron p30 28f256p30t 89 8919 NULL NULL 1,024 x16
Micron p30 28f256p30b 89 891c NULL NULL 1,024 x16
Micron m29ew 28f256m29ew 89 227e 2222 2201 1,024 x16
Micron p30 28f128p30t 89 8818 NULL NULL 2,048 x16
Micron p30 28f128p30b 89 881b NULL NULL 128 x16, x8
Micron m29ew 28f128m29ew 89 227e 2221 2201 256 x16, x8
Table 57: Supported Flash Memory Devices for Virtex UltraScale BPI Device Configuration (cont'd)
MANUFAC
Manufactur Manufacturer MEMORY_ DEVICE_I DEVICE_I Density
Device Alias TURER_REA Data Width Bits
er Family TYPE_ID D_1 D_2 Mbits
D_ID
Micron g18 28f128g18f 89 8900 NULL NULL 512 x16, x8
Micron m29ew 28f064m29ewt 89 227e 2210 2201 1,024 x16, x8
Micron m29ew 28f064m29ewl 89 227e 220c 2201 128 x16
Micron m29ew 28f064m29ewh 89 227e 220c 2201 256 x16
Micron m29ew 28f064m29ewb 89 227e 2210 2200 512 x16
Micron p30 28f00bp30e 89 899a NULL NULL 1,024 x16
Micron m29ew 28f00bm29ew 89 227e 2248 2201 2,048 x16
Micron p30 28f00ap30t 89 8962 NULL NULL 512 x16, x8
Micron p30 28f00ap30e 89 899a NULL NULL 1,024 x16, x8
Micron p30 28f00ap30b 89 8963 NULL NULL 2,048 x16, x8
Micron m29ew 28f00am29ew 89 227e 2228 2201 128 x16, x8
Table 58: Supported Flash Memory Devices for Virtex UltraScale SPI Device Configuration
MANUFAC MEMORY
Manufactur Manufacturer MEMORY Density
Device Alias TURER_RE _CAPACIT Data Width Bits
er Family _TYPE_ID Mbits
AD_ID Y_ID
Spansion s25flxxxs s25fl512s 1 2 20 512 x1, x2, x4, x8
Spansion s25flxxxs s25fl256sxxxxxx1 1 2 19 256 x1, x2, x4, x8
Spansion s25flxxxs s25fl256sxxxxxx0 1 2 19 256 x1, x2, x4, x8
Spansion s25flxxxl s25fl256l 1 60 19 256 x1, x2, x4, x8
Spansion s25fl1 s25fl164k 1 40 17 64 x1, x2, x4
Spansion s25fl1 s25fl132k 1 40 16 32 x1, x2, x4
Spansion s25flxxxs s25fl128sxxxxxx1 1 20 18 128 x1, x2, x4, x8
Spansion s25flxxxs s25fl128sxxxxxx0 [s25fl127s-spi-x1_x2_x4, s25fl127s- 1 20 18 128 x1, x2, x4, x8
spi-x1_x2_x4_x8]
Spansion s25flxxxl s25fl128l 1 60 18 128 x1, x2, x4, x8
Table 58: Supported Flash Memory Devices for Virtex UltraScale SPI Device Configuration (cont'd)
MANUFAC MEMORY
Manufactur Manufacturer MEMORY Density
Device Alias TURER_RE _CAPACIT Data Width Bits
er Family _TYPE_ID Mbits
AD_ID Y_ID
Spansion s25fl1 s25fl116k 1 40 15 16 x1, x2, x4
Spansion s25flxxxp s25fl064p 1 2 16 64 x1, x2, x4
Spansion s25flxxxl s25fl064l 1 60 17 64 x1, x2, x4
Spansion s25flxxxp s25fl032p 1 2 15 32 x1, x2, x4
Micron n25q n25q64-3.3v 20 ba 17 64 x1, x2, x4
Micron n25q n25q64-1.8v 20 bb 17 64 x1, x2, x4
Micron n25q n25q32-3.3v 20 ba 16 32 x1, x2, x4
Micron n25q n25q32-1.8v 20 bb 16 32 x1, x2, x4
Macronix mx66u mx66u2g45g c2 25 3c 2,048 x1, x2, x4, x8
Macronix mx66u mx66u1g45g c2 25 3b 1,024 x1, x2, x4, x8
Macronix mx66l mx66l2g45g c2 20 1c 2,048 x1, x2, x4
Macronix mx66l mx66l1g45g c2 20 1b 1,024 x1, x2, x4
Macronix mx25l mx25v8035f c2 23 14 8 x1, x2, x4
Macronix mx25l mx25v1635f c2 23 15 16 x1, x2, x4
Macronix mx25u mx25u8035f [mx25u8033e-spi-x1_x2_x4, c2 25 34 8 x1, x2, x4, x8
mx25u8033e-spi-x1_x2_x4_x8]
Macronix mx25u mx25u6472f [mx25u6435f-mx25u6432f-spi- c2 25 37 64 x1, x2, x4, x8
x1_x2_x4, mx25u6435f-mx25u6432f-spi-
x1_x2_x4_x8]
Macronix mx25u mx25u51245g [mx66u51235f-spi-x1_x2_x4, c2 25 3a 512 x1, x2, x4, x8
mx66u51235f-spi-x1_x2_x4_x8]
Macronix mx25u mx25u3235f [mx25u3232f-spi-x1_x2_x4, c2 25 36 32 x1, x2, x4, x8
mx25u3232f-spi-x1_x2_x4_x8]
Macronix mx25u mx25u25673g [mx25u25635f-mx25u25643g- c2 25 39 256 x1, x2, x4, x8
mx25u25645g-spi-x1_x2_x4, mx25u25635f-
mx25u25643g-mx25u25645g-spi-x1_x2_x4_x8]
Macronix mx25u mx25u1635f [mx25u1632f-spi-x1_x2_x4, c2 25 35 16 x1, x2, x4, x8
mx25u1632f-spi-x1_x2_x4_x8]
Table 58: Supported Flash Memory Devices for Virtex UltraScale SPI Device Configuration (cont'd)
MANUFAC MEMORY
Manufactur Manufacturer MEMORY Density
Device Alias TURER_RE _CAPACIT Data Width Bits
er Family _TYPE_ID Mbits
AD_ID Y_ID
Macronix mx25u mx25u12872f [mx25u12832f-mx25u12835f- c2 25 38 128 x1, x2, x4, x8
mx25u12843g-spi-x1_x2_x4, mx25u12832f-
mx25u12835f-mx25u12843g-spi-x1_x2_x4_x8]
Macronix mx25l mx25l6433f [mx25l6433f-spi-x1_x2_x4] c2 20 17 64 x1, x2, x4
Macronix mx25l mx25l51273g [mx25l51245g-mx66l51235f-spi- c2 20 1a 512 x1, x2, x4, x8
x1_x2_x4, mx25l51245g-mx66l51235f-spi-
x1_x2_x4_x8]
Macronix mx25l mx25l3273f [mx25l3233f-spi-x1_x2_x4] c2 20 16 32 x1, x2, x4
Macronix mx25l mx25l25673g [mx25l25635f-mx25l25645g-spi- c2 20 19 256 x1, x2, x4, x8
x1_x2_x4, mx25l25635f-mx25l25645g-spi-
x1_x2_x4_x8]
Macronix mx25l mx25l12872f [mx25l12833f-mx25l12835f- c2 20 18 128 x1, x2, x4, x8
mx25l12845g-spi-x1_x2_x4, mx25l12833f-
mx25l12835f-mx25l12845g-spi-x1_x2_x4_x8]
Micron mt25qu mt25qu512 20 bb 20 512 x1, x2, x4, x8
Micron mt25qu mt25qu256 [n25q256-1.8v-spi-x1_x2_x4, 20 bb 19 256 x1, x2, x4, x8
n25q256-1.8v-spi-x1_x2_x4_x8]
Micron mt25qu mt25qu128 [n25q128-1.8v-spi-x1_x2_x4, 20 bb 18 128 x1, x2, x4, x8
n25q128-1.8v-spi-x1_x2_x4_x8]
Micron mt25qu mt25qu02g 20 bb 22 2,048 x1, x2, x4, x8
Micron mt25qu mt25qu01g 20 bb 21 1,024 x1, x2, x4, x8
Micron mt25ql mt25ql512 20 ba 20 512 x1, x2, x4
Micron mt25ql mt25ql256 [n25q256-3.3v-spi-x1_x2_x4] 20 ba 19 256 x1, x2, x4
Micron mt25ql mt25ql128 [n25q128-3.3v-spi-x1_x2_x4] 20 ba 18 128 x1, x2, x4
Micron mt25ql mt25ql02g 20 ba 22 2,048 x1, x2, x4
Micron mt25ql mt25ql01g 20 ba 21 1,024 x1, x2, x4
ISSI is25wp is25wp512m 9d 70 1a 512 x1, x2, x4, x8
ISSI is25wp is25wp256d 9d 70 19 256 x1, x2, x4, x8
ISSI is25wp is25wp128f 9d 70 18 128 x1, x2, x4, x8
Table 58: Supported Flash Memory Devices for Virtex UltraScale SPI Device Configuration (cont'd)
MANUFAC MEMORY
Manufactur Manufacturer MEMORY Density
Device Alias TURER_RE _CAPACIT Data Width Bits
er Family _TYPE_ID Mbits
AD_ID Y_ID
ISSI is25wp is25wp080d 9d 70 14 8 x1, x2, x4, x8
ISSI is25wp is25wp064a 9d 70 17 64 x1, x2, x4, x8
ISSI is25wp is25wp032d 9d 70 16 32 x1, x2, x4, x8
ISSI is25w is25wp01g 9d 70 1b 1,024 x1, x2, x4, x8
ISSI is25wp is25wp016d 9d 70 15 16 x1, x2, x4, x8
ISSI is25lp is25lp512m 9d 60 1a 512 x1, x2, x4, x8
ISSI is25lp is25lp256d 9d 60 19 256 x1, x2, x4, x8
ISSI is25lp is25lp128f 9d 60 18 128 x1, x2, x4, x8
ISSI is25lp is25lp080d 9d 60 14 8 x1, x2, x4, x8
ISSI is25lp is25lp064a 9d 60 17 64 x1, x2, x4, x8
ISSI is25lp is25lp032d 9d 60 16 32 x1, x2, x4, x8
ISSI is25l is25lp01g 9d 60 1b 1,024 x1, x2, x4, x8
ISSI is25lp is25lp016d 9d 60 15 16 x1, x2, x4, x8
The tables in this Appendix are running lists per Xilinx® family of non-volatile memories which Vivado software is capable of erasing,
blank checking, programming, and verifying. Xilinx strives to retain components on this list even after they are no longer appropriate
for new designs, to support long-term maintenance of end products which may contain them.
IMPORTANT! Given the evolving nature of the commodity non-volatile memory market, Xilinx recommends contacting your non-volatile memory
supplier to confirm device availability and life cycle. References to specific devices in the tables are not an assurance of their current or future
availability.
Table 59: Supported Flash Memory Devices for Virtex UltraScale+ BPI Device Configuration
Table 59: Supported Flash Memory Devices for Virtex UltraScale+ BPI Device Configuration (cont'd)
Table 59: Supported Flash Memory Devices for Virtex UltraScale+ BPI Device Configuration (cont'd)
Table 60: Supported Flash Memory Devices for Virtex UltraScale+ SPI Device Configuration
Table 60: Supported Flash Memory Devices for Virtex UltraScale+ SPI Device Configuration (cont'd)
Table 60: Supported Flash Memory Devices for Virtex UltraScale+ SPI Device Configuration (cont'd)
The tables in this Appendix are running lists per Xilinx® family of non-volatile memories which Vivado software is capable of erasing,
blank checking, programming, and verifying. Xilinx strives to retain components on this list even after they are no longer appropriate
for new designs, to support long-term maintenance of end products which may contain them.
IMPORTANT! Given the evolving nature of the commodity non-volatile memory market, Xilinx recommends contacting your non-volatile memory
supplier to confirm device availability and life cycle. References to specific devices in the tables are not an assurance of their current or future
availability.
Note: The U-Boot tags used to build the Configuration Memory Device Programmer are as follows:
Table 61: Supported Flash Memory Devices for Zynq-7000 Device Configuration
Manufacturer Density
Interface Manufacturer Device Alias Data Width Bits
Family Mbits
NAND Micron mt29f mt29f2g08ab 2,048 x8
NAND Micron mt29f mt29f2g16ab 2,048 x16
NAND Spansion s34ml s34ml01g1 1,024 x16, x8
NAND Spansion s34ml s34ml02g1 2,048 x16, x8
NOR Micron m29ew 28f032m29ewt 32 x8
NOR Micron m29ew 28f064m29ewt 64 x8
NOR Micron m29ew 28f128m29ewh 128 x8
Table 61: Supported Flash Memory Devices for Zynq-7000 Device Configuration (cont'd)
Manufacturer Density
Interface Manufacturer Device Alias Data Width Bits
Family Mbits
NOR Micron m29ew 28f256m29ewh 256 x8
NOR Micron m29ew 28f512m29ewh 512 x8
QSPI qspi 0 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-
dual_parallel
QSPI ISSI is25l is25lp01g 1,024 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-
dual_parallel
QSPI ISSI is25lp is25lp080d 8 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-
dual_parallel
QSPI ISSI is25lp is25lp016d 16 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-
dual_parallel
QSPI ISSI is25lp is25lp032d 32 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-
dual_parallel
QSPI ISSI is25lp is25lp064a 64 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-
dual_parallel
QSPI ISSI is25lp is25lp128f 128 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-
dual_parallel
QSPI ISSI is25lp is25lp256d 256 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-
dual_parallel
Table 61: Supported Flash Memory Devices for Zynq-7000 Device Configuration (cont'd)
Manufacturer Density
Interface Manufacturer Device Alias Data Width Bits
Family Mbits
QSPI ISSI is25lp is25lp512m 512 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-
dual_parallel
QSPI ISSI is25w is25wp01g 1,024 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-
dual_parallel
QSPI ISSI is25wp is25wp080d 8 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-
dual_parallel
QSPI ISSI is25wp is25wp016d 16 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-
dual_parallel
QSPI ISSI is25wp is25wp032d 32 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-
dual_parallel
QSPI ISSI is25wp is25wp064a 64 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-
dual_parallel
QSPI ISSI is25wp is25wp128f 128 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-
dual_parallel
QSPI ISSI is25wp is25wp256d 256 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-
dual_parallel
QSPI ISSI is25wp is25wp512m 512 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-
dual_parallel
Table 61: Supported Flash Memory Devices for Zynq-7000 Device Configuration (cont'd)
Manufacturer Density
Interface Manufacturer Device Alias Data Width Bits
Family Mbits
QSPI Winbond w25h w25h02jv 2,048 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-
dual_parallel
QSPI Winbond w25q w25q128fv [w25q128jv-qspi-x1-dual_stacked, 128 x1-dual_stacked, x1-single, x2-
w25q128jv-qspi-x1-single, w25q128jv-qspi-x2- dual_stacked, x2-single, x4-
dual_stacked, w25q128jv-qspi-x2-single, w25q128jv- dual_stacked, x4-single, x8-
qspi-x4-dual_stacked, w25q128jv-qspi-x4-single, dual_parallel
w25q128jv-qspi-x8-dual_parallel]
QSPI Winbond w25q w25q128fw 128 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-
dual_parallel
QSPI Micron mt25ql mt25ql128 [n25q128-3.3v-qspi-x1-dual_stacked, 128 x1-dual_stacked, x1-single, x2-
n25q128-3.3v-qspi-x1-single, n25q128-3.3v-qspi-x2- dual_stacked, x2-single, x4-
dual_stacked, n25q128-3.3v-qspi-x2-single, dual_stacked, x4-single, x8-
n25q128-3.3v-qspi-x4-dual_stacked, n25q128-3.3v- dual_parallel
qspi-x4-single, n25q128-3.3v-qspi-x8-dual_parallel]
QSPI Micron mt25ql mt25ql256 [n25q256-3.3v-qspi-x1-dual_stacked, 256 x1-dual_stacked, x1-single, x2-
n25q256-3.3v-qspi-x1-single, n25q256-3.3v-qspi-x2- dual_stacked, x2-single, x4-
dual_stacked, n25q256-3.3v-qspi-x2-single, dual_stacked, x4-single, x8-
n25q256-3.3v-qspi-x4-dual_stacked, n25q256-3.3v- dual_parallel
qspi-x4-single, n25q256-3.3v-qspi-x8-dual_parallel]
QSPI Micron mt25ql mt25ql512 [n25q512-3.3v-qspi-x1-dual_stacked, 512 x1-dual_stacked, x1-single, x2-
n25q512-3.3v-qspi-x1-single, n25q512-3.3v-qspi-x2- dual_stacked, x2-single, x4-
dual_stacked, n25q512-3.3v-qspi-x2-single, dual_stacked, x4-single, x8-
n25q512-3.3v-qspi-x4-dual_stacked, n25q512-3.3v- dual_parallel
qspi-x4-single, n25q512-3.3v-qspi-x8-dual_parallel]
QSPI Micron mt25ql mt25ql01g [n25q00a-3.3v-qspi-x1-dual_stacked, 1,024 x1-dual_stacked, x1-single, x2-
n25q00a-3.3v-qspi-x1-single, n25q00a-3.3v-qspi-x2- dual_stacked, x2-single, x4-
dual_stacked, n25q00a-3.3v-qspi-x2-single, dual_stacked, x4-single, x8-
n25q00a-3.3v-qspi-x4-dual_stacked, n25q00a-3.3v- dual_parallel
qspi-x4-single, n25q00a-3.3v-qspi-x8-dual_parallel]
QSPI Micron mt25ql mt25ql02g 2,048 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-
dual_parallel
Table 61: Supported Flash Memory Devices for Zynq-7000 Device Configuration (cont'd)
Manufacturer Density
Interface Manufacturer Device Alias Data Width Bits
Family Mbits
QSPI Micron mt25qu mt25qu128 [n25q128-1.8v-qspi-x1-dual_stacked, 128 x1-dual_stacked, x1-single, x2-
n25q128-1.8v-qspi-x1-single, n25q128-1.8v-qspi-x2- dual_stacked, x2-single, x4-
dual_stacked, n25q128-1.8v-qspi-x2-single, dual_stacked, x4-single, x8-
n25q128-1.8v-qspi-x4-dual_stacked, n25q128-1.8v- dual_parallel
qspi-x4-single, n25q128-1.8v-qspi-x8-dual_parallel]
QSPI Micron mt25qu mt25qu256 [n25q256-1.8v-qspi-x1-dual_stacked, 256 x1-dual_stacked, x1-single, x2-
n25q256-1.8v-qspi-x1-single, n25q256-1.8v-qspi-x2- dual_stacked, x2-single, x4-
dual_stacked, n25q256-1.8v-qspi-x2-single, dual_stacked, x4-single, x8-
n25q256-1.8v-qspi-x4-dual_stacked, n25q256-1.8v- dual_parallel
qspi-x4-single, n25q256-1.8v-qspi-x8-dual_parallel]
QSPI Micron mt25qu mt25qu512 [n25q512-1.8v-qspi-x1-dual_stacked, 512 x1-dual_stacked, x1-single, x2-
n25q512-1.8v-qspi-x1-single, n25q512-1.8v-qspi-x2- dual_stacked, x2-single, x4-
dual_stacked, n25q512-1.8v-qspi-x2-single, dual_stacked, x4-single, x8-
n25q512-1.8v-qspi-x4-dual_stacked, n25q512-1.8v- dual_parallel
qspi-x4-single, n25q512-1.8v-qspi-x8-dual_parallel]
QSPI Micron mt25qu mt25qu01g [n25q00a-1.8v-qspi-x1-dual_stacked, 1,024 x1-dual_stacked, x1-single, x2-
n25q00a-1.8v-qspi-x1-single, n25q00a-1.8v-qspi-x2- dual_stacked, x2-single, x4-
dual_stacked, n25q00a-1.8v-qspi-x2-single, dual_stacked, x4-single, x8-
n25q00a-1.8v-qspi-x4-dual_stacked, n25q00a-1.8v- dual_parallel
qspi-x4-single, n25q00a-1.8v-qspi-x8-dual_parallel]
QSPI Micron mt25qu mt25qu02g 2,048 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-
dual_parallel
QSPI Micron n25q n25q64-1.8v 64 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-
dual_parallel
QSPI Micron n25q n25q64-3.3v 64 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-
dual_parallel
QSPI Spansion s25flxxxl s25fl064l 64 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-
dual_parallel
Table 61: Supported Flash Memory Devices for Zynq-7000 Device Configuration (cont'd)
Manufacturer Density
Interface Manufacturer Device Alias Data Width Bits
Family Mbits
QSPI Spansion s25flxxxl s25fl256l 256 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-
dual_parallel
QSPI Spansion s25flxxxp s25fl129p 128 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-
dual_parallel
QSPI Spansion s25flxxxs s25fl128s-1.8v [s25fl127s-1.8v-qspi-x4-dual_stacked, 128 x1-dual_stacked, x1-single, x2-
s25fl127s-1.8v-qspi-x4-single, s25fl127s-1.8v-qspi- dual_stacked, x2-single, x4-
x8-dual_parallel] dual_stacked, x4-single, x8-
dual_parallel
QSPI Spansion s25flxxxs s25fl128s-3.3v [s25fl127s-3.3v-qspi-x4-dual_stacked, 128 x1-dual_stacked, x1-single, x2-
s25fl127s-3.3v-qspi-x4-single, s25fl127s-3.3v-qspi- dual_stacked, x2-single, x4-
x8-dual_parallel] dual_stacked, x4-single, x8-
dual_parallel
QSPI Spansion s25flxxxs s25fl256s-1.8v 256 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-
dual_parallel
QSPI Spansion s25flxxxs s25fl256s-3.3v 256 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-
dual_parallel
QSPI Spansion s25flxxxs s25fl512s-1.8v 512 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-
dual_parallel
QSPI Spansion s25flxxxs s25fl512s-3.3v 512 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-
dual_parallel
QSPI Spansion s70flxxxp s70fl01gs_00 1,024 x4-dual_stacked
QSPI Macronix mx25l mx25l3273f 32 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-
dual_parallel
Table 61: Supported Flash Memory Devices for Zynq-7000 Device Configuration (cont'd)
Manufacturer Density
Interface Manufacturer Device Alias Data Width Bits
Family Mbits
QSPI Macronix mx25l mx25l12833f 128 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-
dual_parallel
QSPI Macronix mx25l mx25l12835f [mx25l12833f-qspi-x1-dual_stacked, 128 x1-dual_stacked, x1-single, x2-
mx25l12833f-qspi-x1-single, mx25l12833f-qspi-x2- dual_stacked, x2-single, x4-
dual_stacked, mx25l12833f-qspi-x2-single, dual_stacked, x4-single, x8-
mx25l12833f-qspi-x4-dual_stacked, mx25l12833f- dual_parallel
qspi-x4-single, mx25l12833f-qspi-x8-dual_parallel]
QSPI Macronix mx25l mx25l12845g 128 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-
dual_parallel
QSPI Macronix mx25l mx25l12872f 128 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-
dual_parallel
QSPI Macronix mx25l mx25l25635f [mx25l25645g-qspi-x1-dual_stacked, 256 x1-dual_stacked, x1-single, x2-
mx25l25645g-qspi-x1-single, mx25l25645g-qspi-x2- dual_stacked, x2-single, x4-
dual_stacked, mx25l25645g-qspi-x2-single, dual_stacked, x4-single, x8-
mx25l25645g-qspi-x4-dual_stacked, mx25l25645g- dual_parallel
qspi-x4-single, mx25l25645g-qspi-x8-dual_parallel]
QSPI Macronix mx25l mx25l25673g 256 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-
dual_parallel
QSPI Macronix mx25l mx25l51245g 512 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-
dual_parallel
QSPI Macronix mx25l mx25l51273g 512 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-
dual_parallel
QSPI Macronix mx25u mx25u8035f 8 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-
dual_parallel
Table 61: Supported Flash Memory Devices for Zynq-7000 Device Configuration (cont'd)
Manufacturer Density
Interface Manufacturer Device Alias Data Width Bits
Family Mbits
QSPI Macronix mx25u mx25u6472f 64 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-
dual_parallel
QSPI Macronix mx25u mx25u12835f [mx25u12832f-qspi-x1-dual_stacked, 128 x1-dual_stacked, x1-single, x2-
mx25u12832f-qspi-x1-single, mx25u12832f-qspi-x2- dual_stacked, x2-single, x4-
dual_stacked, mx25u12832f-qspi-x2-single, dual_stacked, x4-single, x8-
mx25u12832f-qspi-x4-dual_stacked, mx25u12832f- dual_parallel
qspi-x4-single, mx25u12832f-qspi-x8-dual_parallel]
QSPI Macronix mx25u mx25u12843g 128 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-
dual_parallel
QSPI Macronix mx25u mx25u12872f 128 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-
dual_parallel
QSPI Macronix mx25u mx25u25635f [mx25u25645g-qspi-x1-dual_stacked, 256 x1-dual_stacked, x1-single, x2-
mx25u25645g-qspi-x1-single, mx25u25645g-qspi- dual_stacked, x2-single, x4-
x2-dual_stacked, mx25u25645g-qspi-x2-single, dual_stacked, x4-single, x8-
mx25u25645g-qspi-x4-dual_stacked, mx25u25645g- dual_parallel
qspi-x4-single, mx25u25645g-qspi-x8-dual_parallel]
QSPI Macronix mx25u mx25u25643g 256 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-
dual_parallel
QSPI Macronix mx25u mx25u25673g 256 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-
dual_parallel
QSPI Macronix mx25u mx25u51245g 512 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-
dual_parallel
QSPI Macronix mx66l mx66l51235f 512 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-
dual_parallel
Table 61: Supported Flash Memory Devices for Zynq-7000 Device Configuration (cont'd)
Manufacturer Density
Interface Manufacturer Device Alias Data Width Bits
Family Mbits
QSPI Macronix mx66l mx66l1g45g 1,024 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-
dual_parallel
QSPI Macronix mx66l mx66l2g45g 2,048 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-
dual_parallel
QSPI Macronix mx66u mx66u1g45g 1,024 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-
dual_parallel
QSPI Macronix mx66u mx66u2g45g 2,048 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-
dual_parallel
The tables in this Appendix are running lists per Xilinx® family of non-volatile memories which Vivado software is capable of erasing,
blank checking, programming, and verifying. Xilinx strives to retain components on this list even after they are no longer appropriate
for new designs, to support long-term maintenance of end products which may contain them.
IMPORTANT! Given the evolving nature of the commodity non-volatile memory market, Xilinx recommends contacting your non-volatile memory
supplier to confirm device availability and life cycle. References to specific devices in the tables are not an assurance of their current or future
availability.
Table 62: Supported Flash Memory Devices for Zynq UltraScale+ MPSoC Device Configuration
Manufactu Density
Interface Manufacturer Device Alias Data Width Bits
rer Family Mbits
EMMC jedec4.51-4gb 32,768
EMMC jedec4.51-8gb 65,536
EMMC jedec4.51-16gb 131,072
EMMC jedec4.51-32gb 262,144
EMMC jedec4.51 524,288
EMMC jedec4.51-64gb 524,288
EMMC Micron mtfc mtfc8gakajcn-4m 65,536
NAND nand 0 NA, x8-dual, x8-single
NAND Micron mt29f mt29f2g08ab 2,048 x8-dual, x8-single
NAND Micron mt29f mt29f8g08ab 8,192 x8-dual, x8-single
NAND Micron mt29f mt29f16g08ab 16,384 x8-dual, x8-single
NAND Micron mt29f mt29f32g08ae 32,768 x8-dual, x8-single
NAND Micron mt29f mt29f64g08ae 65,536 x8-dual, x8-single
Table 62: Supported Flash Memory Devices for Zynq UltraScale+ MPSoC Device Configuration (cont'd)
Manufactu Density
Interface Manufacturer Device Alias Data Width Bits
rer Family Mbits
NAND Spansion s34ml s34ml01g1 1,024 x8-dual, x8-single
NAND Spansion s34ml s34ml02g1 2,048 x8-dual, x8-single
QSPI qspi 0 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-dual_parallel
QSPI ISSI is25l is25lp01g 1,024 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-dual_parallel
QSPI ISSI is25lp is25lp080d 8 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-dual_parallel
QSPI ISSI is25lp is25lp016d 16 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-dual_parallel
QSPI ISSI is25lp is25lp032d 32 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-dual_parallel
QSPI ISSI is25lp is25lp128f 128 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-dual_parallel
QSPI ISSI is25lp is25lp256d 256 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-dual_parallel
QSPI ISSI is25lp is25lp512m 512 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-dual_parallel
QSPI ISSI is25w is25wp01g 1,024 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-dual_parallel
QSPI ISSI is25wp is25wp080d 8 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-dual_parallel
QSPI ISSI is25wp is25wp016d 16 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-dual_parallel
Table 62: Supported Flash Memory Devices for Zynq UltraScale+ MPSoC Device Configuration (cont'd)
Manufactu Density
Interface Manufacturer Device Alias Data Width Bits
rer Family Mbits
QSPI ISSI is25wp is25wp032d 32 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-dual_parallel
QSPI ISSI is25wp is25wp064a 64 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-dual_parallel
QSPI ISSI is25wp is25wp128f 128 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-dual_parallel
QSPI ISSI is25wp is25wp256d 256 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-dual_parallel
QSPI ISSI is25wp is25wp512m 512 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-dual_parallel
QSPI Winbond w25h w25h02jv 2,048 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-dual_parallel
QSPI Micron mt25ql mt25ql128 [n25q128-3.3v-qspi-x1-dual_stacked, 128 x1-dual_stacked, x1-single, x2-
n25q128-3.3v-qspi-x1-single, n25q128-3.3v-qspi-x2- dual_stacked, x2-single, x4-
dual_stacked, n25q128-3.3v-qspi-x2-single, dual_stacked, x4-single, x8-dual_parallel
n25q128-3.3v-qspi-x4-dual_stacked, n25q128-3.3v-qspi-
x4-single, n25q128-3.3v-qspi-x8-dual_parallel]
QSPI Micron mt25ql mt25ql256 [n25q256-3.3v-qspi-x1-dual_stacked, 256 x1-dual_stacked, x1-single, x2-
n25q256-3.3v-qspi-x1-single, n25q256-3.3v-qspi-x2- dual_stacked, x2-single, x4-
dual_stacked, n25q256-3.3v-qspi-x2-single, dual_stacked, x4-single, x8-dual_parallel
n25q256-3.3v-qspi-x4-dual_stacked, n25q256-3.3v-qspi-
x4-single, n25q256-3.3v-qspi-x8-dual_parallel]
QSPI Micron mt25ql mt25ql512 [n25q512-3.3v-qspi-x1-dual_stacked, 512 x1-dual_stacked, x1-single, x2-
n25q512-3.3v-qspi-x1-single, n25q512-3.3v-qspi-x2- dual_stacked, x2-single, x4-
dual_stacked, n25q512-3.3v-qspi-x2-single, dual_stacked, x4-single, x8-dual_parallel
n25q512-3.3v-qspi-x4-dual_stacked, n25q512-3.3v-qspi-
x4-single, n25q512-3.3v-qspi-x8-dual_parallel]
Table 62: Supported Flash Memory Devices for Zynq UltraScale+ MPSoC Device Configuration (cont'd)
Manufactu Density
Interface Manufacturer Device Alias Data Width Bits
rer Family Mbits
QSPI Micron mt25ql mt25ql01g [n25q00a-3.3v-qspi-x1-dual_stacked, 1,024 x1-dual_stacked, x1-single, x2-
n25q00a-3.3v-qspi-x1-single, n25q00a-3.3v-qspi-x2- dual_stacked, x2-single, x4-
dual_stacked, n25q00a-3.3v-qspi-x2-single, dual_stacked, x4-single, x8-dual_parallel
n25q00a-3.3v-qspi-x4-dual_stacked, n25q00a-3.3v-qspi-
x4-single, n25q00a-3.3v-qspi-x8-dual_parallel]
QSPI Micron mt25ql mt25ql02g 2,048 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-dual_parallel
QSPI Micron mt25qu mt25qu128 [n25q128-1.8v-qspi-x1-dual_stacked, 128 x1-dual_stacked, x1-single, x2-
n25q128-1.8v-qspi-x1-single, n25q128-1.8v-qspi-x2- dual_stacked, x2-single, x4-
dual_stacked, n25q128-1.8v-qspi-x2-single, dual_stacked, x4-single, x8-dual_parallel
n25q128-1.8v-qspi-x4-dual_stacked, n25q128-1.8v-qspi-
x4-single, n25q128-1.8v-qspi-x8-dual_parallel]
QSPI Micron mt25qu mt25qu256 [n25q256-1.8v-qspi-x1-dual_stacked, 256 x1-dual_stacked, x1-single, x2-
n25q256-1.8v-qspi-x1-single, n25q256-1.8v-qspi-x2- dual_stacked, x2-single, x4-
dual_stacked, n25q256-1.8v-qspi-x2-single, dual_stacked, x4-single, x8-dual_parallel
n25q256-1.8v-qspi-x4-dual_stacked, n25q256-1.8v-qspi-
x4-single, n25q256-1.8v-qspi-x8-dual_parallel]
QSPI Micron mt25qu mt25qu512 [n25q512-1.8v-qspi-x1-dual_stacked, 512 x1-dual_stacked, x1-single, x2-
n25q512-1.8v-qspi-x1-single, n25q512-1.8v-qspi-x2- dual_stacked, x2-single, x4-
dual_stacked, n25q512-1.8v-qspi-x2-single, dual_stacked, x4-single, x8-dual_parallel
n25q512-1.8v-qspi-x4-dual_stacked, n25q512-1.8v-qspi-
x4-single, n25q512-1.8v-qspi-x8-dual_parallel]
QSPI Micron mt25qu mt25qu01g [n25q00a-1.8v-qspi-x1-dual_stacked, 1,024 x1-dual_stacked, x1-single, x2-
n25q00a-1.8v-qspi-x1-single, n25q00a-1.8v-qspi-x2- dual_stacked, x2-single, x4-
dual_stacked, n25q00a-1.8v-qspi-x2-single, dual_stacked, x4-single, x8-dual_parallel
n25q00a-1.8v-qspi-x4-dual_stacked, n25q00a-1.8v-qspi-
x4-single, n25q00a-1.8v-qspi-x8-dual_parallel]
QSPI Micron mt25qu mt25qu02g 2,048 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-dual_parallel
QSPI Micron n25q n25q64-1.8v 64 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-dual_parallel
QSPI Micron n25q n25q64-3.3v 64 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-dual_parallel
Table 62: Supported Flash Memory Devices for Zynq UltraScale+ MPSoC Device Configuration (cont'd)
Manufactu Density
Interface Manufacturer Device Alias Data Width Bits
rer Family Mbits
QSPI Spansion s25flxxxl s25fl256l 256 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-dual_parallel
QSPI Spansion s25flxxxp s25fl129p 128 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-dual_parallel
QSPI Spansion s25flxxxs s25fl128s-1.8v [s25fl127s-1.8v-qspi-x4-dual_stacked, 128 x1-dual_stacked, x1-single, x2-
s25fl127s-1.8v-qspi-x4-single, s25fl127s-1.8v-qspi-x8- dual_stacked, x2-single, x4-
dual_parallel] dual_stacked, x4-single, x8-dual_parallel
QSPI Spansion s25flxxxs s25fl128s-3.3v [s25fl127s-3.3v-qspi-x4-dual_stacked, 128 x1-dual_stacked, x1-single, x2-
s25fl127s-3.3v-qspi-x4-single, s25fl127s-3.3v-qspi-x8- dual_stacked, x2-single, x4-
dual_parallel] dual_stacked, x4-single, x8-dual_parallel
QSPI Spansion s25flxxxs s25fl256s-1.8v 256 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-dual_parallel
QSPI Spansion s25flxxxs s25fl256s-3.3v 256 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-dual_parallel
QSPI Spansion s25flxxxs s25fl512s-1.8v 512 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-dual_parallel
QSPI Spansion s25flxxxs s25fl512s-3.3v 512 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-dual_parallel
QSPI Spansion s70flxxxp s70fl01gs_00 1,024 x4-dual_stacked
QSPI Macronix mx25l mx25l3273f 32 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-dual_parallel
QSPI Macronix mx25l mx25l12833f 128 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-dual_parallel
QSPI Macronix mx25l mx25l12835f [mx25l12833f-qspi-x1-dual_stacked, 128 x1-dual_stacked, x1-single, x2-
mx25l12833f-qspi-x1-single, mx25l12833f-qspi-x2- dual_stacked, x2-single, x4-
dual_stacked, mx25l12833f-qspi-x2-single, mx25l12833f- dual_stacked, x4-single, x8-dual_parallel
qspi-x4-dual_stacked, mx25l12833f-qspi-x4-single,
mx25l12833f-qspi-x8-dual_parallel]
Table 62: Supported Flash Memory Devices for Zynq UltraScale+ MPSoC Device Configuration (cont'd)
Manufactu Density
Interface Manufacturer Device Alias Data Width Bits
rer Family Mbits
QSPI Macronix mx25l mx25l12872f 128 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-dual_parallel
QSPI Macronix mx25l mx25l25635f [mx25l25645g-qspi-x1-dual_stacked, 256 x1-dual_stacked, x1-single, x2-
mx25l25645g-qspi-x1-single, mx25l25645g-qspi-x2- dual_stacked, x2-single, x4-
dual_stacked, mx25l25645g-qspi-x2-single, dual_stacked, x4-single, x8-dual_parallel
mx25l25645g-qspi-x4-dual_stacked, mx25l25645g-qspi-
x4-single, mx25l25645g-qspi-x8-dual_parallel]
QSPI Macronix mx25l mx25l25673g 256 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-dual_parallel
QSPI Macronix mx25l mx25l51245g 512 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-dual_parallel
QSPI Macronix mx25l mx25l51273g 512 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-dual_parallel
QSPI Macronix mx25u mx25u8035f 8 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-dual_parallel
QSPI Macronix mx25u mx25u6472f 64 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-dual_parallel
QSPI Macronix mx25u mx25u12835f [mx25u12832f-qspi-x1-dual_stacked, 128 x1-dual_stacked, x1-single, x2-
mx25u12832f-qspi-x1-single, mx25u12832f-qspi-x2- dual_stacked, x2-single, x4-
dual_stacked, mx25u12832f-qspi-x2-single, dual_stacked, x4-single, x8-dual_parallel
mx25u12832f-qspi-x4-dual_stacked, mx25u12832f-qspi-
x4-single, mx25u12832f-qspi-x8-dual_parallel]
QSPI Macronix mx25u mx25u12843g 128 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-dual_parallel
QSPI Macronix mx25u mx25u12872f 128 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-dual_parallel
Table 62: Supported Flash Memory Devices for Zynq UltraScale+ MPSoC Device Configuration (cont'd)
Manufactu Density
Interface Manufacturer Device Alias Data Width Bits
rer Family Mbits
QSPI Macronix mx25u mx25u25635f [mx25u25645g-qspi-x1-dual_stacked, 256 x1-dual_stacked, x1-single, x2-
mx25u25645g-qspi-x1-single, mx25u25645g-qspi-x2- dual_stacked, x2-single, x4-
dual_stacked, mx25u25645g-qspi-x2-single, dual_stacked, x4-single, x8-dual_parallel
mx25u25645g-qspi-x4-dual_stacked, mx25u25645g-qspi-
x4-single, mx25u25645g-qspi-x8-dual_parallel]
QSPI Macronix mx25u mx25u25643g 256 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-dual_parallel
QSPI Macronix mx25u mx25u25673g 256 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-dual_parallel
QSPI Macronix mx25u mx25u51245g 512 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-dual_parallel
QSPI Macronix mx66l mx66l1g45g 1,024 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-dual_parallel
QSPI Macronix mx66l mx66l2g45g 2,048 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-dual_parallel
QSPI Macronix mx66u mx66u51235f 512 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-dual_parallel
QSPI Macronix mx66u mx66u1g45g 1,024 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-dual_parallel
QSPI Macronix mx66u mx66u2g45g 2,048 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-
dual_stacked, x4-single, x8-dual_parallel
The tables in this Appendix are running lists per Xilinx® family of non-volatile memories which Vivado software is capable of erasing,
blank checking, programming, and verifying. Xilinx strives to retain components on this list even after they are no longer appropriate
for new designs, to support long-term maintenance of end products which may contain them.
IMPORTANT! Given the evolving nature of the commodity non-volatile memory market, Xilinx recommends contacting your non-volatile memory
supplier to confirm device availability and life cycle. References to specific devices in the tables are not an assurance of their current or future
availability.
Table 63: Supported Flash Memory Devices for Zynq UltraScale+ RFSoC Device Config
Manufacturer Density
Interface Manufacturer Device Alias Data Width Bits
Family Mbits
EMMC jedec4.51-4gb 32,768
EMMC jedec4.51-8gb 65,536
EMMC jedec4.51-16gb 131,072
EMMC jedec4.51-32gb 262,144
EMMC jedec4.51 524,288
EMMC jedec4.51-64gb 524,288
EMMC Micron mtfc mtfc8gakajcn-4m 65,536
NAND nand 0 NA, x8-dual, x8-single
NAND Micron mt29f mt29f2g08ab 2,048 x8-dual, x8-single
NAND Micron mt29f mt29f8g08ab 8,192 x8-dual, x8-single
NAND Micron mt29f mt29f16g08ab 16,384 x8-dual, x8-single
NAND Micron mt29f mt29f32g08ae 32,768 x8-dual, x8-single
NAND Micron mt29f mt29f64g08ae 65,536 x8-dual, x8-single
Table 63: Supported Flash Memory Devices for Zynq UltraScale+ RFSoC Device Config (cont'd)
Manufacturer Density
Interface Manufacturer Device Alias Data Width Bits
Family Mbits
NAND Spansion s34ml s34ml01g1 1,024 x8-dual, x8-single
NAND Spansion s34ml s34ml02g1 2,048 x8-dual, x8-single
QSPI qspi 0 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-dual_stacked,
x4-single, x8-dual_parallel
QSPI ISSI is25l is25lp01g 1,024 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-dual_stacked,
x4-single, x8-dual_parallel
QSPI ISSI is25lp is25lp080d 8 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-dual_stacked,
x4-single, x8-dual_parallel
QSPI ISSI is25lp is25lp016d 16 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-dual_stacked,
x4-single, x8-dual_parallel
QSPI ISSI is25lp is25lp032d 32 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-dual_stacked,
x4-single, x8-dual_parallel
QSPI ISSI is25lp is25lp128f 128 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-dual_stacked,
x4-single, x8-dual_parallel
QSPI ISSI is25lp is25lp256d 256 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-dual_stacked,
x4-single, x8-dual_parallel
QSPI ISSI is25lp is25lp512m 512 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-dual_stacked,
x4-single, x8-dual_parallel
QSPI ISSI is25w is25wp01g 1,024 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-dual_stacked,
x4-single, x8-dual_parallel
QSPI ISSI is25wp is25wp080d 8 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-dual_stacked,
x4-single, x8-dual_parallel
QSPI ISSI is25wp is25wp016d 16 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-dual_stacked,
x4-single, x8-dual_parallel
Table 63: Supported Flash Memory Devices for Zynq UltraScale+ RFSoC Device Config (cont'd)
Manufacturer Density
Interface Manufacturer Device Alias Data Width Bits
Family Mbits
QSPI ISSI is25wp is25wp032d 32 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-dual_stacked,
x4-single, x8-dual_parallel
QSPI ISSI is25wp is25wp064a 64 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-dual_stacked,
x4-single, x8-dual_parallel
QSPI ISSI is25wp is25wp128f 128 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-dual_stacked,
x4-single, x8-dual_parallel
QSPI ISSI is25wp is25wp256d 256 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-dual_stacked,
x4-single, x8-dual_parallel
QSPI ISSI is25wp is25wp512m 512 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-dual_stacked,
x4-single, x8-dual_parallel
QSPI Winbond w25h w25h02jv 2,048 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-dual_stacked,
x4-single, x8-dual_parallel
QSPI Micron mt25ql mt25ql128 [n25q128-3.3v-qspi-x1-dual_stacked, 128 x1-dual_stacked, x1-single, x2-
n25q128-3.3v-qspi-x1-single, n25q128-3.3v-qspi- dual_stacked, x2-single, x4-dual_stacked,
x2-dual_stacked, n25q128-3.3v-qspi-x2-single, x4-single, x8-dual_parallel
n25q128-3.3v-qspi-x4-dual_stacked, n25q128-3.3v-
qspi-x4-single, n25q128-3.3v-qspi-x8-dual_parallel]
QSPI Micron mt25ql mt25ql256 [n25q256-3.3v-qspi-x1-dual_stacked, 256 x1-dual_stacked, x1-single, x2-
n25q256-3.3v-qspi-x1-single, n25q256-3.3v-qspi- dual_stacked, x2-single, x4-dual_stacked,
x2-dual_stacked, n25q256-3.3v-qspi-x2-single, x4-single, x8-dual_parallel
n25q256-3.3v-qspi-x4-dual_stacked, n25q256-3.3v-
qspi-x4-single, n25q256-3.3v-qspi-x8-dual_parallel]
QSPI Micron mt25ql mt25ql512 [n25q512-3.3v-qspi-x1-dual_stacked, 512 x1-dual_stacked, x1-single, x2-
n25q512-3.3v-qspi-x1-single, n25q512-3.3v-qspi- dual_stacked, x2-single, x4-dual_stacked,
x2-dual_stacked, n25q512-3.3v-qspi-x2-single, x4-single, x8-dual_parallel
n25q512-3.3v-qspi-x4-dual_stacked, n25q512-3.3v-
qspi-x4-single, n25q512-3.3v-qspi-x8-dual_parallel]
Table 63: Supported Flash Memory Devices for Zynq UltraScale+ RFSoC Device Config (cont'd)
Manufacturer Density
Interface Manufacturer Device Alias Data Width Bits
Family Mbits
QSPI Micron mt25ql mt25ql01g [n25q00a-3.3v-qspi-x1-dual_stacked, 1,024 x1-dual_stacked, x1-single, x2-
n25q00a-3.3v-qspi-x1-single, n25q00a-3.3v-qspi- dual_stacked, x2-single, x4-dual_stacked,
x2-dual_stacked, n25q00a-3.3v-qspi-x2-single, x4-single, x8-dual_parallel
n25q00a-3.3v-qspi-x4-dual_stacked, n25q00a-3.3v-
qspi-x4-single, n25q00a-3.3v-qspi-x8-dual_parallel]
QSPI Micron mt25ql mt25ql02g 2,048 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-dual_stacked,
x4-single, x8-dual_parallel
QSPI Micron mt25qu mt25qu128 [n25q128-1.8v-qspi-x1-dual_stacked, 128 x1-dual_stacked, x1-single, x2-
n25q128-1.8v-qspi-x1-single, n25q128-1.8v-qspi- dual_stacked, x2-single, x4-dual_stacked,
x2-dual_stacked, n25q128-1.8v-qspi-x2-single, x4-single, x8-dual_parallel
n25q128-1.8v-qspi-x4-dual_stacked, n25q128-1.8v-
qspi-x4-single, n25q128-1.8v-qspi-x8-dual_parallel]
QSPI Micron mt25qu mt25qu256 [n25q256-1.8v-qspi-x1-dual_stacked, 256 x1-dual_stacked, x1-single, x2-
n25q256-1.8v-qspi-x1-single, n25q256-1.8v-qspi- dual_stacked, x2-single, x4-dual_stacked,
x2-dual_stacked, n25q256-1.8v-qspi-x2-single, x4-single, x8-dual_parallel
n25q256-1.8v-qspi-x4-dual_stacked, n25q256-1.8v-
qspi-x4-single, n25q256-1.8v-qspi-x8-dual_parallel]
QSPI Micron mt25qu mt25qu512 [n25q512-1.8v-qspi-x1-dual_stacked, 512 x1-dual_stacked, x1-single, x2-
n25q512-1.8v-qspi-x1-single, n25q512-1.8v-qspi- dual_stacked, x2-single, x4-dual_stacked,
x2-dual_stacked, n25q512-1.8v-qspi-x2-single, x4-single, x8-dual_parallel
n25q512-1.8v-qspi-x4-dual_stacked, n25q512-1.8v-
qspi-x4-single, n25q512-1.8v-qspi-x8-dual_parallel]
QSPI Micron mt25qu mt25qu01g [n25q00a-1.8v-qspi-x1-dual_stacked, 1,024 x1-dual_stacked, x1-single, x2-
n25q00a-1.8v-qspi-x1-single, n25q00a-1.8v-qspi- dual_stacked, x2-single, x4-dual_stacked,
x2-dual_stacked, n25q00a-1.8v-qspi-x2-single, x4-single, x8-dual_parallel
n25q00a-1.8v-qspi-x4-dual_stacked, n25q00a-1.8v-
qspi-x4-single, n25q00a-1.8v-qspi-x8-dual_parallel]
QSPI Micron mt25qu mt25qu02g 2,048 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-dual_stacked,
x4-single, x8-dual_parallel
QSPI Micron n25q n25q64-1.8v 64 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-dual_stacked,
x4-single, x8-dual_parallel
QSPI Micron n25q n25q64-3.3v 64 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-dual_stacked,
x4-single, x8-dual_parallel
Table 63: Supported Flash Memory Devices for Zynq UltraScale+ RFSoC Device Config (cont'd)
Manufacturer Density
Interface Manufacturer Device Alias Data Width Bits
Family Mbits
QSPI Spansion s25flxxxl s25fl256l 256 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-dual_stacked,
x4-single, x8-dual_parallel
QSPI Spansion s25flxxxp s25fl129p 128 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-dual_stacked,
x4-single, x8-dual_parallel
QSPI Spansion s25flxxxs s25fl128s-1.8v [s25fl127s-1.8v-qspi-x4- 128 x1-dual_stacked, x1-single, x2-
dual_stacked, s25fl127s-1.8v-qspi-x4-single, dual_stacked, x2-single, x4-dual_stacked,
s25fl127s-1.8v-qspi-x8-dual_parallel] x4-single, x8-dual_parallel
QSPI Spansion s25flxxxs s25fl128s-3.3v [s25fl127s-3.3v-qspi-x4- 128 x1-dual_stacked, x1-single, x2-
dual_stacked, s25fl127s-3.3v-qspi-x4-single, dual_stacked, x2-single, x4-dual_stacked,
s25fl127s-3.3v-qspi-x8-dual_parallel] x4-single, x8-dual_parallel
QSPI Spansion s25flxxxs s25fl256s-1.8v 256 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-dual_stacked,
x4-single, x8-dual_parallel
QSPI Spansion s25flxxxs s25fl256s-3.3v 256 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-dual_stacked,
x4-single, x8-dual_parallel
QSPI Spansion s25flxxxs s25fl512s-1.8v 512 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-dual_stacked,
x4-single, x8-dual_parallel
QSPI Spansion s25flxxxs s25fl512s-3.3v 512 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-dual_stacked,
x4-single, x8-dual_parallel
QSPI Spansion s70flxxxp s70fl01gs_00 1,024 x4-dual_stacked
QSPI Macronix mx25l mx25l3273f 32 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-dual_stacked,
x4-single, x8-dual_parallel
QSPI Macronix mx25l mx25l12833f 128 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-dual_stacked,
x4-single, x8-dual_parallel
QSPI Macronix mx25l mx25l12835f [mx25l12833f-qspi-x1-dual_stacked, 128 x1-dual_stacked, x1-single, x2-
mx25l12833f-qspi-x1-single, mx25l12833f-qspi-x2- dual_stacked, x2-single, x4-dual_stacked,
dual_stacked, mx25l12833f-qspi-x2-single, x4-single, x8-dual_parallel
mx25l12833f-qspi-x4-dual_stacked, mx25l12833f-
qspi-x4-single, mx25l12833f-qspi-x8-dual_parallel]
Table 63: Supported Flash Memory Devices for Zynq UltraScale+ RFSoC Device Config (cont'd)
Manufacturer Density
Interface Manufacturer Device Alias Data Width Bits
Family Mbits
QSPI Macronix mx25l mx25l12872f 128 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-dual_stacked,
x4-single, x8-dual_parallel
QSPI Macronix mx25l mx25l25635f [mx25l25645g-qspi-x1-dual_stacked, 256 x1-dual_stacked, x1-single, x2-
mx25l25645g-qspi-x1-single, mx25l25645g-qspi- dual_stacked, x2-single, x4-dual_stacked,
x2-dual_stacked, mx25l25645g-qspi-x2-single, x4-single, x8-dual_parallel
mx25l25645g-qspi-x4-dual_stacked, mx25l25645g-
qspi-x4-single, mx25l25645g-qspi-x8-dual_parallel]
QSPI Macronix mx25l mx25l25673g 256 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-dual_stacked,
x4-single, x8-dual_parallel
QSPI Macronix mx25l mx25l51245g 512 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-dual_stacked,
x4-single, x8-dual_parallel
QSPI Macronix mx25l mx25l51273g 512 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-dual_stacked,
x4-single, x8-dual_parallel
QSPI Macronix mx25u mx25u8035f 8 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-dual_stacked,
x4-single, x8-dual_parallel
QSPI Macronix mx25u mx25u6472f 64 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-dual_stacked,
x4-single, x8-dual_parallel
QSPI Macronix mx25u mx25u12835f [mx25u12832f-qspi-x1-dual_stacked, 128 x1-dual_stacked, x1-single, x2-
mx25u12832f-qspi-x1-single, mx25u12832f-qspi- dual_stacked, x2-single, x4-dual_stacked,
x2-dual_stacked, mx25u12832f-qspi-x2-single, x4-single, x8-dual_parallel
mx25u12832f-qspi-x4-dual_stacked, mx25u12832f-
qspi-x4-single, mx25u12832f-qspi-x8-dual_parallel]
QSPI Macronix mx25u mx25u12843g 128 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-dual_stacked,
x4-single, x8-dual_parallel
QSPI Macronix mx25u mx25u12872f 128 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-dual_stacked,
x4-single, x8-dual_parallel
Table 63: Supported Flash Memory Devices for Zynq UltraScale+ RFSoC Device Config (cont'd)
Manufacturer Density
Interface Manufacturer Device Alias Data Width Bits
Family Mbits
QSPI Macronix mx25u mx25u25635f [mx25u25645g-qspi-x1- 256 x1-dual_stacked, x1-single, x2-
dual_stacked, mx25u25645g-qspi-x1-single, dual_stacked, x2-single, x4-dual_stacked,
mx25u25645g-qspi-x2-dual_stacked, x4-single, x8-dual_parallel
mx25u25645g-qspi-x2-single, mx25u25645g-qspi-
x4-dual_stacked, mx25u25645g-qspi-x4-single,
mx25u25645g-qspi-x8-dual_parallel]
QSPI Macronix mx25u mx25u25643g 256 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-dual_stacked,
x4-single, x8-dual_parallel
QSPI Macronix mx25u mx25u25673g 256 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-dual_stacked,
x4-single, x8-dual_parallel
QSPI Macronix mx25u mx25u51245g 512 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-dual_stacked,
x4-single, x8-dual_parallel
QSPI Macronix mx66l mx66l1g45g 1,024 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-dual_stacked,
x4-single, x8-dual_parallel
QSPI Macronix mx66l mx66l2g45g 2,048 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-dual_stacked,
x4-single, x8-dual_parallel
QSPI Macronix mx66u mx66u51235f 512 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-dual_stacked,
x4-single, x8-dual_parallel
QSPI Macronix mx66u mx66u1g45g 1,024 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-dual_stacked,
x4-single, x8-dual_parallel
QSPI Macronix mx66u mx66u2g45g 2,048 x1-dual_stacked, x1-single, x2-
dual_stacked, x2-single, x4-dual_stacked,
x4-single, x8-dual_parallel
Note: When selecting QSPI or OSPI density, select the maximum, because the maximum density also supports lower density devices. For example,
selecting 2 Gb density also supports lower density devices such as 1 Gb or 512 Mb. This is unlike previous architectures.
Table 64: Supported Flash Memory Devices for Versal Device Configuration
Vivado
Interface Manufacturer Manufacturer Family Device Name Density (Mb) Data Width (Bits)
Selection
EMMC jedec4.51-4gb jedec4.51-4gb 32,768
EMMC jedec4.51-8gb jedec4.51-8gb 65,536
EMMC jedec4.51-16gb jedec4.51-16gb 131,072
EMMC jedec4.51-32gb jedec4.51-32gb 262,144
EMMC jedec4.51 jedec4.51 524,288
EMMC jedec4.51-64gb jedec4.51-64gb 524,288
QSPI ISSI is25lp is25lp080d cfgmem-qspi- 8 x1-dual_stacked, x1-single,
<data_width_bit x2-dual_stacked, x2-single,
s> x4-dual_stacked, x4-single,
x8-dual_parallel
QSPI ISSI is25lp is25lp016d cfgmem-qspi- 16 x1-dual_stacked, x1-single,
<data_width_bit x2-dual_stacked, x2-single,
s> x4-dual_stacked, x4-single,
x8-dual_parallel
QSPI ISSI is25lp is25lp032d cfgmem-qspi- 32 x1-dual_stacked, x1-single,
<data_width_bit x2-dual_stacked, x2-single,
s> x4-dual_stacked, x4-single,
x8-dual_parallel
QSPI ISSI is251p is25lp064a cfgmem-qspi- 64 x1-dual_stacked, x1-single,
<data_width_bit x2-dual_stacked, x2-single,
s> x4-dual_stacked, x4-single,
x8-dual_parallel
Table 64: Supported Flash Memory Devices for Versal Device Configuration (cont'd)
Vivado
Interface Manufacturer Manufacturer Family Device Name Density (Mb) Data Width (Bits)
Selection
QSPI ISSI is25lp is25lp128f cfgmem-qspi- 128 x1-dual_stacked, x1-single,
<data_width_bit x2-dual_stacked, x2-single,
s> x4-dual_stacked, x4-single,
x8-dual_parallel
QSPI ISSI is25lp is25lp256d cfgmem-qspi- 256 x1-dual_stacked, x1-single,
<data_width_bit x2-dual_stacked, x2-single,
s> x4-dual_stacked, x4-single,
x8-dual_parallel
QSPI ISSI is25lp is25lp512m cfgmem-qspi- 512 x1-dual_stacked, x1-single,
<data_width_bit x2-dual_stacked, x2-single,
s> x4-dual_stacked, x4-single,
x8-dual_parallel
QSPI ISSI is25lp is25lp01g cfgmem-qspi- 1024 x1-dual_stacked, x1-single,
<data_width_bit x2-dual_stacked, x2-single,
s> x4-dual_stacked, x4-single,
x8-dual_parallel
QSPI ISSI is25wp is25wp080d cfgmem-qspi- 8 x1-dual_stacked, x1-single,
<data_width_bit x2-dual_stacked, x2-single,
s> x4-dual_stacked, x4-single,
x8-dual_parallel
QSPI ISSI is25wp is25wp016d cfgmem-qspi- 16 x1-dual_stacked, x1-single,
<data_width_bit x2-dual_stacked, x2-single,
s> x4-dual_stacked, x4-single,
x8-dual_parallel
QSPI ISSI is25wp is25wp032d cfgmem-qspi- 32 x1-dual_stacked, x1-single,
<data_width_bit x2-dual_stacked, x2-single,
s> x4-dual_stacked, x4-single,
x8-dual_parallel
QSPI ISSI is25wp is25wp064a cfgmem-qspi- 64 x1-dual_stacked, x1-single,
<data_width_bit x2-dual_stacked, x2-single,
s> x4-dual_stacked, x4-single,
x8-dual_parallel
QSPI ISSI is25wp is25wp128f cfgmem-qspi- 128 x1-dual_stacked, x1-single,
<data_width_bit x2-dual_stacked, x2-single,
s> x4-dual_stacked, x4-single,
x8-dual_parallel
Table 64: Supported Flash Memory Devices for Versal Device Configuration (cont'd)
Vivado
Interface Manufacturer Manufacturer Family Device Name Density (Mb) Data Width (Bits)
Selection
QSPI ISSI is25wp is25wp256d cfgmem-qspi- 256 x1-dual_stacked, x1-single,
<data_width_bit x2-dual_stacked, x2-single,
s> x4-dual_stacked, x4-single,
x8-dual_parallel
QSPI ISSI is25wp is25wp512m cfgmem-qspi- 512 x1-dual_stacked, x1-single,
<data_width_bit x2-dual_stacked, x2-single,
s> x4-dual_stacked, x4-single,
x8-dual_parallel
QSPI Micron mt25ql mt25ql128 cfgmem-qspi- 128 x1-dual_stacked, x1-single,
<data_width_bit x2-dual_stacked, x2-single,
s> x4-dual_stacked, x4-single,
x8-dual_parallel
QSPI Micron mt25ql mt25ql256 cfgmem-qspi- 256 x1-dual_stacked, x1-single,
<data_width_bit x2-dual_stacked, x2-single,
s> x4-dual_stacked, x4-single,
x8-dual_parallel
QSPI Micron mt25ql mt25ql512 cfgmem-qspi- 512 x1-dual_stacked, x1-single,
<data_width_bit x2-dual_stacked, x2-single,
s> x4-dual_stacked, x4-single,
x8-dual_parallel
QSPI Micron mt25ql mt25ql01g cfgmem-qspi- 1,024 x1-dual_stacked, x1-single,
<data_width_bit x2-dual_stacked, x2-single,
s> x4-dual_stacked, x4-single,
x8-dual_parallel
QSPI Micron mt25ql mt25ql02g cfgmem-qspi- 2,048 x1-dual_stacked, x1-single,
<data_width_bit x2-dual_stacked, x2-single,
s> x4-dual_stacked, x4-single,
x8-dual_parallel
QSPI Micron mt25qu mt25qu128 cfgmem-qspi- 128 x1-dual_stacked, x1-single,
<data_width_bit x2-dual_stacked, x2-single,
s> x4-dual_stacked, x4-single,
x8-dual_parallel
QSPI Micron mt25qu mt25qu256 cfgmem-qspi- 256 x1-dual_stacked, x1-single,
<data_width_bit x2-dual_stacked, x2-single,
s> x4-dual_stacked, x4-single,
x8-dual_parallel
Table 64: Supported Flash Memory Devices for Versal Device Configuration (cont'd)
Vivado
Interface Manufacturer Manufacturer Family Device Name Density (Mb) Data Width (Bits)
Selection
QSPI Micron mt25qu mt25qu512 cfgmem-qspi- 512 x1-dual_stacked, x1-single,
<data_width_bit x2-dual_stacked, x2-single,
s> x4-dual_stacked, x4-single,
x8-dual_parallel
QSPI Micron mt25qu mt25qu01g cfgmem-qspi- 1,024 x1-dual_stacked, x1-single,
<data_width_bit x2-dual_stacked, x2-single,
s> x4-dual_stacked, x4-single,
x8-dual_parallel
QSPI Micron mt25qu mt25qu02g cfgmem-qspi- 2,048 x1-dual_stacked, x1-single,
<data_width_bit x2-dual_stacked, x2-single,
s> x4-dual_stacked, x4-single,
x8-dual_parallel
QSPI Infineon s25flxxxl s25fl256l cfgmem-qspi- 256 x1-dual_stacked, x1-single,
<data_width_bit x2-dual_stacked, x2-single,
s> x4-dual_stacked, x4-single,
x8-dual_parallel
QSPI Infineon s25flxxxp s25fl129p cfgmem-qspi- 128 x1-dual_stacked, x1-single,
<data_width_bit x2-dual_stacked, x2-single,
s> x4-dual_stacked, x4-single,
x8-dual_parallel
QSPI Infineon s25flxxxs s25fl128s-1.8v cfgmem-qspi- 128 x1-dual_stacked, x1-single,
[s25fl127s-1.8v- <data_width_bit x2-dual_stacked, x2-single,
qspi-x4- s> x4-dual_stacked, x4-single,
dual_stacked, x8-dual_parallel
s25fl127s-1.8v-
qspi-x4-single,
s25fl127s-1.8v-
qspi-x8-
dual_parallel]
QSPI Infineon s25flxxxs s25fl128s-3.3v cfgmem-qspi- 128 x1-dual_stacked, x1-single,
[s25fl127s-3.3v- <data_width_bit x2-dual_stacked, x2-single,
qspi-x4- s> x4-dual_stacked, x4-single,
dual_stacked, x8-dual_parallel
s25fl127s-3.3v-
qspi-x4-single,
s25fl127s-3.3v-
qspi-x8-
dual_parallel]
Table 64: Supported Flash Memory Devices for Versal Device Configuration (cont'd)
Vivado
Interface Manufacturer Manufacturer Family Device Name Density (Mb) Data Width (Bits)
Selection
QSPI Infineon s25flxxxs s25fl256s-1.8v cfgmem-qspi- 256 x1-dual_stacked, x1-single,
<data_width_bit x2-dual_stacked, x2-single,
s> x4-dual_stacked, x4-single,
x8-dual_parallel
QSPI Infineon s25flxxxs s25fl256s-3.3v cfgmem-qspi- 256 x1-dual_stacked, x1-single,
<data_width_bit x2-dual_stacked, x2-single,
s> x4-dual_stacked, x4-single,
x8-dual_parallel
QSPI Infineon s25flxxxs s25fl512s-1.8v cfgmem-qspi- 512 x1-dual_stacked, x1-single,
<data_width_bit x2-dual_stacked, x2-single,
s> x4-dual_stacked, x4-single,
x8-dual_parallel
QSPI Infineon s25flxxxs s25fl512s-3.3v cfgmem-qspi- 512 x1-dual_stacked, x1-single,
<data_width_bit x2-dual_stacked, x2-single,
s> x4-dual_stacked, x4-single,
x8-dual_parallel
QSPI Infineon s70flxxxp s70fl01gs_00 cfgmem-qspi- 1,024 x4-dual_stacked
<data_width_bit
s>
QSPI Macronix mx25l mx25l12835f cfgmem-qspi- 128 x1-dual_stacked, x1-single,
[mx25l12833f- <data_width_bit x2-dual_stacked, x2-single,
qspi-x1- s> x4-dual_stacked, x4-single,
dual_stacked, x8-dual_parallel
mx25l12833f-
qspi-x1-single,
mx25l12833f-
qspi-x2-
dual_stacked,
mx25l12833f-
qspi-x2-single,
mx25l12833f-
qspi-x4-
dual_stacked,
mx25l12833f-
qspi-x4-single,
mx25l12833f-
qspi-x8-
dual_parallel]
Table 64: Supported Flash Memory Devices for Versal Device Configuration (cont'd)
Vivado
Interface Manufacturer Manufacturer Family Device Name Density (Mb) Data Width (Bits)
Selection
QSPI Macronix mx25l mx25l25635f cfgmem-qspi- 256 x1-dual_stacked, x1-single,
[mx25l25645g- <data_width_bit x2-dual_stacked, x2-single,
qspi-x1- s> x4-dual_stacked, x4-single,
dual_stacked, x8-dual_parallel
mx25l25645g-
qspi-x1-single,
mx25l25645g-
qspi-x2-
dual_stacked,
mx25l25645g-
qspi-x2-single,
mx25l25645g-
qspi-x4-
dual_stacked,
mx25l25645g-
qspi-x4-single,
mx25l25645g-
qspi-x8-
dual_parallel]
QSPI Macronix mx25l mx25l51245g cfgmem-qspi- 512 x1-dual_stacked, x1-single,
<data_width_bit x2-dual_stacked, x2-single,
s> x4-dual_stacked, x4-single,
x8-dual_parallel
QSPI Macronix mx25u mx25u12835f cfgmem-qspi- 128 x1-dual_stacked, x1-single,
[mx25u12832f- <data_width_bit x2-dual_stacked, x2-single,
qspi-x1- s> x4-dual_stacked, x4-single,
dual_stacked, x8-dual_parallel
mx25u12832f-
qspi-x1-single,
mx25u12832f-
qspi-x2-
dual_stacked,
mx25u12832f-
qspi-x2-single,
mx25u12832f-
qspi-x4-
dual_stacked,
mx25u12832f-
qspi-x4-single,
mx25u12832f-
qspi-x8-
dual_parallel]
Table 64: Supported Flash Memory Devices for Versal Device Configuration (cont'd)
Vivado
Interface Manufacturer Manufacturer Family Device Name Density (Mb) Data Width (Bits)
Selection
QSPI Macronix mx25u mx25u25635f cfgmem-qspi- 256 x1-dual_stacked, x1-single,
[mx25u25645g- <data_width_bit x2-dual_stacked, x2-single,
qspi-x1- s> x4-dual_stacked, x4-single,
dual_stacked, x8-dual_parallel
mx25u25645g-
qspi-x1-single,
mx25u25645g-
qspi-x2-
dual_stacked,
mx25u25645g-
qspi-x2-single,
mx25u25645g-
qspi-x4-
dual_stacked,
mx25u25645g-
qspi-x4-single,
mx25u25645g-
qspi-x8-
dual_parallel]
QSPI Macronix mx25u mx25u51245g cfgmem-qspi- 512 x1-dual_stacked, x1-single,
<data_width_bit x2-dual_stacked, x2-single,
s> x4-dual_stacked, x4-single,
x8-dual_parallel
QSPI Macronix mx66l mx66l1g45g cfgmem-qspi- 1,024 x1-dual_stacked, x1-single,
<data_width_bit x2-dual_stacked, x2-single,
s> x4-dual_stacked, x4-single,
x8-dual_parallel
QSPI Macronix mx66l mx66l2g45g cfgmem-qspi- 2,048 x1-dual_stacked, x1-single,
<data_width_bit x2-dual_stacked, x2-single,
s> x4-dual_stacked, x4-single,
x8-dual_parallel
QSPI Macronix mx66u mx66u51235f cfgmem-qspi- 512 x1-dual_stacked, x1-single,
<data_width_bit x2-dual_stacked, x2-single,
s> x4-dual_stacked, x4-single,
x8-dual_parallel
QSPI Macronix mx66u mx66u1g45g cfgmem-qspi- 1,024 x1-dual_stacked, x1-single,
<data_width_bit x2-dual_stacked, x2-single,
s> x4-dual_stacked, x4-single,
x8-dual_parallel
Table 64: Supported Flash Memory Devices for Versal Device Configuration (cont'd)
Vivado
Interface Manufacturer Manufacturer Family Device Name Density (Mb) Data Width (Bits)
Selection
QSPI Macronix mx66u mx66u2g45g cfgmem-qspi- 2,048 x1-dual_stacked, x1-single,
<data_width_bit x2-dual_stacked, x2-single,
s> x4-dual_stacked, x4-single,
x8-dual_parallel
OSPI Micron mt35 mt35xu02gcba1 cfgmem-ospi- 2,048 x8-dual_stacked, x8-single
g12-osit <data_width_bit
s>
Appendix G
IMPORTANT! When remotely connecting to a hw_server running on a PC, ensure that the firewall policy
is properly configured. Make sure that hw_server.exe has permission to listen for new socket
connections on port 3121.
Advanced Options
Table 66: Advanced Option
Option Purpose
detect-ir-length Disable detecting the IR detect length during scan chain discovery.
This option is used to start up the hw_server with additional devices added to its device
table. By default the hw_serverstarts with a preset list of devices that are compiled in
from the XICOM SQL jtag master table. These settings can be overridden or extended using
the this set device-info-file option. The file that is specified is a .csv file that
ignores lines that start with a "#".
This is how you specify a .csv file at hw_server start-up:
############################################################
# File: hw_server_device_info_file.csv
# Description:
# This is a sample jtag ID table. This file can be used to define
# additional devices to be detected by the hw_server application.
#
# In this file empty lines, lines with spaces, and lines that begin
# with the '#' character will be ignored.
#
# The format of this file is as follows:
#
# ROW 1: fields
# The standard JTAG id fields are "idcode,mask,irlen,name"
# ROW 2: field types
# For each field specified in ROW 1, the type is used to
# interpret the field data read per device. The types
# accepted are "i" for integer and "s" for string. If
# you use the standard fields on ROW 1 then you should
# use "i,i,i,s" in ROW 2 to set the fields idcode,mask
# irlength to integer and name as string
#
# To use this table you start hw_server with the following
# command line arguments:
#
# hw_server -e "set device-info-file <file>"
#
# Where <file> is replaced with this filename.
############################################################
idcode,mask,irlen,name
i,i,i,s
167784595,268435455,10,chipscope_soft_tap
Option Purpose
xdb-user-bscan Sets which bscan will be used to scan for xsdb cores.
This option is used to start the hw_server scanning a for xsdb master cores on alternate
bscans. By default, hw_server will scan user 1 and 3 bscans. With this option you can
launch hw_serverand have it look for bscans on different bscan user slots.
This is how to specify the option at hw_server start-up:
The arguments to this parameter specify the list of parameters. The list will be a comma
separated list ranging from 1-4. The minimum number specified is 1 element in the list and
the maximum is 4.
mdm-detect-bscan-mask Sets which bscan will be used to scan for mdm cores.
This option is used to start the hw_server scanning a for MicroBlaze master cores on
alternate bscans. By default hw_server will scan user 2 bscan. With this option the user can
launch hw_server and have it look for MicroBlaze on different bscan user slots.
This is how to specify the option at hw_server start-up:
The bitmask is for any FPGA or ACAP discovered by hw_server. Here are some examples of
common bitmask settings:
Mask Value BSCAN Scanned
0 none
1 User1
3 User1, User2
7 User1, User2, User3
f User1, User2, User3, User4
always-open-jtag Forces hw_server to open up all targets at start up.
When hw_server starts by default no cables are initialized. When the first connection is
initiated the cables will be discovered and opened. This discovery period takes a couple of
seconds to several minutes depending on the system. Once fully initialized the cables are
read and devices discovered.
In some cases, it is necessary to have the cables discovered and ready to be used. For
instance when setting up a linux system as a board server, it may be desirable to have the
cables always initialized and ready to serve connections. For these cases you can use the
always-open-jtag option to force the cables to open.
By default this is the setting at start up (no argument needs to be passed in):
Option Purpose
auto-open-servers Opens a cable server with specific parameters., used for XVC cable opening.
This option is a debug option used to automatically open an XVC cable connection, and to
control which types of USB cables hw_server should detect. The argument to the auto-
open-servers parameter is a comma separated list of fields. Each field is a colon separated
list of sub-fields where the first sub-field is the type and the remaining sub-fields are type
specific. For the xilinx-xvc type the sub-fields are host and port. The default value for
auto-open-servers is "*" which indicates that hw_server should detect all types of
cables that it can. Cables types that require parameters, like XVC, are not covered by "*".
This is how to specify the option at hw_server start-up:
To open up two XVC servers in addition to the all USB based cables you would use:
xvc-timeout Changes the XVC timeout value to help debug XVC servers.
This option is a debug option used to increase the timeout period needed for an XVC
transaction to terminate. The argument to the xvc-timeout parameter is a time in
seconds. A value of 0 will disable timeout and thus wait indefinitely.
This is how you specify the option at hw_server start-up:
Option Purpose
xvc-servers Start XVC servers for cables.
This option is used make hw_server start XVC servers for specified JTAG cables. The
argument to the xvc-servers parameter is a comma (,) separated list of XVC server
descriptions. Each XVC server description is a colon (:) separated list containing the cable
identification, XVC server host name or number and port number. The cable identification is
the manufacturer name and a unique identifier separated by slash (/) characters. The cable
identification may be a subset of the full cable identification and the host name may be
empty. If it is empty, it indicates that the server should listen for incoming connections on
all network interfaces.
See processor-debug-claim for how to avoid interference when both XVC client and XVC
server are debuggers of the same device types and XVC locking mode is used.
This is how to specify the option at hw_server start-up:
Note that you will still have to connect to this hw_server instance first to initialize the cable
interface. If you do not connect to the cable you will see a message like the following:
To have the XVC cable automatically opened and locked to XVC add the always-open-jtag
option as shown below:
Option Purpose
processor-debug-claim Automatically claim select device types to prevent debugger from using them.
This option is used to prevent hw_server debugger from using selected device types for
debugging. The argument gives to this option is a bit mask. By default, hw_server uses all
known device types for debugging. Bit number meaning
Bit Device Type
0 Arm DAP
1 MPSoC
2 FPGA or ACAP
This option is useful for example when starting XVC server using xvc-servers with an XVC
client that is a debugger of one or more of the above devices, or when hw_server connects
to an XVC server that is a debugger of one or more of the above devices. In both cases this
is only relevant when using the locking capability since that allows time sharing between
the debuggers.
This is how to specify the option at hw_server start-up:
hw_server -e help
hw_server -e show-all
Option Purpose
jtag-port-filter Set JTAG port filter.
This option is used to control JTAG port filtering. When it is set, hw_server ignores JTAG
ports that do not match the filter. The argument to this parameter is a comma separated
list of complete or partial port identifiers. A port identifier is a string of the form
<manufacturer>/<productid>/<serial><port>. The filter matches when any of the
port filter's strings can be found anywhere in the port identifier string.
This parameter is useful when running multiple instances of hw_server on the same host
to specify which cable should be handled by which hw_server.
This is how to specify the option at hw_server start-up:
Another example filtering any Xilinx DLC9 or DLC10 cable while having the hw_server start
on port 3122:
max-ir-length Enables devices in JTAG chain whose ir length is greater than 64 bits.
This option is used to start up the hw_server with the ability to enable ir lengths greater
than 64 bits. The default value for this setting is 64. A user can increase this value for
devices in the JTAG chains whose ir length is wide (for example, 93). Note that increasing
this number will slow down the device discovery process which in turn can slow down cable
access. Therefore, only for systems with long ir lengths device counts should a user
increase this value.
This is how to specify the option at hw_server start-up:
Appendix H
Xilinx Resources
For support resources such as Answers, Documentation, Downloads, and Forums, see Xilinx
Support.
Solution Centers
See the Xilinx Solution Centers for support on devices, software tools, and intellectual property
at all stages of the design cycle. Topics include design assistance, advisories, and troubleshooting
tips.
Xilinx Design Hubs provide links to documentation organized by design tasks and other topics,
which you can use to learn key concepts and address frequently asked questions. To access the
Design Hubs:
Note: For more information on DocNav, see the Documentation Navigator page on the Xilinx website.
References
These documents provide supplemental material useful with this guide:
Training Courses
Xilinx provides a variety of training courses and QuickTake videos to help you learn more about
the concepts presented in this document. Use these links to explore related training:
Revision History
The following table shows the revision history for this document.
Copyright
© Copyright 2012-2022 Xilinx, Inc. Xilinx, the Xilinx logo, Alveo, Artix, Kintex, Kria, Spartan,
Versal, Vitis, Virtex, Vivado, Zynq, and other designated brands included herein are trademarks of
Xilinx in the United States and other countries. AMBA, AMBA Designer, Arm, ARM1176JZ-S,
CoreSight, Cortex, PrimeCell, Mali, and MPCore are trademarks of Arm Limited in the EU and
other countries. PCI, PCIe, and PCI Express are trademarks of PCI-SIG and used under license. All
other trademarks are the property of their respective owners.