Ug470 7series Config
Ug470 7series Config
Ug470 7series Config
Configuration
User Guide
.............................................................................. 2
Guide Contents
This manual contains these topics:
• Chapter 1, Configuration Overview
• Chapter 2, Configuration Interfaces
• Chapter 3, Boundary-Scan and JTAG Configuration
• Chapter 4, Dynamic Reconfiguration Port (DRP)
• Chapter 5, Configuration Details
• Chapter 6, Readback and Configuration Verification
• Chapter 7, Reconfiguration and MultiBoot
• Chapter 8, Readback CRC
• Chapter 9, Multiple FPGA Configuration
• Chapter 10, Advanced JTAG Usage
• Appendix A, Additional Resources and Legal Notices
Configuration Overview
This chapter provides a brief overview of the 7 series FPGA configuration methods and features.
Subsequent chapters provide more detailed descriptions of each configuration method and feature.
The configuration methods and features described herein are available on all family members with
few exceptions.
Overview
AMD 7 series FPGAs are configured by loading application-specific configuration data—a
bitstream—into internal memory. 7 series FPGAs can load themselves from an external nonvolatile
memory device or they can be configured by an external smart source, such as a microprocessor,
DSP processor, microcontroller, PC, or board tester. In any case, there are two general configuration
datapaths. The first is the serial datapath that is used to minimize the device pin requirements. The
second datapath is the 8-bit, 16-bit, or 32-bit datapath used for higher performance or access (or
link) to industry-standard interfaces, ideal for external data sources like processors, or x8- or
x16-parallel flash memory.
Like processors and processor peripherals, AMD FPGAs can be reprogrammed, in system, on
demand, an unlimited number of times.
Because AMD FPGA configuration data is stored in CMOS configuration latches (CCLs), it must
be reconfigured after it is powered down. The bitstream is loaded each time into the device through
special configuration pins. These configuration pins serve as the interface for a number of different
configuration modes:
• Master-Serial configuration mode
• Slave-Serial configuration mode
• Master SelectMAP (parallel) configuration mode (x8 and x16)
• Slave SelectMAP (parallel) configuration mode (x8, x16, and x32)
• JTAG/boundary-scan configuration mode
• Master Serial Peripheral Interface (SPI) flash configuration mode (x1, x2, x4)
• Master Byte Peripheral Interface (BPI) flash configuration mode (x8 and x16) using parallel
NOR flash
The configuration modes are explained in detail in Chapter 2, Configuration Interfaces.
The specific configuration mode is selected by setting the appropriate level on the dedicated mode
input pins M[2:0]. The M2, M1, and M0 mode pins should be set at a constant DC voltage level,
either through pull-up or pull-down resistors (≤ 1 kΩ), or tied directly to ground or VCCO_0. The
mode pins should not be toggled during and after configuration. See Chapter 2, Configuration
Interfaces for the mode pin setting options.
The terms Master and Slave refer to the direction of the configuration clock (CCLK):
• In Master configuration modes, the 7 series device drives CCLK from an internal oscillator. To
select the desired frequency, the bitstream -g ConfigRate option is used. The BitGen
section of UG628, ISE Command Line Tools User Guide provides more information for the
AMD ISE™ Design Suite. The Device Configuration Bitstream Settings section of UG908,
Vivado Programming and Debugging User Guide provides more information for the AMD
Vivado™ Design Suite. After configuration, the CCLK is turned OFF unless the persist option
is selected or SEU detection is used. See Persist Option in Chapter 6. The CCLK pin is 3-stated
with a weak pull-up.
• In Slave configuration modes, CCLK is an input.
The JTAG/boundary-scan configuration interface is always available, regardless of the mode pin
settings.
• The configuration banks voltage select pin (CFGBVS) must be set to a High (VCCO_0) or Low
(GND) to set the configuration and JTAG I/O in banks 0, 14, and 15 for 3.3V/2.5V or
1.8V/1.5V operation, respectively. When CFGBVS is set to Low for 1.8V/1.5V I/O operation,
the VCCO_0 supply and I/O signals to bank 0 must be 1.8V (or lower) to avoid device damage.
If CFGBVS is Low, then any I/O pins used for configuration in banks 14 and 15 must also be
powered and operated at 1.8V or 1.5V. See Configuration Banks Voltage Select, page 28 for
further details.
The operating voltage of the I/O in bank 14 and bank 15 are determined by the VCCO_14 and
VCCO_15 supplies, respectively. When bank 14 or bank 15 are used for configuration, the VCCO
supplies for the applicable banks should match the VCCO_0 voltage for voltage compatibility across
the configuration interface. When CFGBVS is tied to GND for 1.8V/1.5V I/O operation, then if any
configuration I/O are used in bank 14 or bank 15, VCCO_14 or VCCO_15 and the configuration I/O
signals to bank 14 or bank 15 must be 1.8V or 1.5V to avoid device damage.
Most 7 series FPGAs are supported by both the ISE Design Suite, which also supports previous
generations, and the newer Vivado Design Suite. The user options described in this user guide
generally refer to the ISE Design Suite tool names, but the same options are found in the Vivado
Design Suite. For example, the ISE Design Suite BitGen tool generates bitstreams. In Vivado, the
WRITE_BITSTREAM Tcl command can be used. For more information, see:
• UG835, Vivado Design Suite Tcl Command Reference Guide
• UG908, Vivado Design Suite User Guide: Programming and Debugging
Note: The BitGen command options are Tcl properties in the Vivado Design Suite. See Appendix A,
Device Configuration Bitstream Settings, in UG908 for details on the properties and values.
Design Considerations
To make an efficient system, it is important to consider which FPGA configuration mode best
matches the system’s requirements. Each configuration mode dedicates certain FPGA pins and can
temporarily use other multi-function pins during configuration only. These multi-function pins are
then released for general use when configuration is completed. Similarly, the configuration mode
can place voltage restrictions on some FPGA I/O banks. Several different configuration options are
available, and while the options are flexible, there is often an optimal solution for each system.
Several topics must be considered when choosing the best configuration option: overall setup,
speed, cost, and complexity.
Notes:
1. The 'X' in the JTAG IDCODE value represents the revision field (IDCODE[31:28]) which can vary.
2. The 7V2000T IDCODE contains additional don't care ('X') bits beyond the revision field. The complete binary IDCODE[31:0] value with don't
care bit positions is: XXXX_0011_0110_1011_XX11_0000_1001_0011.
Master Modes
The self-loading FPGA configuration modes, generically called Master modes, are available with
either a serial or parallel datapath. The Master modes leverage various types of nonvolatile
memories to store the FPGA's configuration information. In Master mode, the FPGA's configuration
bitstream typically resides in nonvolatile memory on the same board, generally external to the
FPGA. The FPGA generates a configuration clock signal in an internal oscillator that drives the
configuration logic and is visible on the CCLK output pin. The FPGA controls the configuration
process.
Slave Modes
The externally controlled loading FPGA configuration modes, generically called Slave modes, are
also available with either a serial or parallel datapath. In Slave mode, an external “intelligent agent”
such as a processor, microcontroller, DSP processor, or tester downloads the configuration image
into the FPGA, as shown in Figure 1-1. The advantage of the Slave configuration modes is that the
FPGA bitstream can reside almost anywhere in the overall system. The bitstream can reside in flash,
onboard, along with the host processor's code. It can reside on a hard disk. It can originate
somewhere over a network connection or another type of bridge connection.
Serial Byte-Wide
Processor, Processor,
Microcontroller 7 Series FPGA Microcontroller 7 Series FPGA
[7:0] 8, 16, 32 [7:0]
SERIAL_DATA DIN DATA [15:0] D [15:0]
[31:0] [31:0]
CLOCK CCLK
SELECT CSI_B
(a) Slave Serial Mode READ/WRITE RDWR_B
The Slave Serial mode is extremely simple, consisting only of a clock and serial data input. The
JTAG mode is also a simple serial configuration mode, popular for prototyping and highly utilized
for board test. The Slave SelectMAP mode is a simple x8-, x16-, or x32-bit-wide processor
peripheral interface, including a chip-select input and a read/write control input.
JTAG Connection
The four-pin JTAG interface is common on board testers and debugging hardware. In fact, the AMD
programming cable for 7 series FPGAs, listed here, uses the JTAG interface for prototype download
and debugging. Regardless of the configuration mode ultimately used in the application, it is best to
also include a JTAG configuration path for easy design development. Also see Chapter 3,
Boundary-Scan and JTAG Configuration.
• Platform Cable USB II
https://www.xilinx.com/products/boards-and-kits/hw-usb-ii-g.html
Configuration Factors
Many factors determine which configuration solution is optimal for a system. There are also a great
number of details that need to be accounted for. Configuration should be taken very seriously as to
not cause problems later in the design cycle.
Designers need to understand the difference between dedicated configuration pins and reusable post
configuration pins. Details can be found in Chapter 5, Configuration Details.
Other issues that need to be considered are Data File formats and bitstream sizes. The size of the
bitstream is directly affected by the device size and there are several formats in which the bitstream
can be created.
The FPGA configuration process involves many steps. Each step often involves a sequence of
events. For example, the first step is the power-up sequence for the multiple power supplies. To
understand the overall configuration time, a designer must understand the contribution of each step.
The Vivado tools provide the Tcl command CALC_CONFIG_TIME which can be used to estimate
configuration time. Use help calc_config_time for usage information.
More details can be found in Chapter 5, Configuration Details.
Notes:
1. The table shows the device model name; BSDL files use the JTAG order and always refer to the master SLR as
"SLR0".
Notes:
1. Master ICAP cannot access slave SLRs when mode pins are set to JTAG mode. As JTAG mode is always
available independent of the mode pins, the JTAG mode pin setting is not recommended for 3D ICs.
2. Master ICAP cannot access configuration memory in slave SLRs when configuring in SPI modes. Therefore
partial reconfiguration must use the ICAP within the local SLR with SPI x1 configuration mode.
3. ICAP in slave SLRs cannot be used when configuring in SPI x2 or SPI x4 modes. Therefore partial
reconfiguration is limited to the master SLR, and SEM IP (error correction) is not supported with these
configuration modes.
JTAG configuration for 3D devices is supported only via iMPACT or the Vivado device
programmer using either a JTAG cable connection or solutions based from the serial vector format
(SVF) file.
Command sequence examples provided in Chapter 6, Readback and Configuration Verification
(Table 6-1 through Table 6-6) and Chapter 7, Reconfiguration and MultiBoot (Table 7-1, Table 7-6,
and Table 7-7) support monolithic 7 series devices and not 3D ICs. For more information on 3D ICs,
see https://www.xilinx.com/products/silicon-devices/3dic.html.
Configuration Debugging
The best practices discussed in this section helps to enable debug and resolution if you encounter an
issue when implementing a configuration solution. Before you embark on a full debug, create and
test a simple design using the bitstream defaults (for example, a counter or LED output pattern).
This simple design test helps eliminate any potential issues with advanced bitstream settings or
board interfaces. Try configuration using a different method, such as configuring through JTAG
instead of from a flash memory, to determine if the issue is specific to the configuration mode. The
Xilinx Configuration Solution Center is an additional resource. For more information, see
https://support.xilinx.com/s/article/34904?language=en_US.
The two most important configuration signals, INIT_B and DONE, should be connected to LED
drivers. The pulsing of INIT_B from Low to High indicates the completion of initialization at
power-up. A falling INIT_B signal during configuration can indicate a CRC error in the bitstream
seen by the FPGA device. Recommendations for configuration and other pins are found in
XMP277, 7 Series Schematic Design Checklist. If configuration has not completed properly, the
status register provides important information about what errors might have caused the failure.
JTAG readback/verify can determine whether the intended configuration data was loaded correctly
into the device.
The configuration simulation model (SIM_CONFIG) allows supported configuration interfaces to
be simulated. This is a model of how the supported devices react to stimulus on the configuration
interface. For more information, see UG626, Synthesis and Simulation Design Guide.
Configuration Interfaces
AMD 7 series devices have five configuration interfaces. Each configuration interface corresponds
to one or more configuration modes and bus width, shown in Table 2-1. For detailed interface timing
information, see the respective 7 series FPGAs data sheet. Configuration timing is relative to the
CCLK at the pin, even in Master modes where the CCLK is generated internally.
Notes:
1. The Slave SelectMAP x16 and x32 bus widths do not support AES-encrypted bitstreams.
2. This is the default setting due to internal pull-up resistors on the Mode pins.
Configuration Pins
Each configuration mode has a corresponding set of interface pins that span one or more I/O banks
on the 7 series FPGA. Bank 0 contains the dedicated configuration pins and is always part of every
configuration interface. Bank 14 and Bank 15 contain multi-function pins that are involved in
specific configuration modes. The 7 series FPGAs data sheets specify the switching characteristics
for configuration pins in banks operating at 3.3V, 2.5V, 1.8V, or 1.5V.
All JTAG and dedicated configuration pins are located in a separate, dedicated bank with a
dedicated voltage supply (VCCO_0). The multi-function pins are located in Banks 14 and 15.
All dedicated input pins operate at the VCCO_0 LVCMOS level (LVCMOS15, LVCMOS18,
LVCMOS25, or LVCMOS33). All active dedicated output pins operate at the VCCO_0 voltage
level with the output standard set to LVCMOS, 12 mA drive, fast slew rate. For all modes that use
multi-function I/O, the associated VCCO_14 or VCCO_15 must be connected to the appropriate
voltage to match the I/O standard of the configuration device. The multi-function pins are also
LVCMOS, 12 mA drive, fast slew rate during configuration. If the Persist option is used (See Persist
Option, page 120), the multi-function I/O for the selected configuration mode remain active after
configuration, with the I/O standard set to the general-purpose default of LVCMOS, 12 mA drive,
Slow slew rate.
Table 2-2 and Table 2-3 show the configuration mode pins and their location across the I/O banks.
CSI_B 14 – – – – – –
RDWR_B 14 – – – – – –
D02 14 – – – – – D02
D03 14 – – – – – D03
D[04-07] 14 – – – – – –
D[08-15] 14 – – – – – –
A[00-15]_D[16-31] 14 – – – – – –
A[16-28] 15 – – – – – –
FOE_B 15 – – – – – –
FWE_B 15 – – – – – –
ADV_B 15 – – – – – –
Notes:
1. PUDC_B has special functionality during configuration but is independent of all configuration interfaces, i.e. PUDC_B does not need to be voltage
compatible with other pins in a configuration interface.
2. EMCCLK is only used when the ExtMasterCclk_en option enables EMCCLK as an input for clocking the master configuration modes.
3. DOUT is only used in a serial configuration daisy-chain for outputting data to the downstream FPGA (or for the DebugBitstream option). Otherwise,
DOUT is high-Z.
4. CSO_B is only used in a parallel configuration daisy-chain for outputting a chip-enable signal to a downstream device. Otherwise, CSO_B is high-Z.
5. RS0 and RS1 are only driven when a MultiBoot event is initiated or when the ConfigFallback option is enabled and a Fallback event occurs. Otherwise,
RS0 and RS1 are high-Z. When using the RS[1:0] pins for configuration it is recommended not to use them in User mode.
6. Empty cells indicate that the pin is not used in the configuration mode and is ignored and is high-Z during configuration.
Bank
Pin Name
x8 x16 x8 x16 x32 x8 x16
RS0, RS1(5) 15 RS0, RS1(5) RS0, RS1(5) RS0, RS1(5) RS0, RS1(5) RS0, RS1(5) RS0, RS1(5) RS0, RS1(5)
Notes:
1. PUDC_B has special functionality during configuration but is independent of all configuration interfaces, i.e. PUDC_B does not need to be voltage compatible with other pins
in a configuration interface.
2. EMCCLK is only used when the BitGen ExtMasterCclk_en option enables EMCCLK as an input for clocking the master configuration modes.
3. DOUT is only used in a serial configuration daisy-chain for outputting data to the downstream FPGA (or for the BitGen DebugBitstream option). Otherwise, DOUT is high-Z.
4. CSO_B is only used in a parallel configuration daisy-chain for outputting a chip-enable signal to a downstream device. Otherwise, CSO_B is high-Z.
5. RS0 and RS1 are only driven when a MultiBoot event is initiated or when the BitGen ConfigFallback option is enabled and a Fallback event occurs. Otherwise, RS0 and RS1
are high-Z. When using the RS[1:0] pins for configuration it is recommended not to use them in User mode.
6. Empty cells indicate that the pin is not used in the configuration mode and is ignored and is high-Z during configuration.
Configuration Mode
M[2:0] determine the configuration mode. See Table 2-3,
M[2:0] 0 Dedicated Input page 19 for the configuration mode settings. Connect each
mode pin either directly, or via a ≤ 1 kΩ resistor, to VCCO_0 or
GND.
IEEE Std 1149.1 (JTAG) Test Clock
Clock for all devices on a JTAG chain. Connect to AMD cable
header's TCK pin. Treat as a critical clock signal and buffer the
TCK 0 Dedicated Input cable header TCK signal as necessary for multiple device
JTAG chains. If the TCK signal is buffered, connect the buffer
input to an external weak (e.g. 10 kΩ) pull-up resistor to
maintain a valid High when no cable is connected.
JTAG Test Mode Select
Mode select for all devices on a JTAG chain. Connect to AMD
cable header's TMS pin. Buffer the cable header TMS signal as
TMS 0 Dedicated Input necessary for multiple device JTAG chains. If the TMS signal
is buffered, connect the buffer input to an external weak (e.g.
10 kΩ) pull-up resistor to maintain a valid High when no cable
is connected.
Initialization (bar)
Active-Low FPGA initialization pin or configuration error
signal. The FPGA drives this pin Low when the FPGA is in a
configuration reset state, when the FPGA is initializing
(clearing) its configuration memory, or when the FPGA has
detected a configuration error. Upon completing the FPGA
initialization process, INIT_B is released to high-Z at which
Bidirectional time an external resistor is expected to pull INIT_B High.
INIT_B 0 Dedicated
(open-drain) INIT_B can externally be held Low during power-up to stall
the power-on configuration sequence at the end of the
initialization process. When a High is detected at the INIT_B
input after the initialization process, the FPGA proceeds with
the remainder of the configuration sequence dictated by the
M[2:0] pin settings.
Connect INIT_B to a ≤ 4.7 kΩ pull-up resistor to VCCO_0 to
ensure clean Low-to-High transitions.
Configuration Clock
CCLK runs the synchronous FPGA configuration sequence in
all modes except JTAG mode.
• For slave modes: CCLK is an input and requires connection
to an external clock source.
Input
CCLK 0 Dedicated or • For master modes: The FPGA sources the configuration
Output clock and drives CCLK as an output.
• For JTAG mode: CCLK is high-Z and can be left
unconnected.
Note: Treat CCLK as a critical clock signal to ensure good
signal integrity (see the Signal Integrity page on xilinx.com
for more information).
Read/Write (bar)
RDWR_B determines the direction of the SelectMAP data
bus. When RDWR_B is High, the FPGA outputs read data
onto the SelectMAP data bus. When RDWR_B is Low, an
external controller can write data to the FPGA through the
SelectMAP data bus.
RDWR_B 14 Multi-function Input • For master SelectMAP mode: Connect RDWR_B directly,
or via a ≤ 1 kΩ resistor, to GND.
• For slave SelectMAP mode: An external device controls
the RDWR_B signal to control the direction of the
SelectMAP data bus for read/write from/to the SelectMAP
interface.
• In all other modes: RDWR_B is ignored and can be left
unconnected.
Master-Output, Slave-Input
FPGA (master) SPI mode output for sending commands to the
SPI (slave) flash device.
• For SPI mode: Connect to the SPI flash data input pin. The
D00_MOSI pin is high-Z after the command and address is
sent to the SPI flash device. The PUDC_B pin determines
D00_MOSI 14 Multi-function Bidirectional if the signal will be pulled up.
• For BPI and SelectMAP modes: The MOSI pin is a
multi-purpose pin that functions as the D00 data input pin.
See D[00-31] row in this table.
• For all other modes: The MOSI pin function is not
applicable, the pin is high-Z during configuration, is
ignored during configuration, and can be left unconnected.
Notes:
1. Each I/O is referenced to the VCCO supply voltage for the bank in which the I/O is located. For example, "0" indicates the I/O is referenced to
Bank 0's VCCO_0.
CFGBVS similarly controls the voltage tolerance on banks 14 and 15, but only during
configuration. When CFGBVS is High, the configuration I/O on banks 14 and 15 support operation
at 3.3V or 2.5V during configuration. When the CFGBVS pin is Low, the configuration I/O in banks
14 and 15 support operation at 1.8V or 1.5V during configuration.
The 7 series FPGAs have two I/O bank types: high-range (HR I/O) banks support 3.3V, 2.5V, and a
few lower voltage I/O standards, and high-performance (HP I/O) banks support I/O standards of
1.8V or lower voltage. The dedicated configuration and JTAG I/O are located in bank 0. Bank 0 is
a high-range bank type on all devices except for the Vertex 7 HT devices. Several of the
configuration modes also rely on pins in bank 14 and/or bank 15. Bank 14 and bank 15 are HR I/O
banks in the Spartan 7, Artix 7 and Kintex 7 families, but are always HP I/O banks in the Vertex 7
family. See UG475, 7 series FPGAs Packaging and Pinout Guide for bank information for each
device.
Note: The CFGBVS pin is not available on Vertex 7 HT devices. Vertex 7 HT devices support only
1.8V operation for configuration banks.
The CFGBVS pin setting determines the I/O voltage support for bank 0 at all times, and for bank 14
and bank 15 during configuration. The VCCO supply for each configuration bank must match the
CFGBVS selection if used during configuration — 2.5V or 3.3V if CFGBVS is tied to VCCO_0,
and 1.8V or 1.5V if CFGBVS is tied to GND.
Table 2-5 shows the CFGBVS pin connection options and the corresponding set of valid VCCO
supply and I/O voltages.
Caution! When CFGBVS is set to Low for 1.8V/1.5V I/O operation, the VCCO_0 and I/O signals
to bank 0 must be 1.8V (or lower). VCCO_14 and VCCO_15 must also be 1.8V/1.5V if
configuration I/O in those banks are used during configuration. Otherwise, the device can be
damaged from the application of voltages to pins on these banks that are greater than the 1.8V
operation maximum.
Depending on the configuration mode, the interface pins associated with the mode can span bank 0,
bank 14, and bank 15. Typically, all three banks receive the same VCCO voltage supply to ensure a
consistent I/O voltage interface for all of the configuration interface pins. Using the same voltage for
banks 0, 14, and 15 is recommended because it allows the option of using an 8-bit or wider
configuration mode, and avoids the I/O transition described under I/O Transition at the End of
Startup, page 87.
Table 2-6: Spartan 7, Artix 7 and Kintex 7 FPGA Configuration Mode, Compatible
Voltages, and CFGBVS Connection
Configuration HR
Configuration Banks HR Bank 14 HR Bank 15
Interface I/O Bank 0 CFGBVS
Mode Used VCCO_14 VCCO_15
Voltage VCCO_0
3.3V 3.3V Any Any VCCO_0
2.5V 2.5V Any Any VCCO_0
JTAG (only) 0
1.8V 1.8V Any Any GND
1.5V 1.5V Any Any GND
3.3V 3.3V 3.3V Any VCCO_0
Notes:
1. RS[1:0] for MultiBoot or Fallback are in bank 15 but are typically only used in BPI mode and not supported in
SPI mode.
2. BPI mode is not available in the Spartan 7 family.
Table 2-7: Vertex 7 T and XT FPGA Configuration Mode, Compatible Voltages, and
CFGBVS Connection
Configuration
Configuration Banks HR Bank 0 HP Bank 14 HP Bank 15
Interface I/O CFGBVS
Mode Used VCCO_0 VCCO_14(1) VCCO_15(1)
Voltage
3.3V 3.3V ≤1.8V ≤1.8V VCCO_0
2.5V 2.5V ≤1.8V ≤1.8V VCCO_0
JTAG (only) 0
1.8V 1.8V ≤1.8V ≤1.8V GND
1.5V 1.5V ≤1.8V ≤1.8V GND
Notes:
1. In the Vertex 7 FPGA, banks 14 and 15 are high-performance banks, limited to 1.8V or lower I/O standards.
CFGBVS does not affect those banks.
2. RS[1:0] for MultiBoot or Fallback are in bank 15 but are typically only used in BPI mode and not supported in
SPI mode.
Notes:
1. Virtex-7 HT devices only support 1.8V operation for configuration banks including bank 0. CFGBVS is not
supported.
2. RS[1:0] for MultiBoot or Fallback are in bank 15 but are typically only used in BPI mode and not supported in
SPI mode.
Table 2-9: Configuration Mode, Compatible Voltages, and CFGBVS Pin Connection
Applicable Family Compatible Bank Voltages Required
Configuration
Configuration Bank 0 Bank 14 Bank 15 CFGBVS
Interface Spartan 7 Artix 7 Kintex 7 Virtex-7
Mode VCCO_0 VCCO_14 VCCO_15 Pin
I/O Voltage Family Family Family Family
Voltage Voltage Voltage Connection
3.3V √ √ √ √ (3) 3.3V Any(1) Any(1) VCCO_0
2.5V √ √ √ √ (3) 2.5V Any(1) Any(1) VCCO_0
JTAG (Only)
1.8V √ √ √ √ 1.8V Any(1) Any(1) GND
1.5V √ √ √ √ (3) 1.5V Any(1) Any(1) GND
3.3V √ √ √ N/A(1) 3.3V 3.3V Any(1) VCCO_0
Notes:
1. In the Virtex-7 FPGA, bank 14 and bank 15 are high-performance banks, limited to 1.8V or lower I/O standards.
2. JTAG interface is always supported in bank 0 at the VCCO_0 voltage level regardless of the configuration mode.
3. Virtex-7 HT devices support only 1.8V operation for bank 0.
M[2:0]
DOUT
DIN
INIT_B
PUDC_B
PROGRAM_B
DONE
CCLK
UG470_c2_01_091310
The serial configuration interface pins shown in Figure 2-1 are defined in Table 2-4, page 20.
VCCINT
See Configuration Banks Voltage Select
CFGBVS VCCAUX
section for appropriate connection.
PUDC_B VCCAUX
VCCO_0
VCCBATT VCCO_0
DOUT
VCC
VCCO_0 7 Series VCCO_0
FPGA
M2
Microprocessor M1
or CPLD
4.7 k
M0
Configuration PROGRAM_B
Memory
Source CLOCK CCLK DONE
SERIAL_OUT DIN
PROGRAM_B INIT_B
DONE
INIT_B
TDI TDO
GND TMS VCCO_0
TCK
GND
4.7 k
330
PROGRAM_B
1 VREF
VREF
TMS
Xilinx Cable Header
(JTAG Interface)
TCK
TDO
TDI
N.C.
N.C.
14
PROGRAM_B
INIT_B
Master CLK Begins Here(2)
CCLK
DONE
UG470_c2_03_110513
M[2:0]
RS[1:0]
D[31:00]
INIT_B
PUDC_B CSO_B
PROGRAM_B
RDWR_B
CSI_B DONE
CCLK
UG470_c2_04_062812
The SelectMAP configuration interface pins shown in Figure 2-4 are defined in Table 2-4, page 20.
VCCINT
See Configuration Banks Voltage Select
CFGBVS VCCAUX
section for appropriate connection.
PUDC_B VCCAUX
VCCO_0
VCCBATT VCCO_0
VCCO_14
VCC VCCO_0
VCCO_14
M2 VCCO_15
Microprocessor
M1
or CPLD VCCO_15 VCCO_0
M0
7 Series
4.7 kΩ
FPGA
Configuration D[31:0] D[31:0]
Memory
Source SELECT CSI_B CSO_B
READ/WRITE RDWR _B INIT_B
CLOCK CCLK
PROGRAM_B PROGRAM_B
DONE
DONE
INIT_B TMS
GND TCK
VCCO_0
TDI TDO
GND
4.7 kΩ
PROGRAM_B 330Ω
.
1 VREF
VREF
Xilin x Cable Header
(JTAG Interface)
TMS
TCK
TDO
TDI
N.C.
N.C.
14
Figure 2-5: Single Slave Device SelectMAP Configuration from Microprocessor or CPLD Example
CSI_B
The Chip Select input (CSI_B) enables the SelectMAP bus. When CSI_B is High, the 7 series
device ignores the SelectMAP interface, neither registering any inputs nor driving any outputs. The
D[31:0] pins are placed in a High-Z state, and RDWR_B is ignored.
• If CSI_B = 0, the device’s SelectMAP interface is enabled.
• If CSI_B = 1, the device’s SelectMAP interface is disabled.
If only one device is being configured through the SelectMAP and readback is not required, the
CSI_B signal can be tied to ground.
RDWR_B
RDWR_B is an input to the 7 series device that controls whether the data pins are inputs or outputs:
• If RDWR_B = 0, the data pins are inputs (writing to the FPGA).
• If RDWR_B = 1, the data pins are outputs (reading from the FPGA).
For configuration, RDWR_B must be set for write control (RDWR_B = 0). For readback,
RDWR_B must be set for read control (RDWR_B = 1) while CSI_B is asserted. (For details, refer
to Chapter 6, Readback and Configuration Verification.)
3D ICs do not support the ABORT sequence. In monolithic devices changing the value of RDWR_B
from Low to High while CSI_B is Low triggers an ABORT, and the configuration I/O changes from
input to output asynchronously. The ABORT status appears on the data pins synchronously.
Changing the value of RDWR_B from High to Low while CSI_B is Low also triggers an ABORT,
and the configuration I/O changes from output to input asynchronously with no ABORT status
readback. If readback is not needed, RDWR_B can be tied to ground or used for debugging with
SelectMAP ABORT. See the SelectMAP ABORT section.
The RDWR_B signal is ignored while CSI_B is deasserted. Read/write control of the 3-stating of
the data pins is asynchronous. The FPGA actively drives SelectMAP data without regard to CCLK
if RDWR_B is set for read control (RDWR_B = 1, Readback) while CSI_B is asserted.
CCLK
All activity on the SelectMAP data bus is synchronous to CCLK. When RDWR_B is set for write
control (RDWR_B = 0, Configuration), the FPGA samples the SelectMAP data pins on rising
CCLK edges. When RDWR_B is set for read control (RDWR_B = 1, Readback), the FPGA updates
the SelectMAP data pins on rising CCLK edges.
In Slave SelectMAP mode, configuration can be paused by stopping CCLK (see Non-Continuous
SelectMAP Data Loading, page 41).
Figure 2-6 summarizes the timing of SelectMAP configuration with continuous data loading.
X-Ref Target - Figure 2-6
PROGRAM_B
(3)
INIT_B
CCLK
(1) (5) (11)
CSI_B
(2) (4) (12)
RDWR_B
(6) (7) (8) (9)
D[0:7] Byte 0 Byte 1 Byte n
(10)
DONE
UG470_c2_06_072610
PROGRAM_B
(2)
INIT_B
(3) (4) (5) (6) (7) (8) (9) (10) (11) (12)
CCLK
CSI_B
D[00:n]
(1)
RDWR_B
UG470_c2_07_092210
PROGRAM_B
INIT_B
(4) (5) (6)
CCLK
(3)
CSI_B
(2)
RDWR_B
(1)
D[n:00] Byte 0 Byte 1 Byte n
UG470_c2_08_032615
Notes:
1. D[00:07] represent the SelectMAP DATA pins.
Some applications can accommodate the non-conventional data ordering without difficulty. For
other applications, it can be more convenient for the source configuration data file to be bit swapped,
meaning that the bits in each byte of the data stream are reversed. For these applications, the AMD
PROM file generation software can generate bit-swapped PROM files (see Configuration Data File
Formats, page 73).
Table 2-11 shows the bit ordering for the 7 series FPGA SelectMAP x8, x16, and x32 data bus
widths. The 7 series FPGA SelectMAP data bus bit ordering is the same as the Virtex-6 FPGA
SelectMAP data bus bit ordering.
x32 24 25 26 27 28 29 30 31 16 17 18 19 20 21 22 23 8 9 10 11 12 13 14 15 0 1 2 3 4 5 6 7
x16 8 9 10 11 12 13 14 15 0 1 2 3 4 5 6 7
x8 0 1 2 3 4 5 6 7
SelectMAP ABORT
3D ICs do not support the ABORT sequence. In monolithic devices an ABORT is an interruption in
the SelectMAP configuration or readback sequence occurring when the state of RDWR_B changes
while CSI_B is asserted as sampled by CCLK. During a configuration ABORT, internal status is
driven onto the D[04:07] pins over the next four CCLK cycles. The other D pins are always High.
After the ABORT sequence finishes, the user can resynchronize the configuration logic and resume
configuration. For applications that must deassert RDWR_B between bytes, see the Controlled
CCLK method shown in Table 2-8.
CCLK
CSI_B
RDWR_B
DATA[00:07] STATUS
ABORT UG470_c02_09_110413
CCLK
CSI_B
RDWR_B
DATA[00:07] DATA
ABORT
UG470_c02_10_110413
ABORTs during readback are not followed by a status word because the RDWR_B signal is set for
write control (FPGA D[x:00] pins are inputs).
The ABORT sequence lasts four CCLK cycles. During those cycles, the status word changes to
reflect data alignment and ABORT status. A typical sequence might be:
11011111 => DALIGN = 1, IN_ABORT_B = 1
10001111 => DALIGN = 0, IN_ABORT_B = 0
10001111 => DALIGN = 0, IN_ABORT_B = 0
10001111 => DALIGN = 0, IN_ABORT_B = 0
After the last cycle, the synchronization word can be reloaded to establish data alignment.
M[2:0]
D00_MOSI
D01_DIN
FCS_B
INIT_B
DONE
PROGRAM_B
PUDC_B
EMCCLK
CCLK
UG470_c2_11_110513
The SPI configuration interface pins shown in Figure 2-11 are defined in Table 2-4, page 20.
4.7 kΩ
connection.
PUDC_B DOUT
VCCO_0
2.4 kΩ
VCC
VCCO_14
VCC
MOSI/D[00] D
DIN/D[01] Q
NC EMCCLK
FCS_B S
SPI Flash
M2 CCLK C
7 Series HOLD
M1 VCCO_0 VCCO_0
FPGA W
VCCO_0
VCCO_0
GND
M0
INIT_B
VCCO_0
PROGRAM_B
1 VREF DONE
4.7 kΩ
VREF
330Ω
Xilin x Cable Header
VCCAUX
(JTAG Interface)
TMS
TMS
TCK VCCAUX
TCK
TDO VCCBATT
TDI
TDI
N.C. TDO
N.C. GND
14
PROGRAM_B
Refer to the Notes following this figure for related information. UG470_c2_12_032311
9. The CCLK frequency is adjusted by the ConfigRate option if the source is the internal
oscillator. Alternatively, the ExtMasterCclk_en option can switch the CCLK to source from the
EMCCLK pin to use an external clock source.
10. VCCBATT is the power source for the AES key stored in SRAM. It should be connected to a
battery supply, when used.
The 7 series FPGA SPI x1 mode sequence diagram is shown in Figure 2-13.
X-Ref Target - Figure 2-13
PROGRAM_B
INIT_B
M[2:0] 001
FS[2:0]
CCLK
… … … …
FCS_B
DONE
4.7 kΩ
VCC
VCCO_0
2.4 kΩ
4.7 kΩ
4.7 kΩ
PUDC_B
VCCO_14 VCC
D[00] D
DIN/D[01] Q
FCS_B S
D[02] W
NC EMCCLK D[03] HOLD
SPI Flash
M2 CCLK C
7 Series
M1 VCCO_0
FPGAs GND
VCCO_0
VCCO_0
M0
INIT_B
VCCO_0
PROGRAM_B
1 VREF DONE
4.7 kΩ
VREF
330Ω
Xilin x Cable Header
VCCAUX
(JTAG Interface)
TMS
TMS
TCK VCCAUX
TCK
TDO VCCBATT
TDI
TDI
N.C. TDO
N.C. GND
14
PROGRAM_B
XAPP586_05_012113
8. Data is clocked out of the SPI on the CCLK falling edge and clocked in on the FPGA on the
rising edge, unless negative edge clocking (spi_fall_edge:Yes) is enabled.
9. The CCLK frequency is adjusted by the ConfigRate option if the source is the internal
oscillator. Alternatively, the ExtMasterCclk_en option can switch the CCLK to source from the
EMCCLK pin to use an external clock source.
10. VCCBATT is the power source for the AES key stored in SRAM. It should be connected to a
battery supply, when used.
CCLK
MISO[3:0]
(from SPI flash)
When configuration starts, the FPGA clocks data in on the rising edge. This continues until the
FPGA reads the command in the early part of the bitstream that instructs it to change to the falling
edge. This occurs before the command to change to external clocking or the command to change the
master clock frequency. The falling edge clocking option is enabled by setting the option
spi_fall_edge.
1
------------------------------------------------------------------------------------------------ ≥ T SPITCO + T SPIDCC Equation 2-1
ConfigRate × ( 1 + FMCCKTOL MAX )
The wide frequency tolerance of the FPGA master configuration clock is a significant factor in this
calculation, and if maximum configuration speeds are needed, it is recommended to use an external
clock to minimize the impact of that variable. This requires connection to the EMCCLK pin and
enabling this option in the bitstream (ExtMasterClk_en).
Refer to the flash device data sheet to ensure that the flash selected limits (clock low/high time)
satisfy the timing specifications and do not affect the CONFIGRATE setting.
• Hold the FPGA INIT_B pin Low from power-up to delay the start of the FPGA configuration
procedure. Release the INIT_B pin to High after the SPI flash becomes ready to receive
commands.
M[2:0] A[28:00]
D[15:00] CSO_B
INIT_B RS[1:0]
PUDC_B CCLK
PROGRAM_B FCS_B
FOE_B
EMCCLK
FWE_B
DONE
ADV_B
UG470_c2_15_110513
The BPI configuration interface pins shown in Figure 2-16 are defined in Table 2-4, page 20. Note
that some of the required pins are in bank 15. The CPG236 package for the Artix 7 7A50T and
smaller devices does not bond out bank 15 and therefore does not support BPI configuration. The
Spartan 7 family does not support BPI configuration.
The 7 series FPGA Master BPI configuration mode has two BPI flash read modes available:
asynchronous and synchronous. Faster configuration times can be achieved using the BPI flash
synchronous read mode with the external master clock than in other direct configuration modes. In
addition, a wider density range of parallel NOR flash can be accessed by up to 29 address lines.
By default, 7 series FPGAs use the asynchronous mode of the BPI flash to read bitstream data as
shown in Figure 2-17, page 56. The FPGA drives the address bus from a given start address, and the
BPI flash sends back the bitstream data. The default start address is address 0. The start address can
be explicitly set in a MultiBoot reconfiguration procedure as outlined in Chapter 7, Reconfiguration
and MultiBoot. In asynchronous read mode, supported bus widths of x8 and x16 are auto-detected
as described in Bus Width Auto Detection, page 74.
The 7 series FPGA Master BPI configuration mode can optionally read a bitstream from select BPI
devices that support burst, synchronous read mode as illustrated in Figure 2-20 and described in
Synchronous Read Mode Support, page 59. A BPI device that supports the synchronous read mode
latches a given start address from the FPGA into its internal address counter. Then given a clock, the
flash outputs data from the next sequential address location to its data bus during each clock period.
In the synchronous read mode, a BPI device can deliver data many times faster than through its
asynchronous read interface. Refer to the specific FPGA for the number of address signals available
that determine the maximum flash density supported for configuration.
The programming software provides the ability to program parallel NOR flash using an indirect
programming method. This method downloads a new FPGA design that provides a connection from
the software through the 7 series FPGA to the BPI flash device. For more details, see XAPP587, BPI
Fast Configuration and iMPACT Flash Programming with 7 Series FPGAs. Similar functionality is
offered by the Vivado device programmer. In embedded systems such as a PCIe interface, no JTAG
connection might be available. In-system programming can be accomplished across the PCIe
system instead. For more details, see XAPP518, In-System Programming of BPI PROM for Virtex-6,
Virtex-7, and Kintex 7 FPGAs Using PCI Express Technology.
For specific BPI flash supported by the Vivado tools, see UG908, Vivado Design Suite
Programming and Debugging User Guide. For specific BPI flash supported by the ISE iMPACT
tools, see the iMPACT Help documentation.
Note: AMD recommends contacting your flash supplier for device availability. References to
specific flash devices in this document are not an assurance of their current or future availability.
IEEE 1149.1
TMS
JTAG Port
VCCO_0
N/C TCK
N/C TDO
14 TDI VCCO_0
Mode = Master BPI 0 M2
1 M1
x8/x16 BPI Flash VCCO_0 0 M0
330Ω
4.7 kΩ
4.7 kΩ
4.7 kΩ
VCCO
VCCO DONE
PROGRAM_B
VCCO_0 RST INIT_B
4.7 kΩ
4.7 kΩ
4.7 kΩ VCCBATT
N/C CCLK
WP WE FWE_B
OE FOE_B
VCCO_15
A[n:1] A[28:16] RS0 N/C
RS1 N/C
CLK
ADV A[15:00] VCCO_14
CSO_B N/C
CE FCS_B
DQ[15:0] D[15:00] PUDC_B
N/C EMCCLK
WAIT N/C
GND
GND
PROGRAM_B UG470_c2_16_072114
Figure 2-17: 7 Series FPGA Master BPI Configuration Interface - Asynchronous Read Example
9. The BPI flash vendor data sheet should be referred to for details on the specific flash signal
connectivity. To prevent address misalignment, the user should pay close attention to the flash
family address LSB for the byte/word mode used. Not all flash families use the A01 as the
address LSB.
10. The JTAG connections are shown for a simple, single-device JTAG scan chain. When multiple
devices are on the JTAG scan chain, use the proper IEEE Std 1149.1 daisy-chain technique to
connect the JTAG signals. The TCK signal integrity is critical for JTAG operation. Route,
terminate, and if necessary, buffer the TCK signal appropriately to ensure signal integrity for
the devices in the JTAG scan chain.
11. The FPGA mode (M[2:0]) pins are shown set to Master BPI mode (010). The implementation
of a board-level option that enables the user to change the FPGA mode pins to JTAG mode
(101) is recommended to enable JTAG-based debug capability for the FPGA during design.
This is not required, but the JTAG mode setting ensures that there is no interference from the
Master BPI configuration during debug.
12. The FPGA PUDC_B pin is tied to ground in this sample schematic enabling internal pull-ups
during configuration, including the non-dedicated configuration I/Os. PUDC_B can
alternatively be tied High setting the non-dedicated configuration I/Os to 3-state during
configuration.
13. VCCBATT is the power source for the AES key stored in SRAM. It should be connected to a
battery supply, when used.
14. This sample schematic supports single bitstream configuration. Thus, FPGA RS[1:0] pins are
not connected in this sample schematic.
15. See the respective 7 series FPGAs data sheet for the VCCINT supply voltage.
Figure 2-18 shows the Master BPI configuration waveform for an asynchronous read.
X-Ref Target - Figure 2-18
PROGRAM_B
INIT_B
FWE_B 1
FOE_B 0
FCS_B 0
A[n:00] A0 A1 An
CCLK
D[n:00] D0 D1 Dn
RS[1:0] Z
CSO_B Z
DONE
UG470_c2_17_110513
2. For power-up configuration, INIT_B starts Low. For PROGRAM_B initiated configuration,
INIT_B drives Low when PROGRAM_B is pulsed Low.
3. RS[1:0] are typically high impedance. However, a MultiBoot (or Fallback event in BPI mode)
can cause RS[1:0] to drive High or Low.
4. INIT_B releases at the end of the FPGA's internal initialization process. An external resistor
pulls INIT_B High. On the rising edge of INIT_B, the FPGA samples its M[2:0] pins to
determine the configuration mode.
5. Upon determining the Master BPI configuration mode from the M[2:0] pins, the FPGA drives
FWE_B High, FOE_B Low, and FCS_B Low.
6. For Master mode, the FPGA drives CCLK after a TICCK delay after the rising edge of INIT_B.
7. The FPGA drives the initial address (A00) through its A[n:00] pins and holds the initial address
for at least 10 CCLK cycles. For a power-on configuration, the initial address is 0x00000000.
For a MultiBoot-triggered configuration, the address can be different.
8. The FPGA registers the 8-bit or 16-bit data word on the rising edge of CCLK.
9. For a multi-FPGA parallel configuration daisy chain, CSO_B can drive Low to select the next
FPGA in the daisy chain for bitstream loading from the data bus. Only parallel daisy chains are
supported from the BPI mode. See Chapter 9, Multiple FPGA Configuration.
10. Near the last 8-bit or 16-bit word (depending on the flash device) of the bitstream, the FPGA
begins its startup sequence.
11. If the FPGA detects a CRC error during bitstream delivery, the FPGA drives its INIT_B pin
Low. DONE stays Low.
12. If the FPGA successfully receives the bitstream, the FPGA releases its DONE pin during the
startup sequence, and an internal resistor pulls DONE High.
13. During the startup sequence, the multi-purpose pins are activated with their configurations from
the user’s FPGA design. If not used in the FPGA design, the high-Z FCS_B pin is pulled High
by the external resistor to disable the flash.
14. At the end of configuration, the master CCLK is disabled into a high-Z state by default.
15. Multi-function configuration I/O switches to User mode after the GTS_cycle. By default, this is
one cycle after DONE goes High.
frequency, using it to load the rest of the configuration. See the BitGen section of UG628, Command
Line Tools User Guide for details on BitGen options.
X-Ref Target - Figure 2-19
CCLK
FCS_B
FOE_B
FWE_B
A[02:00] 7 0 1 2 3 4 5 6 7
D[n:00] D0 D1 D2 D3 D4 D5 D6 D7
CCLK = 2 CCLK = 2
PAGE_SIZE = 4 PAGE_SIZE = 4
UG470_c2_18_110513
Figure 2-19: BPI Waveforms (Page Size = 4 and First Access CCLK = 2)
IEEE 1149.1
TMS
JTAG Port
VCCO_0
N/C TCK
N/C TDO
14 TDI VCCO_0
Mode = Master BPI 0 M2
1 M1
Parallel NOR Flash
VCCO_0 0 M0
PC28FxxxP30T
330
4.7 k
4.7 k
4.7 k
4.7 k
VCCO
VCCO DONE
PROGRAM_B
VCCO_0 RST INIT_B
4.7 k
4.7 k
4.7 k VCCBATT
CLK CCLK
WP WE FWE_B
OE FOE_B
ADV ADV_B VCCO_15
A[n:1] A[28:16] RS0 N/C
RS1 N/C
A[15:00] VCCO_14
CSO_B N/C
CE FCS_B
DQ[15:0] D[15:00] PUDC_B
N/C EMCCLK
WAIT N/C
GND
GND
PROGRAM_B
UG470_c2_19_102417
Figure 2-20: 7 Series FPGA Master BPI Configuration Interface Synchronous Read Example
8. The RS[1:0] pins are not connected as shown in Figure 2-20. These output pins are optional and
can be used for MultiBoot configuration. See Chapter 7, Reconfiguration and MultiBoot.
9. The DONE pin is an open-drain output. See Table 2-4, page 20 for DONE signal details.
10. The JTAG connections are shown for a simple, single-device JTAG scan chain. When multiple
devices are on the JTAG scan chain, the proper IEEE Std 1149.1 daisy-chain technique should
be used to connect the JTAG signals. The TCK signal integrity is critical for JTAG operation.
Route, terminate, and if necessary, buffer the TCK signal appropriately to ensure signal
integrity for the devices in the JTAG scan chain.
11. The FPGA mode (M[2:0]) pins are shown set to Master BPI mode (010). The implementation
of a board-level option that enables the user to change the FPGA mode pins to JTAG mode
(101) is recommended to enable JTAG-based debug capability for the FPGA during design.
This is not required, but the JTAG mode setting ensures that there is no interference from the
Master BPI configuration during debug.
12. The FPGA PUDC_B pin is tied to ground in this sample schematic enabling internal pull-ups
during configuration, including the non-dedicated configuration I/Os. PUDC_B can
alternatively be tied High setting the non-dedicated configuration I/Os to 3-state during
configuration.
13. The 7 series FPGA supports AES decryption in the 16-bit wide configuration mode but is not
used in this setup. Thus the VCCBATT decryptor key battery power supply is tied to GND.
14. See the respective 7 series FPGAs data sheet for the VCCINT supply voltage.
The FPGA’s master configuration clock has a tolerance of TMCCKTOL. Due to the master
configuration clock tolerance (TMCCKTOL), the ConfigRate option must be checked so that the
period for the worst-case (fastest) master CCLK frequency is greater than the sum of the FPGA
address valid time, BPI flash access time, and FPGA setup time, as shown in Equation 2-2.
1
------------------------------------------------------------------------------------------------ ≥ T BPICCO + T ACC + T BPIDCC Equation 2-2
ConfigRate × ( 1 + FMCCKTOL MAX )
JTAG Interface
From the four-pin JTAG interface, the 7 series FPGA can be configured using AMD tools and a
AMD cable, directly from a processor or CPLD customer-specific design, or using third-party
boundary-scan tools. The JTAG specific mode setting is (M[2:0] = 101). AMD tools use the JTAG
interface, including ISE and the AMD ChipScope™ Pro tool in the ISE Design Suite, and in the
Vivado Design Suite lab tools.
Although JTAG commands have priority over mode settings, it is recommended to have an M[2:0]
option to enable the JTAG mode and operations without potential conflict from other configuration
modes. For more information, refer to Chapter 3, Boundary-Scan and JTAG Configuration.
The four mandatory TAP pins are outlined in Table 3-1. These pins are located in configuration bank
0. For 2.5V or 3.3V operation, set VCCO_0 to 2.5V or 3.3V and connect CFGBVS to VCCO_0 (see
Configuration Banks Voltage Select).
TMS
TDI
TTAPTCK TTCKTAP
TCK
TTCKTDO
JTAG Header
7 Series FPGA
TDO TDO
TDI TDI
TMS TMS
TCK TCK
Device
UG470_c3_02_061710
JTAG Header
TDO
7 Series 7 Series 7 Series
FPGA FPGA FPGA
TDI TDI TDO TDI TDO TDI TDO
TMS TMS TMS TMS
TCK TCK TCK TCK
PROGRAM_B PROGRAM_B PROGRAM_B
If JTAG is the only configuration mode, then PROGRAM_B, INIT_B, and DONE can each be
connected to separate pull-up resistors.
The devices in the JTAG chain are configured one at a time. The multiple device configuration steps
can be applied to any size chain as long as an excellent signal integrity is maintained. The AMD
tools automatically discover the devices in the chain, starting from the one nearest to TDI coming
from the JTAG header.
Providing Power
To carry out boundary-scan testing, SelectIO and transceiver pins need to be set up. For SelectIO
pins, the SAMPLE instruction will force the input buffer to LVCMOS. If the input level is floating
(without a pull-up), then additional current draw can be seen. For transceiver pins, the SAMPLE
instruction will turn on the band-gap and pad driver to allow for AC-JTAG (IEEE 1149.6) operation.
This will increase power consumption for an unconfigured device as the transceiver will be in power
down mode. The current consumed will not be higher than normal operation.
Background
In the 7 series family of FPGAs, the configuration memory is used primarily to implement user
logic, connectivity, and I/Os, but it is also used for other purposes. For example, it is used to specify
a variety of static conditions in functional blocks, such as clock management tiles (CMTs).
Sometimes an application requires a change in these conditions in the functional blocks while the
block is operational. This can be accomplished by partial reconfiguration using the JTAG, ICAPE2,
Serial, or SelectMAP ports. However, the dynamic reconfiguration port that is an integral part of
many functional block simplifies this process greatly. Such configuration ports exist in CMTs,
MMCMs/PLLs, XADC, serial transceivers, and the PCIe® block (not I/Os).
Overview
This chapter generically describes the addressable, parallel write/read configuration memory that is
implemented in each functional block that might require reconfiguration. This memory has these
attributes:
• It is directly accessible from the FPGA logic. Configuration bits can be written to and/or read
from depending on their function.
• Each bit of memory is initialized with the value of the corresponding configuration memory bit
in the bitstream. Memory bits can also be changed later through the ICAPE2.
• The output of each memory bit drives the functional block logic, so the content of this memory
determines the configuration of the functional block.
The address space can include status (read-only) and function enables (write-only). Read-only and
write-only operations can share the same address space. Figure 4-1 shows how the configuration
bits drive the logic in functional blocks directly in earlier FPGA families, and Figure 4-2 shows how
the reconfiguration logic changes the flow to read or write the configuration bits.
X-Ref Target - Figure 4-1
Reconfigurable Bits
to Block Logic
All Configuration Bits
for This Block
Non-Reconfigurable Bits
to Block Logic
Figure 4-3 is the same as Figure 4-2, except the port between the Logic Plane and Functional Block
is expanded to show the actual signal names and directions.
X-Ref Target - Figure 4-3
DCLK
DEN Block Status
Standard DWE
Dynamic (Read-Only Ports)
DADDR[m:0]
Reconfiguration Controller
DI[n:0]
Port (to Logic) Function Enables
DO[n:0]
DRDY (Write-Only Ports)
Logic Plane
Reconfigurable Bits
to Block Logic
All Configuration Bits
for This Block
Non-Reconfigurable Bits
to Block Logic
DCLK. The port asserts DRDY for one clock cycle when it is ready to accept more data. The output
data is not registered in the functional blocks. Output (read) data is available after some cycles
following the cycle that DEN and DADDR are asserted. The availability of output data is indicated
by the assertion of DRDY.
Absolute timing parameters, such as maximum DCLK frequency, are defined in the respective
7 series FPGAs data sheet.
Table 4-1: Port Signal Definitions
Signal Name Direction(1) Description
The rising edge of this signal is the timing reference for all the
DCLK Input other port signals. Normally, DCLK is driven with a global clock
buffer.
This signal enables all port operations. If DWE is FALSE, it is a
DEN Input read operation, otherwise a write operation.
DEN should only be pulsed for one DCLK cycle.
When active, this signal enables a write operation to the port (see
DWE Input
DEN).
The value on this bus specifies the individual cell that is written
DADDR[m:0] Input or read on the next cycle of DCLK. The address is presented in
the cycle that DEN is active.
The value on this bus is the data that is written to the addressed
cell. The data is presented in the cycle that DEN and DWE are
DI[n:0] Input active, and is captured in a register at the end of that cycle, but the
actual write occurs at an unspecified time before DRDY is
returned.
If DWE was inactive when DEN was activated, the value on this
DO[n:0] Output bus when DRDY goes active is the data read from the addressed
cell. At all other times, the value on DO[n:0] is undefined.
This signal is a response to DEN to indicate that the DRP cycle is
complete and another DRP cycle can be initiated. In the case of a
port read, the DO bus must be captured on the rising edge of
DRDY Output
DCLK in the cycle that DRDY is active. The earliest that DEN
can go active to start the next port cycle is the same clock cycle
that DRDY is active.
Notes:
1. Input denotes input (write) to the DRP.
For more details on functional blocks with Dynamic Reconfiguration Ports, see the following
documentation.
* XAPP888, MMCM and PLL Dynamic Reconfiguration
* UG480, 7 Series FPGAs XADC User Guide
* UG476, 7 Series FPGAs GTX/GTH Transceiver User Guide
* UG482, 7 Series FPGAs GTP Transceiver User Guide
* PG054, 7 Series FPGAs Integrated Block for PCI Express Product Guide
Configuration Details
Configuration Data File Formats
AMD design tools can generate configuration data files in a number of different formats, as
described in Table 5-1. In the AMD ISE™ tools, BitGen converts the post-PAR NCD file into a
configuration file or a bitstream. PROMGen, the PROM file generator, converts one or more
bitstream files into a PROM file. The equivalent AMD Vivado™ Tcl commands are
WRITE_BITSTREAM and WRITE_CFGMEM. PROM files can be generated in a number of
different file formats and do not need to be used with a PROM. They can be stored anywhere and
delivered by any means.
The 7 series FPGA bitstream contains commands to the FPGA configuration logic as well as
configuration data.
A 7 series FPGA bitstream consists of three sections:
• Bus Width Auto Detection
• Sync Word
• FPGA configuration
Bus width auto detection is transparent to most users, because all configuration bitstreams (BIT or
RBT files) generated by the AMD tools include the Bus Width Auto Detection pattern. These
patterns are ignored by the configuration logic if the Mode pins are set to Master Serial, Slave Serial,
JTAG, or SPI mode.
For the x8 bus, the configuration bus width detection logic first finds 0xBB on the D[0:7] pins,
followed by 0x11. For the x16 bus, the configuration bus width detection logic first finds 0xBB on
D[0:7] followed by 0x22. For the x32 bus, the configuration bus width detection logic first finds
0xBB, on D[0:7], followed by 0x44.
If the immediate byte after 0xBB is not 0x11, 0x22, or 0x44, the bus width state machine is reset
to search for the next 0xBB until a valid sequence is found. Then it switches to the appropriate
external bus width and starts looking for the Sync word. When the bus width is detected, the
SelectMAP interface is locked to that bus width until a power cycle, PROGRAM_B pulse,
JPROGRAM reset, or IPROG reset is issued.
Sync Word
A special Sync word is used to allow configuration logic to align at a 32-bit word boundary. No
packet is processed by the FPGA until the Sync word is found. The bus width must be detected
successfully for parallel configuration modes before the Sync word can be detected. Table 5-3
shows the Sync word in an unswapped bitstream format.
Bit Swapping
Bit swapping is the swapping of the bits within a byte. The MCS PROM file format is always bit
swapped unless the PROMGen -spi option or write_cfgmem -interface
spi1|spi2|spi4 option for the SPI Configuration mode is used. The HEX file format can be bit
swapped or not bit swapped, depending on user options. The bitstream files (BIT, RBT, BIN) are
never bit swapped.
The HEX file format contains only configuration data. The other PROM file formats include address
and checksum information that should not be sent to the FPGA. The address and checksum
information is used by some third-party device programmers, but is not programmed into the
PROM.
Figure 5-1 shows how two bytes of data (0xABCD) are bit swapped.
X-Ref Target - Figure 5-1
Hex: A B C D
SelectMAP D0 D1 D2 D3 D4 D5 D6 D7 D0 D1 D2 D3 D4 D5 D6 D7
Data Pin:
Binary: 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1
Bit-
Swapped 1 1 0 1 0 1 0 1 1 0 1 1 0 0 1 1
Binary:
SelectMAP
Data Pin:
D7 D6 D5 D4 D3 D2 D1 D0 D7 D6 D5 D4 D3 D2 D1 D0
Bit-
Swapped D 5 B 3
Hex: UG470_c5_01_072610
The MSB of each byte goes to the D0 pin regardless of the orientation of the data:
• In the bit-swapped version of the data, the bit that goes to D0 is the right-most bit
• In the non-bit-swapped data, the bit that goes to D0 is the left-most bit.
Whether or not data must be bit swapped is entirely application-dependent. Bit swapping is
applicable for Serial, SelectMAP, or BPI PROM files, and for the ICAPE2 interface.
Notes:
1. [31:24] changes from 0xAA to 0x55 after bit swapping.
Table 5-5: Sync Word Data Sequence Example for x8, x16, and x32 Modes
CCLK Cycle 1 2 3 4
D[7:0] pins for x8 0x55 0x99 0xAA 0x66
D[15:0] pins for x16 0x5599 0xAA66
D[31:0] pins for x32 0x5599AA66
Delaying Configuration
To delay configuration, the INIT_B pin should be held Low during initialization (Figure 5-4). When
INIT_B has gone High, configuration cannot be delayed by subsequently pulling INIT_B Low.
The signals relating to initialization and delaying configuration are defined in Table 5-6.
Notes:
1. Information on the 7 series FPGA status register is available in Table 5-29, page 106. Information on accessing the device status register via
SelectMAP is available in Chapter 6, Readback and Configuration Verification.
2. The Status type is an internal status signal without a corresponding pin.
Configuration Sequence
While each of the configuration interfaces is different, the basic steps for configuring a 7 series
device are the same for all modes. Figure 5-2 shows the 7 series FPGA configuration process. The
following subsections describe each step in detail, where the current step is highlighted in gray at the
beginning of each subsection.
Steps
1 2 3 4 5 6 7 8
Clear Load
Device Sample Mode Device ID Startup
Configuration Synchronization Configuration CRC Check
Power-Up Pins Check Sequence
Memory Data
Bitstream
Setup Loading
Start Finish
UG470_c5_02_072610
The 7 series device is initialized and the configuration mode is determined by sampling the mode
pins in three setup steps.
Steps
1 2 3 4 5 6 7 8
Clear Load
Device Sample Mode Device ID Startup
Configuration Synchronization Configuration CRC Check
Power-Up Pins Check Sequence
Memory Data
Bitstream
Setup Loading
Start Finish
UG470_c5_03_072610
For configuration, 7 series devices require power on the VCCO_0, VCCAUX, VCCBRAM, and VCCINT
pins. Power sequencing requirements are described in the respective 7 series FPGAs data sheet.
All JTAG configuration pins are located in a separate, dedicated bank with a dedicated voltage
supply (VCCO_0). The multi-function pins are located in Banks 14 and 15. All dedicated input pins
operate at the VCCO_0 LVCMOS level. All active dedicated output pins operate at the VCCO_0
voltage level with the output standard set to LVCMOS, 12 mA drive, Fast slew rate. If the Persist
option is used, the dual-mode I/O for the selected configuration mode remains active after
configuration, with the I/O standard set to LVCMOS, 12 mA drive, Slow slew rate.
For all modes that use multi-function I/O, the associated VCCO_14 or VCCO_15 must be connected to
the appropriate voltage to match the I/O standard of the configuration device. The pins are also
LVCMOS, 12 mA drive, Fast slew rate during configuration.
For power-up, the VCCINT power pins must be supplied with 1.0V or 0.9V (for -2L) sources. None
of the I/O voltage supplies except VCCO_0 needs to be powered for 7 series FPGA configuration in
JTAG mode. When configuration modes are selected that use the multi-function pins (i.e., Serial,
Master BPI, SPI, SelectMAP), VCCO_14, VCCO_15, or both must be also be supplied. Table 5-7
shows the power supplies required for configuration. Table 5-8 shows the timing for power-up.
Refer to the respective 7 series FPGAs data sheet for voltage ratings.
Notes:
1. VCCBATT is required only when an AES key is stored in the FPGA's battery-backed RAM for decryption of an
encrypted bitstream.
2. See Table 2-9 for configuration bank voltages supported by each device family.
Notes:
1. See the respective 7 series FPGAs data sheet for power-up timing characteristics.
Last to ramp of
VCCINT/VCCAUX/ TPOR
VCCBRAM/VCCO_0
INIT_B
TICCK
To ensure proper power-on behavior, the guidelines in the respective 7 series FPGAs data sheet must
be followed. The power supplies should ramp monotonically within the power supply ramp time
range specified in the respective 7 series FPGAs data sheet. All supply voltages should be within the
recommended operating ranges; any dips in VCCINT below VDRINT or VCCAUX below VDRI (see the
respective 7 series FPGAs data sheet for specific values) can result in loss of configuration data.
If a monotonic ramp is not possible, delay configuration by holding the INIT_B Low (see Delaying
Configuration) while the system power reaches the minimum recommended operating voltages for
VCCO_0, VCCAUX, VCCBRAM, and VCCINT. A few configuration modes involve bank 14 or bank 15,
or both. When these banks are involved in configuration, their respective voltage supplies, VCCO_14
and/or VCCO_15, must also reach their minimum recommended operating voltages prior to the
release of INIT_B to High.
After power-up, the device can be re-configured by toggling the PROGRAM_B pin Low (see
Figure 5-5).
X-Ref Target - Figure 5-5
tPROGRAM
PROGRAM_B
tPL
INIT_B
tlCCK
CCLK
Figure 5-5: Re-configuring the Device by Toggling the PROGRAM_B Pin Low
Steps
1 2 3 4 5 6 7 8
Clear Load
Device Sample Mode Device ID Startup
Configuration Synchronization Configuration CRC Check
Power-Up Pins Check Sequence
Memory Data
Bitstream
Setup Loading
Start Finish
UG470_c5_05_101510
Configuration memory is cleared sequentially any time the device is powered up, after the
PROGRAM_B pin is pulsed Low, after the JTAG JPROGRAM instruction or the IPROG command
is used, or during a fallback retry configuration sequence. Block RAM is reset to its initial state, and
flip-flops are re-initialized through the assertion of the global set reset (GSR). During this time, with
the exception of a few configuration output pins, the I/Os are placed in a High-Z state through the
use of the global three-state (GTS) and will have an internal pull-up if PUDC_B is low. INIT_B is
internally driven Low during initialization, then released after TPOR (Figure 5-4) for the power-up
case, and TPL for other cases. If the INIT_B pin is held Low externally, the device waits at this point
in the initialization process until the pin is released, and the TPOR or TPL delay is met.
The minimum Low pulse time for PROGRAM_B is defined by the TPROGRAM timing parameter.
Steps
1 2 3 4 5 6 7 8
Clear Load
Device Sample Mode Device ID Startup
Configuration Synchronization Configuration CRC Check
Power-Up Pins Check Sequence
Memory Data
Bitstream
Setup Loading
Start Finish
UG470_c5_06_101510
When the INIT_B pin transitions to High, the device samples the M[2:0] mode pins and begins
driving CCLK if in the Master modes. At this point, the device begins sampling the configuration
data input pins on the rising edge of the configuration clock. For BPI and SelectMAP modes, the bus
width is initially x8, and the Status register reflects this. After the bus width detection sequence, the
Status register is updated. The mode pins are sampled again only upon reconfiguration through a
power cycle or assertion of PROGRAM_B.
Synchronization (Step 4)
X-Ref Target - Figure 5-8
Steps
1 2 3 4 5 6 7 8
Clear Load
Device Sample Mode Device ID Startup
Configuration Synchronization Configuration CRC Check
Power-Up Pins Check Sequence
Memory Data
Bitstream
Loading
Start Finish
UG470_c5_07_101510
For BPI, Slave SelectMAP, and Master SelectMAP modes, the bus width must be first detected
(refer to Bus Width Auto Detection). The bus width detection pattern is ignored by Slave Serial,
Master Serial, SPI, and JTAG modes. Then a special 32-bit synchronization word (0xAA995566)
must be sent to the configuration logic. The synchronization word alerts the device to upcoming
configuration data and aligns the configuration data with the internal configuration logic. Any data
on the configuration input pins prior to synchronization is ignored, except the “Bus Width Auto
Detection” sequence.
Synchronization is transparent to most users because all configuration bitstreams (BIT files)
generated by the tools include both the bus width detection pattern and the synchronization word.
Table 5-9 shows signals relating to synchronization.
Notes:
1. Information on the 7 series FPGA status register is available in Table 5-29. Information on accessing the device status register via JTAG or
SelectMAP is available in Chapter 6, Readback and Configuration Verification.
Steps
1 2 3 4 5 6 7 8
Clear Load
Device Sample Mode Device ID Startup
Configuration Synchronization Configuration CRC Check
Power-Up Pins Check Sequence
Memory Data
Bitstream
Loading
Start Finish
UG470_c5_08_072610
After the device is synchronized, a device ID check must pass before the configuration data frames
can be loaded. This prevents a configuration with a bitstream that is formatted for a different device.
If an ID error occurs during configuration, the device attempts to do a fallback reconfiguration.
The device ID check is built into the bitstream, making this step transparent to most designers. The
device ID check is performed through commands in the bitstream to the configuration logic, not
through the JTAG IDCODE register in this case.
The 7 series FPGA JTAG ID Code register has this format:
vvvv:fffffff:aaaaaaaaa:ccccccccccc1
where:
v = version
f = 7-bit family code
a = 9-bit array code (includes 4-bit sub-family and 5-bit device code)
c = company code
Steps
1 2 3 4 5 6 7 8
Clear Load
Device Sample Mode Device ID Startup
Configuration Synchronization Configuration CRC Check
Power-Up Pins Check Sequence
Memory Data
Bitstream
Loading
Start Finish
UG470_c5_09_072610
After the synchronization word is loaded and the device ID has been checked, the configuration data
frames are loaded (see Configuration Memory Frames, page 100). This process is transparent to
most users.
Steps
1 2 3 4 5 6 7 8
Clear Load
Device Sample Mode Device ID Startup
Configuration Synchronization Configuration CRC Check
Power-Up Pins Check Sequence
Memory Data
Bitstream
Loading
Start Finish
UG470_c5_10_072610
As the configuration data frames are loaded, the device calculates a Cyclic Redundancy Check
(CRC) value from the configuration data packets. After the configuration data frames are loaded, the
configuration bitstream can issue a Check CRC instruction to the device, followed by an expected
CRC value. If the CRC value calculated by the device does not match the expected CRC value in the
bitstream, the device pulls INIT_B Low and aborts configuration. The CRC check is included in the
configuration bitstream by default, although the designer can disable it if desired (see the BitGen
section of UG628, Command Line Tools User Guide). If the CRC check is disabled, there is a risk of
loading incorrect configuration data frames, causing incorrect design behavior or damage to the
device.
For encrypted bitstreams (when the BITSTREAM.ENCRYPTION.ENCRYPT property is Yes), the
CRC check is disabled and instead the HMAC authenticates the encrypted bitstream data. Errors in
the bitstream data are reported in the BOOTSTS register as an HMAC error.
If a CRC error occurs during configuration from a mode where the FPGA is the configuration
master, the device can attempt to do a fallback reconfiguration. In BPI and SPI modes, if fallback
reconfiguration fails again, the BPI/SPI interface can only be resynchronized by pulsing the
PROGRAM_B pin and restarting the configuration process from the beginning. The JTAG interface
is still responsive and the device is still alive, only the BPI/SPI interface is inoperable. In
SelectMAP modes, either the PROGRAM_B pin can be pulsed Low or an ABORT sequence can be
initiated (see SelectMAP Configuration Mode in Chapter 2).
7 series devices use a 32-bit CRC check. The CRC check is designed to catch errors in transmitting
the configuration bitstream. There is a scenario where errors in transmitting the configuration
bitstream can be missed by the CRC check: certain clocking errors, such as double-clocking, can
cause loss of synchronization between the 32-bit bitstream packets and the configuration logic.
After synchronization is lost, any subsequent commands are not understood, including the command
to check the CRC. In this situation, configuration fails with DONE Low and INIT_B High because
the CRC was ignored. In BPI Mode asynchronous read, the address counter eventually overflows or
underflows to cause wraparound, which triggers fallback reconfiguration. BPI synchronous read
mode does not support the wraparound error condition.
Startup (Step 8)
X-Ref Target - Figure 5-12
Steps
1 2 3 4 5 6 7 8
Clear Load
Device Sample Mode Device ID Startup
Configuration Synchronization Configuration CRC Check
Power-Up Pins Check Sequence
Memory Data
Bitstream
Loading
Start Finish
UG470_c5_11_072610
After the configuration frames are loaded, the bitstream instructs the device to enter the startup
sequence. The startup sequence is controlled by an 8-phase (phases 0–7) sequential state machine.
The startup sequencer performs the tasks outlined in Table 5-10.
The specific order of startup events (except for EOS assertion) is user-programmable through
bitstream options (see UG628, Command Line Tools User Guide). Table 5-10 shows the general
sequence of events, although the specific phase for each of these startup events is
user-programmable (EOS is always asserted in the last phase). Refer to Chapter 2, Configuration
Interfaces for important startup option guidelines. By default, startup events occur as shown in
Table 5-11.
The startup sequence can be forced to wait for the MMCMs to lock or for DCI to match with the
appropriate options. These options are typically set to prevent DONE, GTS, and GWE from being
asserted (preventing device operation) before the MMCMs have locked and/or DCI has matched.
The DONE signal is released by the startup sequencer on the cycle indicated by the user, but the
startup sequencer does not proceed until the DONE pin actually sees a logic High. The DONE pin
is an open-drain bidirectional signal. By releasing the DONE pin, the device stops driving a logic
Low, and the pin is pulled up by an internal pull-up resistor. DONE_PIPE is enabled by default to
add a register between the DONE pin and the configuration logic. See Table 2-4 for DONE signal
changes in the 7 series FPGAs. Table 5-12 shows signals relating to the startup sequencer.
Figure 5-13 shows the waveforms relating to the startup sequencer.
PROGRAM_B
INIT_B
DONE
GTS
GWE
EOS
CCLK
Table 5-13: I/O Transition at End of Startup in Spartan 7, Artix 7, and Kintex 7
Devices
VCCO_0 VCCO_14 or VCCO_15 Pin State Input Transition
2.5V or 3.3V 1.8V or lower 0 or floating 0-1-0
1.8V or lower Any Any None
Any 2.5V or 3.3V Any None
Any Any 1 None
STARTUPE2 Primitive
The STARTUPE2 primitive (see Figure 5-14) provides an interface between the user logic and the
configuration logic control and status signals. Many of the pins are related to the startup sequence,
including the CLK signal to allow user specification of the startup clock. STARTUPE2 can be
instantiated in a design to provide user control over selected configuration signals during device
operation.
STARTUPE2
CLK CFGCLK
GSR CFGMCLK
GTS EOS
KEYCLEARB PREQ
PACK
USRCCLKO
USRCCLKTS
USRDONEO
USRDONETS
UG470_c5_14_110413
USRCCLKO
The USRCCLKO input on the STARTUPE2 primitive allows the user logic to drive the CCLK pin
after configuration. USRCCLKO can also clock the POST_CRC readback logic when both are used
(see Table 8-1). The delay from the internal USRCCLKO to the CCLK pin is defined as
TUSRCCLKO in the data sheet. The first three clock cycles on USRCCLKO after End of Startup
are used to switch the clock source and will not be output on the external CCLK pin. This helps
prevent CCLK glitches in the transition from the internal oscillator to the user clock. However, if the
External Master CCLK pin EMCCLK is used for configuration, it will continue to be seen on CCLK
until the three clock cycles of USRCCLKO allow the transition to a new user clock.
Bitstream Security
This section discusses the available types of FPGA bitstream security including: bitstream
encryption and bitstream authentication.
A basic form of security is to prevent readback. The bitstream Security setting can be set to Level1
(disables readback), or Level2 (disables both readback and reconfiguration).
Bitstream Encryption
7 series devices have on-chip Advanced Encryption Standard (AES) decryption logic to provide a
high degree of design security. Without knowledge of the encryption key, potential pirates cannot
analyze an externally intercepted bitstream to understand or clone the design. Encrypted 7 series
FPGA designs cannot be copied or reverse-engineered.
The 7 series FPGA AES system consists of software-based bitstream encryption and on-chip
bitstream decryption with dedicated memory for storing the encryption key. Using the AMD tools,
the user generates the encryption key and the encrypted bitstream. 7 series devices store the
encryption key internally in either dedicated RAM, backed up by a small externally connected
battery, or in the eFUSE. The encryption key can only be programmed onto the device through the
JTAG port.
During configuration, the 7 series device performs the reverse operation, decrypting the incoming
bitstream. The 7 series FPGA AES encryption logic uses a 256-bit encryption key.
The on-chip AES decryption logic cannot be used for any purpose other than bitstream decryption;
i.e., the AES decryption logic is not available to the user design and cannot be used to decrypt any
data other than the configuration bitstream. Spartan 7 7S6 and 7S15 FPGAs do not support AES
encryption.
AES Overview
The 7 series FPGA encryption system uses the Advanced Encryption Standard (AES) encryption
algorithm. AES is an official standard supported by the National Institute of Standards and
Technology (NIST) and the U.S. Department of Commerce
(https://csrc.nist.gov/publications/fips/fips197/fips-197.pdf).
The 7 series FPGA AES encryption system uses a 256-bit encryption key (the alternate key lengths
of 128 and 192 bits described by NIST are not implemented) to encrypt or decrypt blocks of 128 bits
of data at a time. According to NIST, there are 1.1 x 1077 possible key combinations for a 256-bit
key.
Symmetric encryption algorithms such as AES use the same key for encryption and decryption. The
security of the data is therefore dependent on the secrecy of the key.
read the configuration memory through JTAG or SelectMAP readback, regardless of the bitstream
security setting.
While the device holds an encryption key, a non-encrypted bitstream can be used to configure the
device only after POR or PROGRAM_B is asserted, thus clearing out the configuration memory. In
this case the key is ignored. After configuring with a non-encrypted bitstream, readback is possible
(if allowed by the BitGen security setting). The encryption key still cannot be read out of the device,
preventing the use of Trojan Horse bitstreams to defeat the 7 series FPGA encryption scheme.
Most methods of configuration are not affected by encryption. 7 Series FPGAs allow for bitstreams
to be created with both compression and encryption. An encrypted bitstream can be delivered
through any configuration interface: JTAG, serial, SPI (including x1, x2, and x4 modes), BPI,
SelectMAP, and ICAPE2. However, an encrypted bitstream has a few limitations or timing
differences for some of the configuration methods. The Slave SelectMAP and ICAPE2 interfaces
accept encrypted bitstreams only through the x8 bus. The Master SelectMAP and Master BPI
interfaces accept encrypted bitstreams through either the x8 or x16 data bus, but for the x16 bus
width, the master CCLK frequency is slowed to half of the ConfigRate, or half of the EMCCLK
rate when ExtMasterCCLK_en is used. The slower CCLK begins early in the bitstream when the
DEC (AES encryptor enable) bit is read, before the CCLK is updated based on the ConfigRate
frequency or the external EMCCLK frequency.
The encrypted bitstream must configure the entire device because partial reconfiguration through
the external configuration interfaces is not permitted for encrypted bitstreams. After configuration,
the device cannot be reconfigured without toggling the PROGRAM_B pin, cycling power, or
issuing the JPROGRAM instruction. Fallback reconfiguration and IPROG reconfiguration are
enabled in 7 series FPGAs even when encryption is turned on. Readback is available through the
ICAPE2 primitive (see Bitstream Encryption and Internal Configuration Access Port (ICAPE2)).
None of these events resets the key if VCCBATT or VCCAUX is maintained.
A mismatch between the key in the encrypted bitstream and the key stored in the device causes
configuration to fail with the INIT_B pin pulsing Low and then back High if fallback is enabled, and
the DONE pin remaining Low.
For more information on the ICAPE2 primitive, see UG953, Vivado Design Suite 7 Series FPGA
and Zynq-7000 SoC Libraries Guide.
VCCBATT
When an encryption key is stored in the FPGA's battery-backed RAM, the encryption key memory
cells are volatile and must receive continuous power to retain their contents. During normal
operation, these memory cells are powered by the auxiliary voltage input (VCCAUX), although a
separate VCCBATT power input is provided for retaining the key when VCCAUX is removed. Because
VCCBATT draws very little current (on the order of nanoamperes), a small watch battery is suitable
for this supply. (To estimate the battery life, refer to VCCBATT DC Characteristics in the respective
7 series FPGAs data sheet and the battery specifications.)
VCCBATT does not draw any current and can be removed while VCCAUX is applied. VCCBATT cannot
be used for any purpose other than retaining the encryption keys when VCCAUX is removed.
Bitstream Authentication
Overview
7 series devices have an on-chip bitstream keyed-Hash Message Authentication Code (HMAC)
algorithm implemented in hardware to provide additional security beyond that provided by the AES
decryption alone. Without knowledge of the AES and HMAC keys, the bitstream cannot be loaded,
modified, intercepted, or cloned. AES provides the basic design security to protect the design from
copying or reverse engineering, while HMAC provides assurance that the bitstream provided for the
configuration of the FPGA was the unmodified bitstream allowed to load. Any bitstream tampering
including single bit flips are detected.
The HMAC algorithm uses a key that is provided to the AMD software. Alternately, the software
can automatically generate a random key. The HMAC key is separate and different from the AES
key. The AMD software then utilizes the key and the SHA algorithm to generate a 256-bit result
called the Message Authentication Code (MAC). The MAC, transmitted as part of the AES
encrypted bitstream, verifies both data integrity and authenticity of the bitstream. Authentication
covers the entire bitstream for all types of control and data. When used, the 7 series FPGA security
solution always consists of both HMAC and AES. Similar functionality is provided by the Vivado
lab tools.
Implementation
The 7 series FPGA HMAC authentication system consists of an HMAC component in the AMD
software and a hardware component integrated into every 7 series FPGA. Both components
generate a 256-bit MAC based on a key and the Secure Hash Algorithm (SHA256). Bitstream
generation creates a MAC that is embedded in the AES encrypted bitstream. During configuration,
the HMAC/SHA256 engine in the FPGA calculates the MAC from the hardware AES decrypted
data, and compares it with the MAC provided in the encrypted bitstream. If the two MACs match,
the configuration goes to completion through the startup cycle. If the two MACs do not match and
fallback is enabled, the fallback bitstream is loaded after the entire device configuration has been
cleared. If fallback is not enabled, the configuration logic disables the configuration interface,
blocking any access to the FPGA. Pulsing the PROGRAM_B signal or power-on reset is required to
reset the configuration interface.
For more information on using the various security protection features, see XAPP1084, Developing
Tamper Resistant Designs with Xilinx Virtex-6 and 7 Series FPGAs.
eFUSE
eFUSE is a nonvolatile one-time-programmable technology used for selected configuration settings.
The fuse link is programmed (or burned or blown) by flowing a large current for a specific amount
of time. User-programmable eFUSEs can be programmed with the AMD configuration tools. The
device should be unconfigured during eFUSE programming.
The resistance of a programmed fuse link is typically a few orders of magnitude higher than that of
a pristine (unprogrammed) fuse. A programmed fuse is assigned a logic value of 1, and a pristine
fuse has a logic value of 0.
eFUSE Registers
A 7 series FPGA has a total of four eFUSE registers. Table 5-16 lists the eFUSE registers in 7 series
devices with their sizes and usage.
eFUSE bits are one-time programmable. The FPGA logic can access only the FUSE_USER register
value and the 57-bit Device DNA subset of the FUSE_DNA register value. All other eFUSE bits are
not accessible from the FPGA logic.
JTAG Instructions
eFUSE registers can be read through JTAG ports. eFUSE programming can be done only via JTAG.
Table 5-18 lists eFUSE-related JTAG instructions. The JTAG instruction register is 6 bits long,
unless it is a device implemented with stacked silicon interconnect technology with super logic
regions. See Table 1-1, page 10 and the 3D ICs Based on SSI Technology, page 14 section for
details.
Notes:
1. Code is longer for devices based on SSI technology (7V2000T, 7VX1140T, 7VH580T, 7VH870T). See the
BSDL files for device-specific information.
eFUSE Programming
See the following documents for more information on eFUSE programming:
• UG908, Vivado Programming and Debugging User Guide
• XAPP1239, Using Encryption to Secure a 7 Series FPGA Bitstream Application Note
Bitstream Composition
Configuration can begin after the device is powered and initialization has finished, as indicated by
the INIT_B pin being released. After initialization, the packet processor ignores all data presented
on the configuration interface until it recognizes a specific data pattern, typically the sync word. For
external parallel (BPI or SelectMAP mode) interfaces, the bus width auto detection pattern first sets
the configuration interface bus width. See Bus Width Auto Detection, page 74 for details. After the
bus width is set and for all other configuration interfaces, all data on the configuration interface is
ignored until the synchronization word is recognized. See Sync Word, page 75 for details. After
synchronization, the configuration logic processes each 32-bit data word as a configuration packet
or component of a multiple word configuration packet. See Configuration Packets, page 100 for
details.
Table 5-19 shows the composition of a sample XC7K325T bitstream, generated using default
settings.
Configuration Packets
All 7 series FPGA bitstream commands are executed by reading or writing to the configuration
registers.
Packet Types
The FPGA bitstream consists of two packet types: Type 1 and Type 2. These packet types and their
usage are described in this section.
Type 1 Packet
The Type 1 packet is used for register reads and writes. Only 5 out of 14 register address bits are
used in 7 series FPGAs. The header section is always a 32-bit word.
Following the Type 1 packet header is the Type 1 Data section, which contains the number of 32-bit
words specified by the word count portion of the header.
Notes:
1. “R” means the bit is not used and reserved for future use. The reserved bits should be written as 0s.
01 Read
10 Write
11 Reserved
Type 2 Packet
The Type 2 packet, which must follow a Type 1 packet, is used to write long blocks. No address is
presented here because it uses the previous Type 1 packet address. The header section is always a
32-bit word.
Following the Type 2 packet header is the Type 2 Data section, which contains the number of 32-bit
words specified by the word count portion of the header.
Configuration Registers
Table 5-23 summarizes the Type 1 Packet registers. A detailed explanation of selected registers
follows.
FDRI Write 00010 Frame Data Register, Input Register (write configuration data)
FDRO Read 00011 Frame Data Register, Output Register (read configuration data)
Row Address [21:17] Selects the current row. The row addresses increment from center to top
and then reset and increment from center to bottom.
Column Address [16:7] Selects a major column, such as a column of CLBs. Column addresses
start at 0 on the left and increase to the right.
Reserved
OverTempPowerDown
Reserved
ConfigFallback
Reserved
GLUTMASK_B
FARSRC
DEC
SBITS[1:0]
PERSIST
Reserved
GTS_USR_B
Description
Bit Index 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Value 0 0 x x x x x x x x x x x x x x x x x x x 1 x 0 0 0 0 0 0 x x 1
BUS_WIDTH
Reserved
STARTUP_STATE
XADC_OVER_TEMP
DEC_ERROR
ID_ERROR
DONE
RELEASE_DONE
INIT_B
INIT_COMPLETE
MODE
GHIGH_B
GWE
GTS_CFG_B
EOS
DCI_MATCH
MMCM_LOCK
PART_SECURED
CRC_ERROR
Description
Bit Index 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Value x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
OSCFSEL
SSCLKSRC
DONE_CYCLE
MATCH_CYCLE
LOCK_CYCLE
GTS_CYCLE
GWE_CYCLE
Description
Bit Index 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Value 0 0 0 0 0 X 1 0 0 0 0 0 0 0 0 0 x 0 1 1 1 1 1 1 1 1 1 0 1 1 0 0
PERSIST_DEASSERT_AT_DESYNC
RBCRC_ACTION
Reserved
RBCRC_NO_PIN
RBCRC_EN
Reserved
BPI_1ST_READ_CYCLE
BPI_PAGE_SIZE
Description
Bit Index 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Value 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
RS_TS_B
START_ADDR
Description
Bit Index 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Value 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
TIMER_VALUE
Description
Bit Index 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Value 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
HMAC_ERROR_1
WRAP_ERROR_1
CRC_ERROR_1
ID_ERROR_1
WTO_ERROR_1
IPROG_1
FALLBACK_1
VALID_1
HMAC_ERROR_0
WRAP_ERROR_0
CRC_ERROR_0
ID_ERROR_0
WTO_ERROR_0
IPROG_0
FALLBACK_0
VALID_0
Description
Bit Index 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Value 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Notes:
1. The default power-up state for all fields in this register is 0, indicating no error, fallback, or valid configuration
detected. After configuration, a 1 in any bit indicates an error case, fallback, or completed configuration has been
detected.
Description
Bit Index 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Value x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
BPI_sync_mode(1)
Reserved
SPI_buswidth(2)
Read Configuration Register (determined by SPI_read_opcode
Description
BPI_sync_mode; see XAPP587 for more information) (see Table 2-13, page 50)
Bit Index 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Value 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1
Notes:
1. See Synchronous Read Mode Support, page 59.
2. See Master SPI Dual (x2) and Quad (x4) Read Commands, page 50.
DNA_PORT
DIN DOUT
READ
SHIFT
CLK
UG470_c5_15_110513
DNA Value
As shown in Figure 5-16, the Device DNA value is 57 bits long.
Operation
Figure 5-16 shows the general functionality of the DNA_PORT design primitive. An FPGA
application must first instantiate the DNA_PORT primitive, shown in Figure 5-15, within a design.
To read the Device DNA, the FPGA application must first transfer the DNA value into the
DNA_PORT output shift register. The READ input must be asserted during a rising edge of CLK, as
shown in Table 5-42. This action parallel loads the output shift register with all 57 bits of the DNA.
The READ operation overrides a SHIFT operation.
To continue reading the DNA bits, assert SHIFT followed by a rising edge of CLK, as shown in
Table 5-42. This action causes the output shift register to shift its contents toward the DOUT output.
The value on the DIN input is shifted into the shift register.
X-Ref Target - Figure 5-16
SHIFT=1
0 Read = 0 56
DIN 57-Bit Loadable Shift Register DOUT
CLK
READ = 1
0 56
57-Bit Device DNA
Factory Programmed, Unchangeable UG470_c5_16_110513
If both READ and SHIFT are Low, the output shift register holds its value and DOUT remains
unchanged. Refer to the respective 7 series FPGAs data sheet for DNA memory specifications.
DNA_PORT
0 DIN DOUT
READ
SHIFT
CLK
UG470_c5_17_010513
As shown in Figure 5-18, the length of the DNA can be extended by feeding the DOUT serial output
port back into the DIN serial input port. This way, the DNA can be extended to any possible length.
X-Ref Target - Figure 5-18
DNA_PORT
DIN DOUT
READ
SHIFT
CLK
UG470_c5_18_110513
It is also possible to add additional bits to the DNA using FPGA logic resources. As shown in
Figure 5-19, the FPGA application can insert additional bits via the DNA_PORT DIN serial input.
The additional bits provided by the logic resources could take the form of an additional fixed value
or a variable computed from the Device DNA.
X-Ref Target - Figure 5-19
READ
SHIFT
CLK
UG470_c5_19_110513
Bit 56 of the identifier, shown in Figure 5-16, appears on the TDO JTAG output following the
XSC_DNA command when the device enters the Shift-DR state. The remaining Device DNA bits
and any data on the input to the register are shifted out sequentially while the JTAG controller is left
in the Shift-DR state.
The entire unique 64-bit identifier can read via the JTAG port using the private FUSE_DNA
command. The functionality is similar to XSC_DNA, except that bit 0 of the identifier appears on
the TDO JTAG output following the FUSE_DNA command.
primitive, storing the current register values in configuration memory. The register values are later
read out of the device along with all other configuration memory.
Persist Option
The persist bitstream option maintains the configuration logic access to the multi-function
configuration pins after configuration. The persist option is primarily used to maintain the
SelectMAP port after configuration for readback access. 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. PERSIST is also not recommended for standard Master SPI/BPI
configuration mode setups. For advanced tandem Master SPI/BPI configuration mode setups refer
to XAPP1179, for the PERSIST option usage.
The persist option can also be used to reconfigure the device from an external controller without
pulsing the PROGRAM_B pin or using the JTAG port. The multi-function pins that persist depend
on the configuration mode pin settings, and are the same as those shown for each configuration
mode in Table 2-2, page 18 and Table 2-3, page 19, except that PUDC_B and DOUT_CSO_B never
persist. Any I/O pins that persist cannot be used as I/O in the user design. Use the CONFIG_MODE
constraint to reserve the correct pins during implementation of the design. Persisted I/O use the
general-purpose I/O standard default of LVCMOS, 12 mA drive, Slow slew rate.
Read
UG470_c6_01_110413
Figure 6-1: Changing the SelectMAP Port from Write to Read Control
The user must change the SelectMAP interface from write to read control between steps 8 and 9, and
back to write control after step 9.
To read registers other than STAT, the address specified in the Type 1 packet header in step 2 of
Table 6-1 should be modified and the word count changed if necessary. Reading from the FDRO
register is a special case that is described in Configuration Memory Read Procedure (SelectMAP).
When readback is initiated a number of dummy words, depending on the SelectMAP bus width, are
read prior to valid data being present.
00101
(CFG_IN)
5 Shift the first five bits of the CFG_IN or CFG_OUT instruction, LSB first 0 5
00100
(CFG_OUT)
Table 6-4: Shifting in the JTAG CFG_IN and CFG_OUT Instructions (Cont’d)
Set and Hold # of Clocks
Step Description
TDI TMS (TCK)
Shift data into the CFG_IN register or out of the CFG_OUT register while
9 X 0 X
in SHIFT_DR, MSB first
The packets shifted in to the JTAG CFG_IN register are identical to the packets shifted in through
the SelectMAP interface when reading the STAT register through SelectMAP.
2. Shift the CFG_IN instruction into the JTAG Instruction Register. The LSB of the CFG_IN
instruction is shifted first; the MSB is shifted while moving the TAP controller out of the
SHIFT-IR state.
3. Shift packet write commands into the CFG_IN register through the Shift-DR state:
a. Write a dummy word to the device.
b. Write the Synchronization word to the device.
c. Write at least one NOOP instruction to the device.
d. Write the RCRC command to the device.
e. Write two dummy words to flush the packet buffer.
4. Shift the JSHUTDOWN instruction into the JTAG Instruction Register.
5. Move into the RTI state; remain there for 12 TCK cycles to complete the Shutdown sequence.
The DONE pin goes Low during the Shutdown sequence.
6. Shift the CFG_IN instruction into the JTAG Instruction Register.
7. Move to the Shift-DR state and shift packet write commands into the CFG_IN register:
a. Write a dummy word to the device.
b. Write the Synchronization word to the device.
c. Write at least one NOOP instruction to the device.
d. Write the write CMD register header.
e. Write the RCFG command to the device.
f. Write the write FAR register header.
g. Write the starting frame address to the FAR register (typically 0x0000000).
h. Write the read FDRO register Type 1 packet header to the device.
i. Write a Type 2 packet header to indicate the number of words to read from the device.
j. Write two dummy words to the device to flush the packet buffer.
The MSB of all configuration packets sent through the CFG_IN register must be sent first. The
LSB is shifted while moving the TAP controller out of the SHIFT-DR state.
8. Shift the CFG_OUT instruction into the JTAG Instruction Register through the
Shift-DR state. The LSB of the CFG_OUT instruction is shifted first; the MSB is shifted while
moving the TAP controller out of the SHIFT-IR state.
9. Shift frame data from the FDRO register through the Shift-DR state.
10. Reset the TAP controller.
Table 6-6: Shutdown Readback Command Sequence (JTAG)
Set and Hold # of Clocks
Step Description
TDI TMS (TCK)
a: 0xFFFFFFFF
b: 0xAA995566
c: 0x20000000
d: 0x30008001
e: 0x00000004
Shift configuration packets into the CFG_IN data
f: 0x30002001 0 351
register, MSB first.
g: 0x00000000
7 h: 0x28006000
i: 0x48024090
j: 0x20000000
k: 0x20000000
Shift the LSB of the last configuration packet
0 1 1
while exiting SHIFT-DR.
Move into the SELECT-IR state. X 1 3
Move into the SHIFT-IR state. X 0 2
Shift the first five bits of the CFG_OUT 00100
0 5
instruction, LSB first. (CFG_OUT)
Shift the MSB of the CFG_OUT instruction while
8 0 1 1
exiting Shift-IR.
Move into the SELECT-DR state. X 1 2
Move into the SHIFT-DR state. X 0 2
number of
Shift the contents of the FDRO register out of the
… 0 readback bits
CFG_OUT data register.
–1
Readback Data
Total
Number of Frame Data
Device
Frames
UG470_c6_02_110513
The readback data stream is verified by comparing it to the original configuration frame data that
were programmed into the device. Certain bits within the readback data stream must not be
compared, because these can correspond to user memory, such as block or distributed RAM, SRLs,
or DRP memories, or null memory locations. The location of don't care bits in the readback data
stream is given by the mask files (MSK and MSD). These files have different formats although both
convey essentially the same information. A 1 in the mask file indicates a bitstream location that
should be a don't care. After readback data has been obtained from the device, either of these
comparison procedures can be used:
1. Compare readback data to the RBD golden readback file. Mask by using the MSD file (see
Figure 6-3).
The simplest way to verify the readback data stream is to compare it to the RBD golden
readback file, masking readback bits with the MSD file. This approach is simple because there
is a 1:1 correspondence between the start of the readback data stream and the start of the RBD
and MSD files, making the task of aligning readback, mask, and expected data easier.
The RBD and MSD files contain an ASCII representation of the readback and mask data along
with a file header that lists the file name, etc. This header information should be ignored or
deleted. The ASCII 1s and 0s in the RBD and MSD files correspond to the binary readback data
from the device. Take care to interpret these files as text, not binary sources. Users can convert
the RBD and MSD files to a binary format using a script or text editor, to simplify the verify
procedure for some systems and to reduce the size of the files by a factor of eight.
MSD RBD
File File
Readback
Data Stream File Header File Header
Total
Number of Frame Data Frame Data Frame Data
Device Mask
Frames
UG470_c6_03_110513
Figure 6-3: Comparing Readback Data Using the MSD and RBD Files
The drawback to this approach is that in addition to storing the initial configuration bitstream
and the MSD file, the golden RBD file must be stored somewhere, increasing the overall
storage requirement.
2. Compare readback data to the configuration BIT file, mask using the MSK file (see Figure 6-4).
Another approach for verifying readback data is to compare the readback data stream to the
frame data within the FDRI write in the original configuration bitstream, masking readback bits
with the MSK file.
After sending readback commands to the device, comparison begins by aligning the beginning
of the readback frame data to the beginning of the FDRI write in the BIT and MSK files. The
comparison ends when the end of the FDRI write is reached.
This approach requires the least in-system storage space, because only the BIT, MSK, and
readback commands must be stored.
MSK BIT
Readback File File
Data Stream
File Header File Header
1 Frame Pad Frame
Commands Commands
Total
Number of Frame Data Frame Data Frame Data
Device Mask
Frames
Commands Commands
UG470_c6_04_110513
Figure 6-4: Comparing Readback Data Using the MSK and BIT Files
The RBA and RBB files contain expected readback data along with readback command sets.
They are intended for use with the MSK file.
Readback Capture
The configuration memory readback command sequence is identical for both Readback Verify and
Readback Capture. However, the Capture sequence requires an additional step to sample internal
register values.
Users can sample block RAM outputs, and CLB and IOB registers by instantiating the
CAPTUREE2 primitive in their design and asserting the CAP input on that primitive while the
design is operating. On the next rising clock edge on the CAPTUREE2 CLK input, the internal
GRDBK signal is asserted, storing all CLB and IOB register values into configuration memory
cells. These values can then be read out of the device along with the IOB and CLB configuration
columns by reading configuration memory through the readback process. Register values are stored
in the same memory cell that programs the register's initial state configuration, thus sending the
GRESTORE command to the 7 series FPGA configuration logic after the Capture sequence can
cause registers to return to an unintended state.
Alternatively, the GRDBK signal can be asserted by writing the GCAPTURE command to the CMD
register. This command asserts the GRDBK signal for two CCLK or TCK cycles, depending on the
start-up clock setting.
Fallback MultiBoot
Overview
The 7 series FPGAs MultiBoot and fallback features support updating systems in the field.
Bitstream images can be upgraded dynamically in the field. The FPGA MultiBoot feature enables
switching between images on the fly. When an error is detected during the MultiBoot configuration
process, the FPGA can trigger a fallback feature that ensures a known good design can be loaded
into the device.
When fallback happens, an internally generated pulse resets the entire configuration logic, except
for the dedicated MultiBoot logic, the warm boot start address (WBSTAR), and the boot status
(BOOTSTS) registers. This reset pulse pulls INIT_B and DONE Low, clears the configuration
memory, and restarts the configuration process from address 0 with the revision select (RS) pins
driven to 00. After the reset, the bitstream overwrites the WBSTAR starting address.
During configuration, the following errors can trigger fallback:
• An IDCODE error
• A CRC error
• A Watchdog timer time-out error
• A BPI address wraparound error
Fallback can also be enabled with the bitstream option ConfigFallback. Embedded IPROG is
ignored during fallback reconfiguration. The Watchdog timer is disabled during fallback
reconfiguration. If fallback reconfiguration fails, configuration stops and both INIT_B and DONE
are held Low.
Implementation of a robust in-system update solution involves a set of decisions. First, a method for
system setup needs to be determined. Next, design considerations can be added for a specific
configuration mode. Finally, HDL design considerations need to be taken into account and files need
to be generated properly. This chapter walks through each stage of this process.
The MultiBoot and fallback feature can be used with all master configuration modes. See SPI
Densities over 128 Mb, page 52 for requirements in SPI mode. Fallback MultiBoot is not supported
in the AMD Virtex-7 HT FPGAs.
Trigger MultiBoot
Upper Address
Golden Image
Configuration No
BIT File Stored at Passes?
Address 0
Yes
image and loads the golden image. The golden image can then fix any errors in the flash and trigger
a configuration from the MultiBoot image again.
Figure 7-2 shows the flow for the initial setup of the MultiBoot image.
X-Ref Target - Figure 7-2
Configuration No
Upper Address Passes?
Golden Image
Yes
the WBSTAR address, and the bitstream options are the same for each image. Refer to RS Pins,
page 137 for further details.
IPROG
The Internal PROGRAM (IPROG) command is a subset of the functionality of pulsing the
PROGRAM_B pin. The fundamental difference is that the IPROG command does not erase the
WBSTAR, TIMER, BSPI, and BOOTSTS registers used to initiate MultiBoot and fallback. The
IPROG command triggers an initialization, and both INIT and DONE go Low when the IPROG
command is issued followed by an attempt to configure.
This command can be issued one of two ways. In the first way, the IPROG command can be issued
via the ICAPE2, which is controlled by user logic. This allows user logic to initiate device
reconfiguration. In the second way, the IPROG command can be embedded in the bitstream during
bitstream generation. In this scenario, the WBSTAR and IPROG commands are set at the beginning
of the golden bit file. At power up, the device starts reading the BIT file from the flash and reads in
the WBSTAR register and IPROG command. The IPROG command triggers the device to reload
from the address specified. If there is an issue with the upper image, the base address is loaded again.
At this point, the IPROG command is skipped by the configuration controller because the device
saw an error. A fallback condition blocks the IPROG command from being processed, and the
device continues to load the golden image. After a successful configuration, the IPROG command
can be issued to the device, which enables the golden image to trigger configuration from a
MultiBoot image.
WBSTAR Register
The WBSTAR (Warm Boot Start Address) register holds the address that the configuration
controller uses after an IPROG command is issued. This can be either in the form of an address or
values for the RS pins. This register can be loaded from the bitstream or from the ICAPE2. If the
register is not set in the bitstream, it is loaded with a default value of 0s. Therefore, after the golden
image sets the WBSTAR value and initiates a multiboot configuration, the multiboot pattern will
reset the WBSTAR to 0 by default.
At power up, the device issues the read command to the flash followed by a start address of 0. After
the WBSTAR command has been loaded and the IPROG command is issued, the configuration
controller issues the read command from the address specified by the WBSTAR address.
Watchdog Timer
The Watchdog timer has two modes (configuration monitor and user logic monitor), which are
mutually exclusive of each other.
In configuration monitor mode, the timer register is set in the BIT file. This timer value is then used
for both the configuration of the bitstream, which sets the value, as well as any subsequent loads
triggered by an IPROG command. The timer register needs to be set in all BIT files.
The timer register counts down from the start to the bitstream and is disabled by the end of the
start-up sequence. If the count reaches 0, a fallback is triggered. The start-up sequence can be
delayed by the PLL Wait or DCI Match settings; these delays need to be taken into account. The
timer register runs at approximately 65 MHz. For situations where configuration does not begin, or
begins properly but does not complete, such as for an invalid or a partially corrupted configuration
source, the Watchdog timer allows the device to automatically re-attempt configuration after a
reasonable delay.
RS Pins
The dual-purpose RS pins are disabled by default. The RS pins drive Low during a fallback for BPI
or Master SelectMAP mode, but do not drive Low during SPI mode. For initial MultiBoot systems,
the RS pins are wired to upper address bits of the flash and strapped High or Low with a pull-up or
pull-down resistor, respectively. At power up, the system boots to the upper address space defined
by the pull-up resistors on the RS and address line connections. During a fallback, the RS pins drive
Low and the device boots from address space 0. The RS pins should be tied to upper addresses
defined by the system to allow for full bit files to be stored in each memory segment.
IPROG Reconfiguration
The internal PROGRAM_B (IPROG) command has similar effect as a pulsing PROGRAM_B pin,
except IPROG does not reset the dedicated reconfiguration logic. The start address set in WBSTAR
(see Warm Boot Start Address Register (10000), page 111) is used during reconfiguration
instead of the default address. The default is zero in BPI and SPI modes. The IPROG command can
be sent through ICAPE2 or the bitstream. The IPROG Using ICAPE2 and IPROG Embedded in the
Bitstream sections describe these two usages. Note that the ICAPE2 interface is similar to the
SelectMAP interface, and therefore the input configuration bus needs to be bit-swapped. See
Parallel Bus Bit Order, page 77. For more information on ICAPE2, see UG953, Vivado Design Suite
7 Series FPGA and Zynq-7000 SoC Libraries Guide. See the 7 series data sheets for the ICAPE2
maximum frequency (FICAPCK).
After the configuration logic receives the IPROG command, the FPGA resets everything except the
dedicated reconfiguration logic, and the INIT_B and DONE pins go Low. After the FPGA clears all
configuration memory, INIT_B goes High again. Then the value in WBSTAR is used for the
bitstream starting address. The configuration mode determines which pins are controlled by
WBSTAR.
In all configuration modes except SPI mode, RS[1:0] is controllable by WBSTAR. The
START_ADDR field is only meaningful for the BPI and SPI modes.
X-Ref Target - Figure 7-3
VCCO
7 Series
FPGA
BPI Flash
RS[1] 1’ b1
RS[1:0] RS[1:0]
RS[1:0] ADDR[28:27] RS[0] 1’ b1
FWE_B WE_B
FOE_B OE_B
FCS_B CS_B
FPGA Actively
A[26:00] ADDR[26:0]
D[15:00] DATA[15:0] Drives 2’b11
UG470_c7_01_062812
2. In this example, RS[1:0] is set to 2'b11. During IPROG reconfiguration, the RS[1:0] pins
override the external pull-up and pull-down resistors. The user can specify any RS[1:0] value in
the WBSTAR register.
Dummy
Sync Word
WBSTAR = A1
First Bitstream
IPROG Command
...
7 Series
...
FPGA
Address = A1
Dummy
Sync Word
WBSTAR = 0
Final Bitstream
NULL Command
...
...
UG470_c7_02_101510
Table 7-3 through Table 7-5 show the BOOTSTS values in some common situations.
Table 7-5: IPROG Embedded in First Bitstream, Second Bitstream CRC Error, Fallback Successfully
FALLBAC
Reserved WRAP_ERROR CRC_ERROR ID_ERROR WTO_ERROR IPROG VALID
K
Status_1 0 0 1 0 0 1 0 1
Status_0 0 0 0 0 0 1 1 1
Notes:
1. Status_1 shows IPROG was attempted, and a CRC_ERROR was detected for that bitstream.
2. Status_0 shows a fallback bitstream was loaded successfully. The IPROG bit was also set in this case, because the fallback bitstream contains an
IPROG command. Although the IPROG command is ignored during fallback, the status still records this occurrence.
Watchdog
The 7 series FPGA Watchdog can be used to monitor configuration steps or user logic operation in
the FPGA logic. When the Watchdog times out, the configuration logic loads the fallback bitstream.
The Fallback MultiBoot section provides more details.
The Watchdog uses a divided version of a dedicated internal clock, CFGMCLK, which has a
nominal frequency of 65 MHz. The clock is predivided by 256, so that the Watchdog clock period is
about 4,000 ns. Given the Watchdog counter is 30 bits wide, the maximum possible Watchdog value
is about 4,230 seconds. The time value can be set via bitstream options.
The Watchdog can be enabled in the bitstream or through any configuration port by writing to the
TIMER register. The Watchdog is disabled during and after fallback reconfiguration. A successful
IPROG reconfiguration initiated by a successful fallback reconfiguration is necessary to re-enable
the Watchdog.
After it is enabled, the Watchdog timer starts to count down. If the timer reaches 0 and the FPGA has
not reached the final state of startup, a Watchdog time-out error occurs and triggers a fallback
configuration.
The Watchdog provides protection against errant configuration operations such as the following.
• Configuration or MultiBoot operations to an invalid start location
• Configuration or MultiBoot operations to a valid start location, but loaded with an incomplete
or partially valid configuration bitstream.
Table 7-6: Example Bitstream for Reloading the Watchdog with LTIMER
Configuration Data
Explanation
(hex)(1)
FFFFFFFF Dummy Word
AA995566 Sync Word
20000000 Type 1 NO OP
30008001 Type 1 Write 1 Words to CMD
00000000 NULL
20000000 Type 1 NO OP
30008001 Type 1 Write 1 Words to CMD
00000011 LTIMER Command
20000000 Type 1 NO OP
30008001 Type 1 Write 1 Words to CMD
0000000D DESYNC
20000000 Type 1 NO OP
Notes:
1. See Parallel Bus Bit Order, page 77.
Table 7-7 shows an example bitstream for directly accessing the TIMER register.
Notes:
1. See Parallel Bus Bit Order, page 77.
Design Examples
The following documentation provides additional examples of using MultiBoot and
reconfiguration:
1. XAPP1081, QuickBoot Method for FPGA Design Remote Update
2. XAPP733, Applying MultiBoot and the LogiCORE IP Soft Error Mitigation Controller
Readback CRC
AMD 7 series devices include a feature to do continuous readback of configuration data in the
background of a user design. This feature is aimed at simplifying detection of Single Event Upsets
(SEUs) that cause a configuration memory bit to flip and can be used in conjunction with the
FRAME ECC feature for advanced operations such as SEU corrections. SEU mitigation is best
implemented by using the AMD Soft Error Mitigation IP (SEM IP), available at
https://www.xilinx.com/products/intellectual-property/sem.html.
To enable Readback CRC, the CONFIG user constraint POST_CRC is set to Enable. After it is
enabled, the configuration dedicated logic reads back continuously in the background to check the
CRC of the configuration memory content. The frequency is set by the CONFIG constraint
POST_CRC_FREQ.
In the first round of readback, the ECC syndrome bits are calibrated. In the second round of
readback, the CRC value is latched as the golden value for later comparison, or a known value can
be supplied setting the CONFIG constraint POST_CRC_SOURCE to PRE_COMPUTED. The
subsequent rounds of readback CRC value are compared against the golden value. When a single bit
or double bit error is detected, ECCERROR is pulsed and the SYNDROME, SYNWORD, SYNBIT,
ECCERRORSINGLE, and FAR information are presented. When a CRC mismatch is found, the
CRCERROR pin of the FRAME_ECCE2 primitive is driven High (see UG953, Vivado Design Suite
7 Series FPGA and Zynq-7000 SoC Libraries Guide for more information on the FRAME_ECCE2
primitive). The INIT_B pin is then driven Low, and the DONE pin remains High. The CONFIG user
constraint POST_CRC_INIT_FLAG can be optionally set to DISABLE to turn off INIT_B as the
readback CRC flag. The error flag remains asserted until the next comparison if the error was not
corrected.
Readback CRC is halted and the error flag is cleared when the user logic accesses the configuration
logic through an ICAPE2 command, JTAG, or SelectMAP. When the user finishes accessing the
configuration logic, readback CRC automatically resumes.
The CONFIG user constraint POST_CRC_ACTION can be used to specify what action to take
when an error is found. The options are Halt, Continue, Correct_And_Halt, or
Correct_And_Continue. See UG625, Constraints Guide for POST_CRC constraint details in the
ISE tools, and UG912, Vivado Design Suite Properties Guide for details on using the Vivado tools.
SEU Detection
Readback CRC logic runs under these conditions:
• Any configuration operation must finish with a DESYNC command to release the
configuration logic. If a DESYNC command is not issued, the readback CRC logic cannot
access the configuration logic and cannot run. The DESYNC command clears the
CRC_ERROR flag.
• In addition, the JTAG instruction register (IR) must not contain any configuration instructions
(CFG_IN, CFG_OUT, or ISC_ENABLE). When these instructions are present, at any time, the
readback CRC logic cannot access the configuration logic and cannot run. Any configuration
operation performed via the JTAG interface should finish by loading the IR with a value other
than these three configuration instructions.
These dynamically changeable memory locations are masked during background readback:
• SLICEM LUTs (RAM or SRL)
• Block RAM content is skipped during readback to avoid interfering with user functions. Block
RAM is optionally covered by its own ECC circuit during operation.
• Dynamic Reconfiguration Port (DRP) memories are masked.
When enabled, the readback CRC logic automatically runs in the background after configuration is
DONE, and when these conditions hold:
• The FPGA is configured successfully, as indicated by the DONE pin going High.
• The configuration interface has been parked correctly. A normal bitstream has a DESYNC
command at the end that signals to the configuration interface that it is no longer being used.
• If the JTAG interface is in use, the JTAG instruction register must not be set to CFG_IN,
CFG_OUT, or ISC_ENABLE.
Readback CRC runs on different clock sources in different modes as indicated in Table 8-1.
Table 8-1: Readback CRC Clock Source
ICAPE2 STARTUPE2 POST_CRC Configuration POST_CRC Clock
CCLK
Primitive Primitive _FREQ Mode Source
Instantiated Don't Care Don't Care Don't Care Don't Care CLK Input of the ICAPE2
Instantiated and
USRCCLKO Input of the
Not Instantiated USRCCLKO Don't Care Don't Care Don't Care
STARTUPE2 Primitive
Connected
Not Instantiated,
or Instantiated but Internal Oscillator: Defined
Not Instantiated Enabled Don't Care Don't Care
not using by POST_CRC_FREQ
USRCCLKO
Not Instantiated,
or Instantiated but EMCCLK Enabled
Not Instantiated Not Used Master EMCCLK Pin Input
not using (ExtMasterCclk_en)
USRCCLKO
Not Instantiated,
Internal Oscillator: Master
or Instantiated but Default (Internal
Not Instantiated Not Used Master CCLK Defined by
not using Oscillator)
ConfigRate Option
USRCCLKO
Not Instantiated,
or Instantiated but
Not Instantiated Not Used Slave External Input CCLK Pin Input
not using
USRCCLKO
Not Instantiated,
or Instantiated but No Clock (see following
Not Instantiated Not Used JTAG Not Used
not using paragraph)
USRCCLKO
Because JTAG has the highest priority in the configuration mode, it takes over the configuration bus
whenever it needs to. M[2:0] are recommended to be set to Master Serialmode when only JTAG
configuration is intended, so that the internal oscillator provides acontinuous clock. The JTAG
Instruction Register must not be parked at the CFG_IN, CFG_OUT, or ISC_ENABLE instructions.
In a partial reconfiguration application, the configuration memory content changes, so the golden
signature must be recalculated. The hardware golden CRC is automatically regenerated after any
write to FDRI.
SEU Correction
If correction is enabled using the constraint POST_CRC_ACTION, then the readback CRC logic
performs correction on single bit errors. During readback, the syndrome bits are calculated for every
frame. If a single bit error is detected, the readback is stopped immediately. The frame in error is
read back again, and using the syndrome information, the bit in error is fixed and written back to the
frame. If the POST_CRC_ACTION is set to Correct_And_Continue, then the readback logic starts
over from the first address. If the Correct_And_Halt option is set, the readback logic stops after
correction.
Here is a list of different error scenarios and the corresponding behavior of the hardware correction
logic when POST_CRC_ACTION is set to Correct_And_Continue. Readback CRC starts scanning
from the starting address:
1. Single Bit Error:
a. After a frame with an erroneous bit is read, CRCERROR and INIT_B are asserted,
ECCERROR is pulsed twice, correction is started, and ECCERROR, CRCERROR, and
INIT_B are deasserted after the bit in error is fixed.
b. The RBCRC cycle resumes from the starting address.
2. Errors in two or more different frames:
a. After a frame with an erroneous bit is read, the error is fixed as described in 1a.
b. The RBCRC cycle restarts from the starting address and continues until it reads the frame
with the second bit in error.
c. The error is fixed as described in 1a.
d. If this is the last error, RBCRC resumes from the starting address and continues normally.
e. If there is one more error in a different frame, steps b and c are repeated.
3. Two or more errors in the same frame:
a. After a frame with erroneous bits is read, ECCERROR is asserted.
b. The built-in logic cannot correct more than one error in a frame so RBCRC continues on to
the next frame, and ECCERROR is updated based on the current frame.
c. When RBCRC reaches the last address, CRCERROR is set.
d. RBCRC cycle restarts from the starting address and keeps the CRCERROR flag asserted.
e. The RBCRC behavior at this point depends on the POST_CRC_ACTION attribute.
Notes on POST_CRC_ACTION:
• If set to Halt, RBCRC stops on the first error and sets the CRCERROR flag.
• If set to Continue, RBCRC asserts CRCERROR if an error is present and continues from the
starting address with CRCERROR asserted.
• If set to Correct_And_Halt, RBCRC corrects a single bit error, halts RBCRC, and asserts
CRCERROR.
• If set to Correct_And_Continue, RBCRC corrects a single bit error and restarts from the
starting address.
M0 M1 M0 M1
Processor
M2 M2
PROGRAM_B UG470_c09_01_111113
• All 7 series device families have similar bitstream options. The guidelines provided for 7 series
FPGA bitstream options should be applied to all devices in a serial daisy chain, when possible.
• The number of configuration bits that a device can pass through its DOUT pin is limited. For 7
series and Virtex devices starting with the Virtex-II family, the limit is 4,294,967,264 bits. For
the Spartan-6 and Spartan-3 generation devices, the limit is 2,147,483,632 bits. The sum of the
bitstream lengths for all downstream devices must not exceed this number.
M0 M1
Processor
M2
PROGRAM_B
DONE INIT_B
PROGRAM_B
M0 M1
M2
DIN DOUT
CCLK
FPGA
Slave
Serial
PROGRAM_B
DONE INIT_B
UG470_c09_02_041715
pins can be disconnected if the external CCLK source continues toggling until all DONE pins
go High.
• CCLK as Clock Signal for Board Layout
The CCLK signal is relatively slow, but the edge rates on the 7 series FPGA input buffers are
very fast. Even minor signal integrity problems on the CCLK signal can cause the configuration
to fail. The typical failure symptom is that DONE is still Low and INIT_B is High. Therefore,
design practices that focus on signal integrity, including signal integrity simulation with IBIS,
are recommended.
• PROM Files for Ganged Serial Configuration
PROM files for ganged serial configuration are identical to the PROM files used to configure
single devices. There are no special PROM file considerations.
DATA[7:0]
CCLK
WRITE
M1 M2 M1 M2
M0 M0
Slave Slave
SelectMAP SelectMAP
D[7:0] D[7:0]
CCLK CCLK
RDWR_B RDWR_B
DONE
INIT_B
PROGRAM_B
UG470_c09_03_111113
4.7 kȍ
330ȍ
330ȍ
330ȍ
CSO_B CSO_B CSO_B No
INIT_B INIT_B INIT_B Connect
DONE DONE DONE
FPGA FPGA FPGA
A[28:0] A[28:0]
D[15:0] D[15:0] D[15:0] D[15:0]
Flash CS_B FCS_B CSI_B CSI_B
OE_B FOE_B RDWR_B RDWR_B
WE_B FWE_B CCLK CCLK CCLK
M2 M1 M0 M2 M1 M0 M2 M1 M0
0 1 0 1 1 0 1 1 0
BPI UP
M[2:0] = Slave SelectMAP M[2:0] = Slave SelectMAP
UG470_c09_04_110413
M1 M0
M2
FPGA
SelectMAP
DATA[0:7] D[0:7]
Master
CCLK CCLK
PROGRAM_B PROGRAM_B
DONE
INIT_B INIT_B
RDWR_B
CSI_B 330ȍ
Processor DONE
M1 M0
M2
FPGA
SelectMAP
Slave
D[0:7]
CCLK
PROGRAM_B
4.7 kȍ
INIT_B
RDWR_B
CSI_B
DONE
UG470_c09_05_111113
JTAG Configuration/Readback
Test-Logic-Reset
1
0
Select Next State 1 1
Run-Test/Idle Select-DR Select-IR
0
TMS 0 0
1 1
Capture-DR Capture-IR
0 0
Shift-IR/Shift-DR
Shift-DR Shift-IR
0 0
1 1
1 1
Exit1-DR Exit1-IR
0 0
Pause-DR Pause-IR
0 0
1 1
Exit2-DR Exit2-IR 0
0
1 1
Update-DR Update-IR
TCK 1
0
1
0
Select Data
Instruction Decoder
Register
TDO
Bypass[1] Register
IDCODE[32] Register
Boundary[N] Register
Figure 10-2 diagrams a 16-state finite state machine. The four TAP pins control how data is scanned
into the various registers. The state of the TMS pin at the rising edge of TCK determines the
sequence of state transitions. There are two main sequences, one for shifting data into the data
register and the other for shifting an instruction into the instruction register.
A transition between the states only occurs on the rising edge of TCK, and each state has a different
name. The two vertical columns with seven states each represent the Instruction Path and the Data
Path. The data registers operate in the states whose names end with "DR," and the instruction
register operates in the states whose names end in "IR." The states are otherwise identical.
The operation of each state is described here.
• Test-Logic-Reset:
All test logic is disabled in this controller state, enabling the normal operation of the IC. The
TAP controller state machine is designed so that regardless of the initial state of the controller,
the Test-Logic-Reset state can be entered by holding TMS High and pulsing TCK five times.
Consequently, the Test Reset (TRST) pin is optional.
• Run-Test-Idle:
In this controller state, the test logic in the IC is active only if certain instructions are present.
For example, if an instruction activates the self test, then it is executed when the controller
enters this state. The test logic in the IC is idle otherwise.
• Select-DR-Scan:
This controller state controls whether to enter the Data Path or the Select-IR-Scan state.
• Select-IR-Scan:
This controller state controls whether or not to enter the Instruction Path. The controller can
return to the Test-Logic-Reset state otherwise.
• Capture-IR:
In this controller state, the shift register bank in the Instruction Register parallel loads a pattern
of fixed values on the rising edge of TCK. The last two significant bits must always be 01.
• Shift-IR:
In this controller state, the instruction register gets connected between TDI and TDO, and the
captured pattern gets shifted on each rising edge of TCK. The instruction available on the TDI
pin is also shifted in to the instruction register.
• Exit1-IR:
This controller state controls whether to enter the Pause-IR state or Update-IR state.
• Pause-IR:
This state allows the shifting of the instruction register to be temporarily halted.
• Exit2-DR:
This controller state controls whether to enter either the Shift-DR state or Update-DR state.
• Update-IR:
In this controller state, the instruction in the instruction register is latched to the latch bank of
the Instruction Register on every falling edge of TCK. This instruction becomes the current
instruction after it is latched.
• Capture-DR:
In this controller state, the data is parallel-loaded into the data registers selected by the current
instruction on the rising edge of TCK.
• Shift-Dr, Exit1-DR, Pause-DR, Exit2-DR, and Update-DR:
These controller states are similar to the Shift-IR, Exit1-IR, Pause-IR, Exit2-IR, and Update-IR
states in the Instruction path.
1 TEST-LOGIC-RESET
0
1 1 1
0 RUN-TEST/IDLE SELECT-DR-SCAN SELECT-IR-SCAN
0 0
1 1
CAPTURE-DR CAPTURE-IR
0 0
SHIFT-DR 0 SHIFT-IR 0
1 1
1 1
EXIT1-DR EXIT1-IR
0 0
PAUSE-DR 0 PAUSE-IR 0
1 1
0 0
EXIT2-DR EXIT2-IR
1 1
UPDATE-DR UPDATE-IR
1 0 1 0
NOTE: The value shown adjacent to each state transition in this figure represents the signal
present at TMS at the time of a rising edge at TCK.
UG470_c10_02_110413
7 series devices support the mandatory IEEE Std 1149.1 commands, as well as several AMD
vendor-specific commands. The EXTEST, SAMPLE/PRELOAD, BYPASS, IDCODE, and
USERCODE instructions are all included. The TAP also supports internal user-defined registers
(USER1, USER2, USER3, and USER4) and configuration/readback of the device. INTEST is not
supported. The HIGHZ_IO command is similar to the standard HIGHZ command but only disables
the user I/O pins.
The FPGA boundary-scan operations are independent of mode selection. The boundary-scan mode
overrides other mode selections. For this reason, boundary-scan instructions using the Boundary
register (SAMPLE/PRELOAD and EXTEST) must not be performed during configuration. All
instructions except the user-defined instructions are available before a device is configured. After
configuration, all instructions are available.
JSTART and JSHUTDOWN are instructions specific to the FPGA architecture and configuration
flow. In 7 series devices, the TAP controller is not reset by the PROGRAM_B pin and can only be
reset by bringing the controller to the TLR state. Clock 5 1's into TMS to guarantee that the state
machine is in the TLR state. The TAP controller is reset on power up.
For details on the standard boundary-scan instructions EXTEST and BYPASS, refer to IEEE Std
1149.1.
Boundary-Scan Architecture
7 series device registers include all registers required by IEEE Std 1149.1. In addition to the standard
registers, the family contains optional registers for simplified testing and verification (Table 10-1).
Table 10-1: 7 Series FPGA JTAG Registers
Register Name Register Length Description
Controls and observes input,
Boundary Register 3 bits per I/O
output, and output enable.
Holds the current instruction
opcode and captures internal
Instruction Register 6 bits(1)
device status. Refer to
Table 10-3.
Bypass Register 1 bit Bypasses the device.
Device Identification Register 32 bits Captures the Device ID.
Allows access to the
configuration bus when using
JTAG Configuration Register 32 bits
the CFG_IN or CFG_OUT
instructions.
Captures the
USERCODE Register 32 bits
user-programmable code.
User-Defined Registers
(USER1, USER2, USER3, and Design specific Design specific.
USER4)
Notes:
1. The Instruction Register size increases from 22 to 38 bits in the devices based on SSI technology (7V2000T,
7VX1140T, 7VH580T, 7VH870T). See the BSDL files for device-specific information.
Boundary Register
The test primary data register is the Boundary register. Boundary-scan operation is independent of
individual IOB configurations. Each IOB, bonded or unbonded, starts as bidirectional with 3-state
control. Later, it can be configured to be an input, output, or 3-state only. Therefore, three data
register bits are provided per IOB (Figure 10-1).
When conducting a data register (DR) operation, the DR captures data in a parallel fashion during
the CAPTURE-DR state. The data is then shifted out and replaced by new data during the
SHIFT-DR state. For each bit of the DR, an update latch is used to hold the input data stable during
the next SHIFT-DR state. The data is then latched during the UPDATE-DR state when TCK is Low.
The update latch is opened each time the TAP controller enters the UPDATE-DR state. Care is
necessary for EXTEST to ensure that the proper data has been latched before exercising the
command. This is typically accomplished by using the SAMPLE/PRELOAD instruction.
Internal pull-up and pull-down resistors should be considered when test vectors are being developed
for testing opens and shorts. The PUDC_B pin determines whether the IOB has a pull-up resistor.
Figure 10-3 represents of the 7 series FPGA boundary-scan architecture.
X-Ref Target - Figure 10-3
TDI
1
sd
D Q D Q
0
LE
1
IOB.I
0
1x sd
01 D Q D Q
00
LE
1
IOB.O 0
IOB.T 0
1x sd
01 D Q D Q 1
00
LE
EXTEST
Instruction Register
The Instruction Register (IR) for the 7 series device is connected between TDI and TDO during an
instruction scan sequence. In preparation for an instruction scan sequence, the instruction register is
parallel-loaded with a fixed instruction capture pattern. This pattern is shifted out onto TDO (LSB
first), while an instruction is shifted into the instruction register from TDI.
To determine the operation to be invoked, an OPCODE necessary for the 7 series FPGA
boundary-scan instruction set is loaded into the Instruction Register. The IR is 6 bits wide for
monolithic 7 series devices. Table 10-2 lists the available instructions for 7 series devices. See JTAG
Instructions in Chapter 5 for eFUSE-related JTAG instructions.
Table 10-2: 7 Series FPGA Boundary-Scan Instructions
Boundary-Scan Binary Code
Description
Command [5:0](1)
EXTEST 100110 Enables boundary-scan EXTEST operation.
Enables boundary-scan EXTEST_PULSE operation
EXTEST_PULSE 111100
for transceivers
Enables boundary-scan EXTEST_TRAIN operation
EXTEST_TRAIN 111101
for transceivers
SAMPLE 000001 Enables boundary-scan SAMPLE operation.
USER1 000010 Access user-defined register 1.
USER2 000011 Access user-defined register 2.
USER3 100010 Access user-defined register 3.
USER4 100011 Access user-defined register 4.
CFG_OUT 000100 Access the configuration bus for readback.
CFG_IN 000101 Access the configuration bus for configuration.
USERCODE 001000 Enables shifting out user code.
IDCODE 001001 Enables shifting out of ID code.
3-state I/O pins only, while enabling the Bypass
HIGHZ_IO 001010
register.
JPROGRAM 001011 Equivalent to and has the same effect as PROGRAM.
JSTART 001100 Clocks the startup sequence when StartClk is TCK.
JSHUTDOWN 001101 Clocks the shutdown sequence.
XADC DRP access through JTAG. See the DRP
interface section in UG480, XADC Dual 12-Bit 1
XADC_DRP 110111
MSPS Analog-to-Digital Converter User Guide for
the 7 series.
Marks the beginning of ISC configuration. Full
ISC_ENABLE 010000
shutdown is executed.
ISC_PROGRAM 010001 Enables in-system programming.
Change security status from secure to non-secure
XSC_PROGRAM_KEY 010010
mode and vice versa.
Notes:
1. Instruction register is larger for devices based on SSI technology (7V2000T, 7VX1140T, 7VH580T, 7VH870T).
See the BSDL files for device-specific information.
Table 10-3 shows the instruction capture values loaded into the IR as part of an instruction scan
sequence.
Table 10-3: 7 Series FPGA Instruction Capture Values Loaded into IR as Part of an Instruction Scan
Sequence
TDI IR[5] IR[4] IR[3] IR[2] IR[1:0]
→ TDO
DONE INIT(1) ISC_ENABLED ISC_DONE 01
Notes:
1. INIT is the status bit of the INIT_COMPLETE signal.
2. Instruction register is larger for devices based on SSI technology (7V2000T, 7VX1140T, 7VH580T, 7VH870T). See the BSDL files for
device-specific information.
Bypass Register
The other standard data register is the single flip-flop Bypass register. It passes data serially from the
TDI pin to the TDO pin during a BYPASS instruction. This register is initialized to zero when the
TAP controller is in the CAPTURE-DR state.
USERCODE Register
The USERCODE instruction is supported in the 7 series family. This register allows a user to
specify a design-specific identification code. The USERCODE can be programmed into the device
and can be read back for verification later. The USERCODE is embedded into the bitstream during
bitstream generation (UserID option) and is valid only after configuration. If the device is blank or
the USERCODE was not programmed, the USERCODE register contains 0xFFFFFFFF.
BSCANE2 Primitive
The BSCANE2 primitive allows access between the internal FPGA logic and the JTAG Boundary
Scan logic controller. This allows for communication between the internal running design and the
dedicated JTAG pins of the FPGA, the Test Access Port (TAP). The BSCANE2 primitive must be
instantiated to gain internal access to the JTAG pins. The BSCANE2 primitive is not needed for
normal JTAG operations that use direct access from the JTAG pins to the TAP controller. The
BSCANE2 is automatically added to a design when using the Vivado Logic Analyzer. Figure 10-4
shows the BSCANE2 Primitive.
X-Ref Target - Figure 10-4
BSCANE2
TDO CAPTURE
DRCK
RESET
RUNTEST
SEL
SHIFT
TCK
TDI
TMS
UPDATE
UG470_c10_04_110413
A typical user application requiring instantiation of the BSCANE2 is to create internal, private scan
registers in the FPGA logic. These scan registers propagate through the FPGA logic, not through the
boundary I/O as is true with standard JTAG boundary scan. Each instance of this primitive will
support one JTAG USER instruction, with multiple instantiations differentiated with the
JTAG_CHAIN attribute. To handle all four USER instructions (USER1 through USER4),
instantiate four BSCANE2 primitives and set the JTAG_CHAIN attribute uniquely on each.
For devices based on SSI technology, the BSCANE2 can only be instantiated in the Master SLR.
The tools will automatically place the element in the correct SLR. Only the JTAG port on the master
SLR can be accessed by the BSCANE2 primitive.
The BSCANE2 primitive can also be used to control or monitor activity on the JTAG TAP port. A
signal on the TDO input of the primitive passes through an output timing register, where the TDO
input to the primitive is registered on the falling edge of TCK as it is passed to the external TDO
output pin when a USER instruction is active. The associated primitive's SEL output goes High to
indicate which USER1-USER4 instruction is active. The DRCK output provides access to the data
register clock generated by the TAP controller. The RESET, UPDATE, SHIFT, and CAPTURE pins
represent the decoding of the corresponding state of the boundary scan internal state machine. The
TDI port provides access from the external TDI pin of the JTAG TAP in order to shift data into an
internal scan chain. The TCK and TMS pins are similarly monitored through the BSCANE2
primitive.
For information on the BSCANE2 simulation model, see UG626, Synthesis and Simulation Design
Guide, Chapter 6, Simulating Your Design.
TMS
TDI
T TAPTCK TTCKTAP
TCK
TTCKTDO
UG470_c10_05_110513
For further information on the startup sequence, bitstream, and internal configuration registers
referenced here, refer to appropriate configuration sequence in Chapter 9.
A configured device can be reconfigured by toggling the TAP and entering a CFG_IN instruction
after pulsing the PROGRAM_B pin or issuing the shutdown sequence (see Figure 10-6)
X-Ref Target - Figure 10-6
Power-Up
Clear Yes
Configuration PROGRAM_B
Memory Low?
No
INIT_B=High
Yes
Load
Bitstream
CRC No
CRC Error
Correct?
Yes
Load JSTART
Instruction
Startup
Sequence
Yes
Operational Reconfigure?
No
UG470_c10_06_111113
Notes:
1. At this RTI state, a minimum wait time of 10 ms is necessary. In this example, the TCK cycle value is based on a TCK frequency of 1 MHz.
2. In the Configuration Register, data is shifted in from the right (TDI) to the left (TDO), MSB first. (Shifts into the Configuration Register are
different from shifts into the other registers in that they are MSB first.)
3. FPGAs that need to be reconfigured require a preceding JPROGRAM sequence to clear the prior configuration or a JSHUTDOWN sequence to
shutdown the FPGA. If JPROGRAM is used to reconfigure, the JPROGRAM needs to be loaded, followed by a BYPASS instruction. Then loop
on loading the BYPASS instruction until the INIT bit becomes 1 before the CFG_IN instruction is sent.
4. Instruction register is larger for devices based on SSI technology (7V2000T, 7VX1140T, 7VH580T, 7VH870T). See the BSDL files for
device-specific information.
JTAG Header
TDO
Documentation Portal
The AMD Adaptive Computing Documentation Portal is an online tool that provides robust search
and navigation for documentation using your web browser. To access the Documentation Portal, go
to https://docs.xilinx.com.
Documentation Navigator
Documentation Navigator (DocNav) is an installed tool that provides access to AMD Adaptive
Computing documents, videos, and support resources, which you can filter and search to find
information. To open DocNav:
• From the IDE, select Help > Documentation and Tutorials.
• On Windows, click the Start button and select Xilinx Design Tools > DocNav.
• At the Linux command prompt, enter docnav.
Design Hubs
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:
• In DocNav, click the Design Hubs View tab.
• On the AMD website, see the Design Hubs page.
Note: For more information on DocNav, see the Documentation Navigator page on the AMD
website.
Support Resources
For support resources such as Answers, Documentation, Downloads, and Forums, see Support.
References
This 7 Series FPGAs Configuration User Guide is part of an overall set of documentation on the 7
series FPGAs, which is available on the AMD website at www.xilinx.com/documentation.
Revision History
The following table shows the revision history for this document.