pg182 Gtwizard Ultrascale
pg182 Gtwizard Ultrascale
Chapter 1: Overview
Feature Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Licensing and Ordering Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Appendix B: Debugging
Finding Help on Xilinx.com . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
Vivado Design Suite Debug Feature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
Overview
The UltraScale™ FPGAs Transceivers Wizard is used to configure and simplify the use of one
or more serial transceivers in a Xilinx® UltraScale or UltraScale+™ device. See Chapter 2,
Product Specification for a detailed description of the core.
This document describes the Wizard IP core. See the UltraScale Architecture GTH
Transceivers User Guide (UG576) [Ref 1] or UltraScale Architecture GTY Transceivers User
Guide (UG578) [Ref 2] for details on the specific use and behavior of the serial transceivers.
Feature Summary
The Wizard provides the following features:
° Helper blocks excluded from the core are delivered as user-customizable starting
points within the example design
• Ability to locate enabled transceiver common primitives either within the core or in the
example design, and connectivity to simplify resource sharing across multiple cores
• Optional port enablement interface provides the ability to expose any transceiver
primitive port as a top-level core port. However, these ports should not be in conflict
with any dependent helper core location and configuration of the wizard.
° Simulation test bench that monitors example design PRBS lock in loopback, and
indicates resulting link status
° Virtual Input/Output (VIO) core instance that simplifies basic example design
hardware bring-up, and key debug signal probing
Applications
The Wizard is the supported method of configuring and using one or more serial
transceivers in a Xilinx UltraScale FPGA.
Product Specification
The UltraScale™ FPGAs Transceivers Wizard core is the supported method of configuring
and using one or more serial transceivers in a Xilinx® UltraScale or UltraScale+™ device. In
addition to automatically setting primitive parameters as appropriate for your application,
the Wizard simplifies serial transceiver usage by providing a variety of port enablement and
helper block convenience functions. These concepts, as well as technical specifications, are
described in this chapter.
Optional port enablement. Xilinx serial transceiver primitives have many ports, and most
ports are usually not required for any one use mode. The Wizard provides access to all
transceiver primitive ports using an optional port enablement interface, but by default
offers a compact user interface by exposing only those ports likely to be necessary for the
core as customized. Some of the ports might not be applicable to be exposed from GT
wizard core due to the customization and optional enablement of some of the helper cores.
Helper blocks. The Wizard provides optional modules called helper blocks that abstract or
automate certain common or complex transceiver usage procedures. Each helper block can
be located either within the core or outside it, delivered with the example design as a
user-modifiable starting point. Helper blocks in this release include:
• Receiver user clocking network. Contains resources to drive the receiver user clocking
network.
• User data width sizing. Sizes the transmitter and receiver data vectors to the specified
user widths.
• Transmitter buffer bypass controller. Controls and abstracts the transmitter buffer
bypass procedure, if required.
• Receiver buffer bypass controller. Controls and abstracts the receiver buffer bypass
procedure, if required.
The Wizard is intended to simplify the use of the serial transceivers. However, it is still
important to understand the behavior, usage, and any limitations of the transceivers. See
the UltraScale Architecture GTH Transceivers User Guide (UG576) [Ref 1] or UltraScale
Architecture GTY Transceivers User Guide (UG578) [Ref 2] for details.
Figure 2-1 and its description illustrate the Wizard basic concepts in the context of the core
hierarchy.
.
X-Ref Target - Figure 2-1
IP Core Wrapper
Top-level HDL
A
Transceiver
CHANNEL Wrapper
Optional
Helper Block 1 CHANNEL
Primitive
D
Transceiver
Optional COMMON Wrapper
Helper Block 2
B’
COMMON
Primitive
A’
X14538
Transceiver channel primitives and transceiver common primitives are instantiated by the
transceiver channel wrapper and transceiver common wrapper modules, respectively. One
or more wrapper modules can be used to instantiate those transceiver primitives as
required for your application. The wrapper modules apply appropriate parameter values to
the underlying transceiver primitives based on the choices made during IP customization,
or according to the selected transceiver configuration preset. These wrappers, like the rest
of the core hierarchy, should not be user-modified.
To provide a compact user interface, only those transceiver primitive ports that are likely
needed for the selected configuration are exposed as Wizard IP core-level ports by default.
Input vector A represents an enabled core port that drives a corresponding input port of
one or more transceiver channel primitives. Likewise, output vector A' is driven by a
corresponding output port of one or more transceiver common primitives. If not enabled by
default, user-required ports can be individually enabled during IP customization for
maximum flexibility.
Transceiver primitive input ports that are not exposed through the core boundary are tied
off to their appropriate values (per the core customization) within the Vivado Design Suite
IP core wrapper. Net B represents an input port of one or more transceiver channel
primitives that is not enabled as a core port and is automatically tied Low by the Wizard.
Net B' represents an analogous transceiver common primitive input, tied High.
The Wizard provides optional helper blocks to simplify common or complex transceiver
usage, and each helper block can be located either within the core or within the
user-modifiable example design. Vectors C represent the simple user interface of the
optional helper blocks when located within the core, while nets D represent the more
complex interface between those helper blocks and the transceiver channel and/or
common primitives to which they connect.
Performance
The Wizard is designed to operate in coordination with the performance characteristics of
the transceiver primitives it instantiates.
Maximum Frequencies
For the serial transceiver switching characteristics and the serial transceiver user clock
switching characteristics, see the applicable data sheet for your device:
• Kintex UltraScale Architecture Data Sheet: DC and AC Switching Characteristics (DS892) [Ref 3]
• Virtex UltraScale Architecture Data Sheet: DC and AC Switching Characteristics (DS893) [Ref 4]
• Zynq UltraScale+ MPSoC Data Sheet: DC and AC Switching Characteristics (DS925) [Ref 5]
• Kintex UltraScale+ FPGAs Data Sheet: DC and AC Switching Characteristics (DS922)[Ref 6]
• Virtex UltraScale+ FPGA Data Sheet: DC and AC Switching Characteristics(DS923)[Ref 7]
The frequency ranges specified by these documents must be adhered to for proper
transceiver and core operation.
Notes:
1. F UPPER is 200 MHz for GTH transceiver core configurations targeting engineering sample (ES1 or ES2) UltraScale
devices where the CPLL is used; or 250 MHz for other configurations. For UltraScale+ devices, this is 250 MHz.
Resource Utilization
The basic Wizard HDL is highly structural and uses a negligible amount of device resources
to instantiate and wire the transceiver primitives for use. In GTH transceiver configurations
targeting engineering sample (ES1 or ES2) UltraScale devices where the CPLL is used as
either the transmitter PLL type, receiver PLL type, or as the source of a selectable TXOUTCLK
frequency, CPLL calibration logic is included. One BUFG_GT and approximately 280 LUTs and
285 flip-flops are utilized per enabled transceiver channel in these configurations.
The device utilization of the optional helper blocks is shown in Table 2-2. These resources
are only consumed when the relevant helper block is enabled and used within the core, or
otherwise included in your design. Resources are shown per helper block instance, although
most configurations that enable a helper block use only one instance.
Notes:
1. A shareable BUFG for the free-running clock is not included in the helper block HDL.
Resources required are derived from post-synthesis reports and may change during
implementation.
Port Descriptions
The Wizard enables access to underlying transceiver primitive ports as needed, as well as
providing a user interface to enable the helper blocks that are included within the core
instance. As such, the Wizard user interface can vary significantly between different
customizations.
To provide a compact interface, only those transceiver primitive ports that are likely needed
for the selected customization are exposed as Wizard IP core-level ports. Additional
user-required ports can be individually enabled during IP customization using a flexible
optional port enablement interface. See Chapter 4, Customizing and Generating the Core,
for details on optional port enablement.
The presence and location of helper blocks also affects the core user interface. When a
helper block is enabled and located within the core, a simple user interface is available at
the core boundary instead of at the transceiver primitive ports to which it connects. When
the helper block is located within the example design, the more complex transceiver
primitive ports it connects to are necessarily enabled at the core boundary. Figure 2-2
illustrates how helper block location affects core port enablement.
Wizard IP Core
Transceiver
Primitive
Helper Block Wrapper
In IP Core
Helper Block
User Interface
vs.
Transceiver Transceiver
Primitive
Primitive
Port Interface
Helper Block
In Example
Design
X14539
Reset controller helper block user interface ports can be identified by the prefix
gtwiz_reset_. For guidance on the usage of the reset controller helper block, see Chapter 3,
Designing with the Core.
The reset controller helper block user interface ports described in Table 2-3 are present on
the Wizard IP core instance when it is configured to locate the reset controller helper block
in the core. They are also present on the helper block itself, directly accessible when the
helper block is located in the example design.
Table 2-3: Reset Controller Helper Block User Interface Ports on Core (Helper Block in Core)
Name Direction Width Clock Domain Description
gtwiz_reset_clk_freerun_in Input 1 Free-running clock used to
reset transceiver primitives.
Must be toggling prior to
device configuration. See
Performance, page 10 for
maximum frequency guidance.
gtwiz_reset_all_in Input 1 Async User signal to reset the
phase-locked loops (PLLs) and
active data directions of
transceiver primitives. The
falling edge of an active-High,
asynchronous pulse of at least
one gtwiz_reset_clk_freerun_in
period in duration initializes the
process.
gtwiz_reset_tx_pll_and_dat Input 1 Async User signal to reset the transmit
apath_in data direction and associated
PLLs of transceiver primitives.
An active-High, asynchronous
pulse of at least one
gtwiz_reset_clk_freerun_in
period in duration initializes the
process.
gtwiz_reset_tx_datapath_in Input 1 Async User signal to reset the transmit
data direction of transceiver
primitives. An active-High,
asynchronous pulse of at least
one gtwiz_reset_clk_freerun_in
period in duration initializes the
process.
Table 2-3: Reset Controller Helper Block User Interface Ports on Core (Helper Block in Core)
Name Direction Width Clock Domain Description
gtwiz_reset_rx_pll_and_dat Input 1 Async User signal to reset the receive
apath_in data direction and associated
PLLs of transceiver primitives.
An active-High, asynchronous
pulse of at least one
gtwiz_reset_clk_freerun_in
period in duration initializes the
process.
gtwiz_reset_rx_datapath_in Input 1 Async User signal to reset the receive
data direction of transceiver
primitives. An active-High,
asynchronous pulse of at least
one gtwiz_reset_clk_freerun_in
period in duration initializes the
process.
gtwiz_reset_rx_cdr_stable_ Output 1 gtwiz_reset_clk_ Active-High indication that the
out freerun_in clock and data recovery (CDR)
circuits of the transceiver
primitives are stable. Reserved;
do not use.
gtwiz_reset_qpll0lock_in Input 1 × Num. Async QPLL0 lock signal, present when
commons the transceiver common is
located in the example design
and QPLL0 is used as either the
transmitter or receiver PLL type.
gtwiz_reset_qpll1lock_in Input 1 × Num. Async QPLL1 lock signal, present when
commons the transceiver common is
located in the example design
and QPLL1 is used as either the
transmitter or receiver PLL type.
gtwiz_reset_tx_done_out Output 1 TXUSRCLK2 of Active-High indication that the
TX master transmitter reset sequence of
channel transceiver primitives as
initiated by the reset controller
helper block has completed.
gtwiz_reset_rx_done_out Output 1 RXUSRCLK2 of Active-High indication that the
RX master receiver reset sequence of
channel transceiver primitives as
initiated by the reset controller
helper block has completed.
Table 2-3: Reset Controller Helper Block User Interface Ports on Core (Helper Block in Core)
Name Direction Width Clock Domain Description
gtwiz_reset_qpll0reset_out Output 1 × Num. gtwiz_reset_clk_ QPLL0 reset signal, present
commons freerun_in when the transceiver common is
located in the example design
and QPLL0 is used as either the
transmitter or receiver PLL type.
gtwiz_reset_qpll1reset_out Output 1 × Num. gtwiz_reset_clk_ QPLL1 reset signal, present
commons freerun_in when the transceiver common is
located in the example design
and QPLL1 is used as either the
transmitter or receiver PLL type.
The reset controller helper block user interface ports described in Table 2-4 are present on
the core instance when it is configured to locate the reset controller helper block in the
example design.
Table 2-4: Reset Controller Helper Block User Interface Ports on Core (Helper Block in Example
Design)
Clock
Name Direction Width Domain Description
The reset controller helper block user interface ports described in Table 2-5 are not present
on the core instance, but are present on the reset controller helper block itself when it is
included in the example design.
Table 2-5: Other Reset Controller Helper Block User Interface Ports (Helper Block in Example
Design)
The reset controller helper block transceiver interface ports described in Table 2-6 connect
the reset controller helper block to transceiver primitives. When the helper block is located
within the core, these connections are internal and the transceiver primitive inputs that are
driven by helper block outputs cannot be enabled as optional ports on the core instance.
Inversely, when the helper block is located in the example design, the connections cross the
core boundary so the transceiver primitive ports that connect to the helper block are
enabled by necessity.
Table 2-6: Reset Controller Helper Block Transceiver Interface Ports (Cont’d)
Name Direction Width Clock Domain Description
rxcdrlock_in Input 1 Async Logical AND of all RXCDRLOCK
signals produced by transceiver
channel primitives.
rxresetdone_in Input 1 Async Logical AND of all
RXRESETDONE signals produced
by transceiver channel
primitives.
pllreset_tx_out Output 1 gtwiz_reset_clk_freerun_in Active-High signal fanned out to
(used asynchronously) the reset ports of all PLLs that
clock the transmit datapath of
transceiver channel primitives.
txprogdivreset_out Output 1 gtwiz_reset_clk_freerun_in Active-High signal fanned out to
(used asynchronously) TXPROGDIVRESET port of all
transceiver channel primitives.
gttxreset_out Output 1 gtwiz_reset_clk_freerun_in Active-High signal fanned out to
(used asynchronously) GTTXRESET port of all
transceiver channel primitives.
txuserrdy_out Output 1 gtwiz_reset_clk_freerun_in Active-High signal fanned out to
(used asynchronously) TXUSERRDY port of all
transceiver channel primitives.
pllreset_rx_out Output 1 gtwiz_reset_clk_freerun_in Active-High signal fanned out to
(used asynchronously) the reset ports of all PLLs that
clock the receive datapath of
transceiver channel primitives.
rxprogdivreset_out Output 1 gtwiz_reset_clk_freerun_in Active-High signal fanned out to
(used asynchronously) RXPROGDIVRESET port of all
transceiver channel primitives.
gtrxreset_out Output 1 gtwiz_reset_clk_freerun_in Active-High signal fanned out to
(used asynchronously) GTRXRESET port of all
transceiver channel primitives.
rxuserrdy_out Output 1 gtwiz_reset_clk_freerun_in Active-High signal fanned out to
(used asynchronously) RXUSERRDY port of all
transceiver channel primitives.
Note: All Input/Output ports which are described as Async, are Synchronized to
gtwiz_reset_clk_freerun_in in the example design. In user designs, all asynchronous signals
coming as inputs to the IP, should be asserted for sufficient time. This ensures that the synchronizers
present inside the IP sampling on the gtwiz_reset_clk_freerun_in identify the toggles on
these ports.
The reset controller helper block ports described in Table 2-7 must be tied off. By default,
appropriate tie-offs are provided for each core customization.
The transmitter user clocking network helper block ports described in Table 2-8 are present
on the Wizard IP core instance when it is configured to locate the transmitter user clocking
network helper block in the core.
Table 2-8: Transmitter User Clocking Network Helper Block Ports on Core (Helper Block in Core)
Name Direction Width Clock Domain Description
gtwiz_userclk_tx_reset_in Input 1 Async User signal to reset the clocking
resources within the helper
block. The active-High assertion
should remain until
gtwiz_userclk_tx_srcclk_in/out is
stable.
gtwiz_userclk_tx_srcclk_out Output 1 Transceiver primitive-based
clock source used to derive and
buffer TXUSRCLK and
TXUSRCLK2 outputs.
gtwiz_userclk_tx_usrclk_out Output 1 Drives TXUSRCLK of transceiver
channel primitives. Derived from
gtwiz_userclk_tx_srcclk_in/out,
buffered and divided as
necessary by BUFG_GT primitive.
Table 2-8: Transmitter User Clocking Network Helper Block Ports on Core (Helper Block in Core)
Name Direction Width Clock Domain Description
gtwiz_userclk_tx_usrclk2_out Output 1 Drives TXUSRCLK2 of transceiver
channel primitives. Derived from
gtwiz_userclk_tx_srcclk_in/out,
buffered and divided as
necessary by BUFG_GT primitive
if required.
gtwiz_userclk_tx_active_out Output 1 gtwiz_userclk_ Active-High indication that the
tx_usrclk2_out clocking resources within the
helper block are not held in
reset.
The transmitter user clocking network helper block ports described in Table 2-9 are present
on the core instance when it is configured to locate the transmitter user clocking network
helper block in the example design.
Table 2-9: Transmitter User Clocking Network Helper Block User Interface Ports on Core
(Helper Block in Example Design)
Clock
Name Direction Width Domain Description
The transmitter user clocking network helper block ports described in Table 2-10 are not
present on the core instance but are present on the transmitter user clocking network
helper block itself when it is included in the example design.
Table 2-10: Other Transmitter User Clocking Network Helper Block User Interface Ports
(Helper Block in Example Design)
Clock
Name Direction Width Description
Domain
gtwiz_userclk_tx_srcclk_in Input 1 Transceiver primitive-based clock
source used to derive and buffer
TXUSRCLK and TXUSRCLK2 outputs.
The receiver user clocking network helper block ports described in Table 2-11 are present
on the Wizard core instance when it is configured to locate the receiver user clocking
network helper block in the core.
Table 2-11: Receiver User Clocking Network Helper Block Ports on Core (Helper Block in Core)
Name Direction Width Clock Domain Description
gtwiz_userclk_rx_reset_in Input 1 Async User signal to reset the clocking
resources within the helper
block. The active-High assertion
should remain until
gtwiz_userclk_rx_srcclk_in/out is
stable.
gtwiz_userclk_rx_srcclk_out Output 1 Transceiver primitive-based
clock source used to derive and
buffer the RXUSRCLK and
RXUSRCLK2 outputs.
gtwiz_userclk_rx_usrclk_out Output 1 Drives RXUSRCLK of transceiver
channel primitives. Derived
from gtwiz_userclk_rx_srcclk_in/
out, buffered and divided as
necessary by BUFG_GT
primitive.
gtwiz_userclk_rx_usrclk2_out Output 1 Drives RXUSRCLK2 of
transceiver channel primitives.
Derived from
gtwiz_userclk_rx_srcclk_in/out,
buffered and divided as
necessary by BUFG_GT primitive
if required.
gtwiz_userclk_rx_active_out Output 1 gtwiz_userclk_rx_ Active-High indication that the
usrclk2_out clocking resources within the
helper block are not held in
reset.
The receiver user clocking network helper block ports described in Table 2-12 are present
on the core instance when it is configured to locate the receiver user clocking network
helper block in the example design.
Table 2-12: Receiver User Clocking Network Helper Block User Interface Ports on Core (Helper
Block in Example Design)
Clock
Name Direction Width Domain Description
The receiver user clocking network helper block ports described in Table 2-13 are not
present on the core instance, but are present on the receiver user clocking network helper
block itself when it is included in the example design.
Table 2-13: Other Receiver User Clocking Network Helper Block User Interface Ports (Helper
Block in Example Design)
Clock
Name Direction Width Description
Domain
gtwiz_userclk_rx_srcclk_in Input 1 Transceiver primitive-based clock source
used to derive and buffer RXUSRCLK and
RXUSRCLK2 outputs.
User data width sizing helper block user interface ports can be identified by the prefix
gtwiz_userdata_. See Chapter 3, Designing with the Core, for information about the user
data width sizing helper block. The user and transceiver interfaces of the helper block
transmitter and receiver modules are described in Table 2-14 through Table 2-17.
Table 2-14: User Data Width Sizing Helper Block User Interface Ports (Transmitter Module)
Name Direction Width Clock Domain Description
gtwiz_userdata_tx_in Input TX user data width × TXUSRCLK2, per User interface
Num. channels channel for data to be
transmitted by
transceiver
channels
Table 2-15: User Data Width Sizing Helper Block User Interface Ports (Receiver Module)
Name Direction Width Clock Domain Description
gtwiz_userdata_rx_out Output RX user data width × RXUSRCLK2, per User interface
Num. channels channel for data
received by
transceiver
channels
Table 2-16: User Data Width Sizing Helper Block Transceiver Interface Ports
(Transmitter Module)
Name Direction Width Clock Domain Description
txdata_out Output 128 × Num. channels TXUSRCLK2, per Connects to TXDATA
channel on transceiver channel
primitives
txctrl0_out Output 16 × Num. channels TXUSRCLK2, per Connects to TXCTRL0
channel on transceiver channel
primitives
txctrl1_out Output 16 × Num. channels TXUSRCLK2, per Connects to TXCTRL1
channel on transceiver channel
primitives
Table 2-17: User Data Width Sizing Helper Block Transceiver Interface Ports (Receiver Module)
Name Direction Width Clock Domain Description
rxdata_in Input 128 × Num. channels RXUSRCLK2, per Connects to RXDATA on
channel transceiver channel
primitives
rxctrl0_out Input 16 × Num. channels RXUSRCLK2, per Connects to RXCTRL0
channel on transceiver channel
primitives
rxctrl1_out Input 16 × Num. channels RXUSRCLK2, per Connects to RXCTRL1
channel on transceiver channel
primitives
transceiver interface implements the signaling required to control the transceiver primitive
buffer bypass sequence.
Transmitter buffer bypass helper block user interface ports can be identified by the prefix
gtwiz_buffbypass_tx_. For guidance on the usage of the transmitter buffer bypass controller
helper block, see Chapter 3, Designing with the Core.
The transmitter buffer bypass controller helper block user interface ports described in
Table 2-18 are present on the Wizard IP core instance when it is configured to locate the
transmitter buffer bypass controller helper block in the core. The ports are also present on
the helper block itself, directly accessible when the helper block is located in the example
design.
Table 2-18: Transmitter Buffer Bypass Controller Helper Block User Interface Ports on Core
(Helper Block in Core)
Name Direction Width Clock Domain Description
gtwiz_buffbypass_tx_reset_in Input 1 gtwiz_buffbypass_ User signal to reset the
tx_clk_in logic within the helper
block. An active-High,
synchronous pulse should
be provided immediately
after TXUSRCLK2 stabilizes
for all transceiver
channels.
gtwiz_buffbypass_tx_start_user_in Input 1 gtwiz_buffbypass_ Active-High user signal
tx_clk_in that is synchronously
pulsed to force the
transmitter buffer bypass
procedure to restart. Hold
Low when not used.
gtwiz_buffbypass_tx_done_out Output 1 gtwiz_buffbypass_ Active-High indicates that
tx_clk_in the transmitter buffer
bypass procedure has
completed.
gtwiz_buffbypass_tx_error_out Output 1 gtwiz_buffbypass_ Active-High indicates that
tx_clk_in the transmitter buffer
bypass helper block
encountered an error
condition.
The transmitter buffer bypass controller helper block user interface ports described in
Table 2-19 are not present on the core instance but are present on the transmitter buffer
bypass controller helper block when it is included in the example design.
Table 2-19: Other Transmitter Buffer Bypass Controller Helper Block User Interface Ports
(Helper Block in Example Design)
The transmitter buffer bypass controller helper block transceiver interface ports (described
in Table 2-20) connect the transmitter buffer bypass controller helper block to transceiver
primitives. When the helper block is located within the core, these connections are internal,
and the transceiver primitive inputs that are driven by helper block outputs cannot be
enabled as optional ports on the core instance. Inversely, when the helper block is located
in the example design, the connections cross the core boundary, and the transceiver
primitive ports that connect to the helper block are enabled by necessity.
To implement the multi-lane buffer bypass procedure, the port width of each signal scales
with the number of transceiver channels that the transmitter buffer bypass controller helper
block interfaces to.
Table 2-20: Transmitter Buffer Bypass Controller Helper Block Transceiver Interface Port
Name Direction Width Clock Domain Description
txphaligndone_in Input 1 × Num. Async Connects to
channels TXPHALIGNDONE of
transceiver channel
primitives
txphinitdone_in Input 1 × Num. Async Connects to
channels TXPHINITDONE of
transceiver channel
primitives
txdlysresetdone_in Input 1 × Num. Async Connects to
channels TXDLYSRESETDONE of
transceiver channel
primitives
txsyncout_in Input 1 × Num. Async Connects to
channels TXSYNCOUT of
transceiver channel
primitives
Table 2-20: Transmitter Buffer Bypass Controller Helper Block Transceiver Interface Port
Name Direction Width Clock Domain Description
txsyncdone_in Input 1 × Num. Async Connects to
channels TXSYNCDONE of
transceiver channel
primitives
txphdlyreset_out Output 1 × Num. Tied off Connects to
channels TXPHDLYRESET of
transceiver channel
primitives
txphalign_out Output 1 × Num. Tied off Connects to TXPHALIGN
channels of transceiver channel
primitives
txphalignen_out Output 1 × Num. Tied off Connects to
channels TXPHALIGNEN of
transceiver channel
primitives
txphdlypd_out Output 1 × Num. Tied off Connects to TXPHDLYPD
channels of transceiver channel
primitives
txphinit_out Output 1 × Num. Tied off Connects to TXPHINIT of
channels transceiver channel
primitives
txphovrden_out Output 1 × Num. Tied off Connects to
channels TXPHOVRDEN of
transceiver channel
primitives
txdlysreset_out Output 1 × Num. gtwiz_buffbypass_tx_clk_in Connects to
channels (used asynchronously) TXDLYSRESET of
transceiver channel
primitives
txdlybypass_out Output 1 × Num. Tied off Connects to
channels TXDLYBYPASS of
transceiver channel
primitives
txdlyen_out Output 1 × Num. Tied off Connects to TXDLYEN of
channels transceiver channel
primitives
txdlyovrden_out Output 1 × Num. Tied off Connects to
channels TXDLYOVRDEN of
transceiver channel
primitives
txphdlytstclk_out Output 1 × Num. Tied off Connects to
channels TXPHDLYTSTCLK of
transceiver channel
primitives
Table 2-20: Transmitter Buffer Bypass Controller Helper Block Transceiver Interface Port
Name Direction Width Clock Domain Description
txdlyhold_out Output 1 × Num. Tied off Connects to
channels TXDLYHOLD of
transceiver channel
primitives
txdlyupdown_out Output 1 × Num. Tied off Connects to
channels TXDLYUPDOWN of
transceiver channel
primitives
txsyncmode_out Output 1 × Num. Tied off Connects to
channels TXSYNCMODE of
transceiver channel
primitives
txsyncallin_out Output 1 × Num. Async Connects to
channels TXSYNCALLIN of
transceiver channel
primitives
txsyncin_out Output 1 × Num. Async Connects to TXSYNCIN
channels of transceiver channel
primitives
Receiver buffer bypass helper block user interface ports can be identified by the prefix
gtwiz_buffbypass_rx_. For guidance on the usage of the receiver buffer bypass controller
helper block, see Chapter 3, Designing with the Core.
The receiver buffer bypass controller helper block user interface ports described in
Table 2-21 are present on the Wizard IP core instance when it is configured to locate the
receiver buffer bypass controller helper block in the core. The ports are also present on the
helper block itself, directly accessible when the helper block is located in the example
design.
Table 2-21: Receiver Buffer Bypass Controller Helper Block User Interface Ports on Core
(Helper Block in Core)
Name Direction Width Clock Domain Description
gtwiz_buffbypass_rx_reset_in Input 1 gtwiz_buffbypass_ User signal to reset the
rx_clk_in logic within the helper
block. An active-High,
synchronous pulse
should be provided
immediately after
RXUSRCLK2 stabilizes for
all transceiver channels.
gtwiz_buffbypass_rx_start_user_in Input 1 gtwiz_buffbypass_ Active-High user signal
rx_clk_in that is synchronously
pulsed to force the
receiver buffer bypass
procedure to restart.
Hold Low when not used.
gtwiz_buffbypass_rx_done_out Output 1 gtwiz_buffbypass_ Active-High indicates
rx_clk_in that the receiver buffer
bypass procedure has
completed.
gtwiz_buffbypass_rx_error_out Output 1 gtwiz_buffbypass_ Active-High indicates
rx_clk_in that the receiver buffer
bypass helper block
encountered an error
condition.
The receiver buffer bypass controller helper block user interface ports described in
Table 2-22 are not present on the core instance but are present on the receiver buffer
bypass controller helper block itself when it is included in the example design.
Table 2-22: Other Receiver Buffer Bypass Controller Helper Block User Interface Ports (Helper
Block in Example Design)
Clock
Name Direction Width Description
Domain
gtwiz_buffbypass_rx_clk_in Input 1 Transceiver primitive-based clock
used to control the receiver buffer
bypass controller helper block.
Must be driven by the same
source that drives RXUSRCLK2 of
the receiver master channel.
gtwiz_buffbypass_rx_resetdone_in Input 1 Async Active-High indication that
receiver reset sequence has
completed, which allows the
buffer bypass procedure to begin.
The receiver buffer bypass controller helper block transceiver interface ports described in
Table 2-23 connect the receiver buffer bypass controller helper block to transceiver
primitives. When the helper block is located within the core, these connections are internal,
and the transceiver primitive inputs that are driven by helper block outputs cannot be
enabled as optional ports on the core instance. Inversely, when the helper block is located
in the example design, the connections cross the core boundary, so the transceiver
primitive ports that connect to the helper block are enabled by necessity.
To implement the multi-lane buffer bypass procedure, the width of each port scales with the
number of transceiver channels that the receiver buffer bypass controller helper block
interfaces to. When the single-lane buffer bypass procedure is used, one instance of the
helper block exists per transceiver channel, so the scaling factor is 1.
Table 2-23: Receiver Buffer Bypass Controller Helper Block Transceiver Interface Ports
Name Direction Width Clock Domain Description
rxphaligndone_in Input 1 × Num. Async Connects to
channels RXPHALIGNDONE of
transceiver channel
primitives
rxdlysresetdone_in Input 1 × Num. Async Connects to
channels RXDLYSRESETDONE of
transceiver channel
primitives
rxsyncout_in Input 1 × Num. Async Connects to RXSYNCOUT
channels of transceiver channel
primitives
rxsyncdone_in Input 1 × Num. Async Connects to RXSYNCDONE
channels of transceiver channel
primitives
rxphdlyreset_out Output 1 × Num. Tied off Connects to
channels RXPHDLYRESET of
transceiver channel
primitives
rxphalign_out Output 1 × Num. Tied off Connects to RXPHALIGN
channels of transceiver channel
primitives
rxphalignen_out Output 1 × Num. Tied off Connects to
channels RXPHALIGNEN of
transceiver channel
primitives
rxphdlypd_out Output 1 × Num. Tied off Connects to RXPHDLYPD
channels of transceiver channel
primitives
rxphovrden_out Output 1 × Num. Tied off Connects to RXPHOVRDEN
channels of transceiver channel
primitives
rxdlysreset_out Output 1 × Num. gtwiz_buffbypass_rx_clk_in Connects to RXDLYSRESET
channels (used asynchronously) of transceiver channel
primitives
Table 2-23: Receiver Buffer Bypass Controller Helper Block Transceiver Interface Ports (Cont’d)
Name Direction Width Clock Domain Description
rxdlybypass_out Output 1 × Num. Tied off Connects to RXDLYBYPASS
channels of transceiver channel
primitives
rxdlyen_out Output 1 × Num. Tied off Connects to RXDLYEN of
channels transceiver channel
primitives
rxdlyovrden_out Output 1 × Num. Tied off Connects to
channels RXDLYOVRDEN of
transceiver channel
primitives
rxsyncmode_out Output 1 × Num. Tied off Connects to
channels RXSYNCMODE of
transceiver channel
primitives
rxsyncallin_out Output 1 × Num. Async Connects to RXSYNCALLIN
channels of transceiver channel
primitives
rxsyncin_out Output 1 × Num. Tied off Connects to RXSYNCIN of
channels transceiver channel
primitives
The width of each port scales with the number of transceiver common primitives
instantiated within the core instance. The least significant bit(s) correspond to the first
enabled transceiver common primitive in increasing grid order, where the Y axis increments
before X. For example, the QPLL0REFCLKSEL port on a transceiver common primitive is
3 bits in size. In a hypothetical Wizard IP core customization that instantiates three GTH
transceiver common primitives in physical positions GTHE3_COMMON_X0Y2,
GTHE3_COMMON_X0Y5, and GTHE3_COMMON_X1Y3, the qpll0refclksel_in port on
the core instance is sized [8:0], where:
By vectoring in this manner, the user interface of the core is compact and predictable. As a
convenience, the example design also provides per-primitive signals that are assigned the
relevant bit slices of the concatenated vectors. See Chapter 5, Example Design, for more
details on example design features.
This document does not provide guidance on the usage of the transceiver primitive ports.
See the UltraScale Architecture GTH Transceivers User Guide (UG576) [Ref 1] or UltraScale
Architecture GTY Transceivers User Guide (UG578) [Ref 2] for relevant details.
The width of each port scales with the number of transceiver channel primitives instantiated
within the core instance. The least significant bit(s) correspond to the first enabled
transceiver channel primitive in increasing grid order, where the Y axis increments before X.
For example, the TXDIFFCTRL port on a transceiver channel primitive is 4 bits in size. In a
hypothetical Wizard IP core customization which instantiates three GTH transceiver channel
primitives in physical positions GTHE3_CHANNEL_X0Y3, GTHE3_CHANNEL_X0Y10, and
GTHE3_CHANNEL_X1Y0, the txdiffctrl_in port on the core instance will be sized [11:0],
where:
By vectoring in this manner, the user interface of the core is compact and predictable. As a
convenience, the example design also provides per-primitive signals, which are assigned
the relevant bit slices of the concatenated vectors. See Chapter 5, Example Design, for more
details on example design features.
This document does not provide guidance on the usage of the transceiver primitive ports.
See the UltraScale Architecture GTH Transceivers User Guide (UG576) [Ref 1] or UltraScale
Architecture GTY Transceivers User Guide (UG578) [Ref 2] for relevant details.
The Wizard provides a highly flexible Vivado® Integrated Design Environment (IDE)-driven
customization flow, which in addition to basic customization of transceiver use modes, also
includes a physical resource site selection interface, an optional port enablement interface,
and helper block location choices. The result is a core instance that addresses the specific
needs of your application. As such, Wizard IP core instances do not require manual
modification and should not be edited. Xilinx cannot guarantee timing, functionality, or
support if modifications are made to any output products of the generated core.
Consider the benefits and drawbacks of each choice when deciding whether to locate each
helper block within the core or in the example design. The primary benefits of locating a
helper block within the core are a simpler, more abstracted interface, and that as part of the
core, the helper block is also updated if you upgrade the core to a new version. However,
the helper block is not accessible for manual modification if different behavior is required
for your use case.
The primary benefit of locating a helper block within the example design is that you gain
the ability to use it as an example starting point, should connectivity or contents require
modification to suit your specific needs. However, because it is not part of the core, the
example design must be regenerated and any manual edits must be performed again if you
upgrade the core to a new version. Xilinx cannot guarantee support for modifications made
to the example design contents as they are delivered.
A single instance of the helper block is delivered with each instance of the Wizard IP core.
Its user interface provides you with a simple means of initiating and monitoring the
completion of transceiver reset procedures. Its transceiver interface connects to each
transceiver primitive resource within the core instance.
• Transmitter reset state machine: Resets the transmitter PLL and/or the transmitter
datapath of all transceiver primitives, and indicates their completion
• Receiver reset state machine: Resets the receiver PLL and/or the receiver datapath of
all transceiver primitives, and indicates their completion
• “Reset all” state machine: Controls the transmitter and receiver reset state machines
and sequences them appropriately to reset all of the necessary transceiver primitives
without redundant operations
The transmitter and receiver reset state machines are independent of one another, and each
can be initiated either directly through the user interface if needed, or they can be
controlled by the “reset all” state machine if you initiate a reset all command. The reset all
state machine is provided as a convenience and is useful for initial bring-up. However, it is
not necessary to use if only independent transmitter and reset sequences are desired.
ST_RESET_ALL_TX_PLL ST_RESET_ALL_RX_PLL
Reset TX PLL and Datapath TX Reset Done and Reset RX PLL and Datapath
RX Direction Enabled and
PLL Not Shared Between TX & RX
ST_RESET_ALL_RX_DP
ST_RESET_ALL_TX_PLL_WAIT ST_RESET_ALL_RX_WAIT
Reset RX Datapath
ST_RESET_ALL_DONE
TX Reset Done and RX Reset Done
RX Direction Not Enabled
Transmitter Reset TX PLL and Datapath Reset Requested or Receiver Reset RX PLL and Datapath Reset Requested or
TX Datapath Reset Requested RX Datapath Reset Requested
State Machine State Machine
ST_RESET_TX_BRANCH ST_RESET_RX_BRANCH
TX PLL and Datapath Reset Requested TX Datapath Reset Requested RX PLL and Datapath Reset Requested RX Datapath Reset Requested
ST_RESET_TX_WAIT_LOCK ST_RESET_RX_WAIT_LOCK
TX PLL Locked TX PLL Not Locked RX PLL Locked RX PLL Not Locked
GTTXRESET ‘0’ GTRXRESET ‘0’
ST_RESET_TX_WAIT_USERRDY ST_RESET_RX_WAIT_CDR
RX Reset Done
If TX PLL Not Locked then
RX Reset Not Done
TX Reset Done User Indicator ‘0’ RX Reset Done User Indicator ‘1’
ST_RESET_RX_IDLE
X14540
The transmitter reset state machine initiates a PLL reset followed by a transmitter datapath
reset when the gtwiz_reset_tx_pll_and_datapath_in input is pulsed. All PLLs
(either QPLL or CPLL type) instantiated by the core instance that are used to clock the
transmitter datapath are reset in response to this input. After all these PLLs lock, the
transmitter programmable dividers and datapaths of all transceiver primitives are reset. If a
PLL reset is not needed, a transmitter datapath-only reset is initiated when the
gtwiz_reset_tx_datapath_in input is pulsed. Regardless of the reset entry point, the
gtwiz_reset_tx_done_out indicator is asserted synchronous to transmitter master
channel TXUSRCLK2 upon completion of the transmitter reset sequence for all transceiver
primitives.
Likewise, the receiver reset state machine initiates a PLL reset followed by a receiver
datapath reset when the gtwiz_reset_rx_pll_and_datapath_in input is pulsed. All
PLLs (either QPLL or CPLL type) instantiated by the core instance that are used to clock the
receiver datapath are reset in response to this input. When all these PLLs lock, the receiver
datapaths of all transceiver primitives are reset. If a PLL reset is not needed, a receiver
datapath-only reset is initiated when the gtwiz_reset_rx_datapath_in input is
pulsed. Regardless of the reset entry point, the gtwiz_reset_rx_done_out indicator is
asserted synchronous to receiver master channel RXUSRCLK2 upon completion of the
receiver reset sequence for all transceiver primitives.
IMPORTANT: The independent transmitter and receiver reset state machines are simple and useful.
However, because PLLs can be shared between transmitter and receiver datapaths, it is important to
understand the potential system impacts when using the
gtwiz_reset_tx_pll_and_datapath_in and gtwiz_reset_rx_pll_and_datapath_in
inputs. For example, if both transmitter and receiver datapaths are clocked by QPLL0 resources,
assertion of either of those two inputs would reset the shared QPLL0 of each transceiver Quad, causing
potentially-unintended link loss in the other data direction. Use these inputs with caution, especially if
PLL resources are shared with other core instances.
The reset all state machine can be used to avoid just such redundant PLL reset sequences.
In addition, it resets the transmitter data direction before the receiver data direction (which
can improve data integrity in loopback or some other circumstances) and is triggered by a
simple one-input interface. The reset all state machine does not sequence transceiver
primitive reset signals itself. Rather, it controls the transmitter and receiver reset state
machines in the appropriate fashion for your core customization—effectively controlling
some sequence of gtwiz_reset_tx_pll_and_datapath_in,
gtwiz_reset_rx_pll_and_datapath_in, and gtwiz_reset_rx_datapath_in
assertions. See Figure 3-1 to visualize the specific effects of the reset all state machine for
your core customization, noting that the reset all state machine is initialized by the falling
edge of the synchronized gtwiz_reset_all_in input.
• Do not attempt to perform transceiver channel DRP transactions in the time period
between initializing a CPLL reset and assertion of the CPLL lock indicator, or in the time
period between releasing the CPLL from power-down mode and initializing a CPLL
reset. During these times, transceiver channel DRP transactions are ignored.
• Do not attempt to assert txprogdivreset_in or change the value of the
txoutclksel_in port in the time period between initializing a CPLL reset and
assertion of the CPLL lock indicator, or in the time period between releasing the CPLL
from power-down mode and initializing a CPLL reset. During this time, inputs on these
ports are ignored.
• Each bit of the drpclk_in port must be driven by the free-running clock, operating at
exactly the frequency specified during IP customization. See Performance, page 10, for
more details.
• If the transmitter user clocking network helper block is located in the example design,
then the gtwiz_userclk_tx_reset_in port on the helper block and the
gtwiz_userclk_tx_reset_in port on the core must be driven by the same source.
See Transmitter User Clocking Network Helper Block Ports, page 19, for more details.
• The time required to achieve CPLL lock in hardware operation can vary between CPLL
resets.
• Resetting the CPLL temporarily disrupts the TXOUTCLK signal, and therefore also the
clocks produced by the transmitter user clocking network helper block, even when the
CPLL is used exclusively for the receiver data path. This is because the CPLL calibration
procedure takes control of TXOUTCLK during CPLL reset, irrespective of which
resources the CPLL drives. If runtime disruption to transmitter user clocks are not
tolerable in configurations where the CPLL drives only receiver resources, take care to
reset and achieve lock on the CPLL prior to, or separate from bringing up transmitter
resources.
CPLL lock indicators can include gtwiz_reset_tx_done_out (when the CPLL is used for
the transmitter data path), gtwiz_reset_rx_done_out (when the CPLL is used for the
receiver datapath), or cplllock_out (when the reset controller helper block is not used,
or if a direct CPLL lock indicator is desired).
• After configuration
• Removing/re-applying reference clock
• Asserting/de-asserting CPLLPD
In the failure state, the CPLL may freeze at an invalid output frequency and the CPLLLOCK
signal may incorrectly be set high. The solution for this issue is to include the CPLL
Calibration block. The following user parameters are added to the UltraScale GT Wizard IP
without the GUI presence for this purpose:
• INCLUDE_CPLL_CAL:
° Default Value => 2: For CPLL configured IPs, the CPLL Calibration block will be
enabled internally by default for GTHE4 and GTYE4.
° setting 0 => Continues to use the large counters in CPLL Calibration block and
mimics the hardware behavior
° setting 1 => Bypasses some of the counters in CPLL Calibration block through
usage of synthesis translate on/off pragmas and improve functional simulation
time.
To enable the CPLL Calibration block for GTYE4/GTHE4 UltraScale+ devices, set the value of
INCLUDE_CPLL_CAL to 1 while generating the IP through TCL customization. This
additional block could result in higher simulation times. This is because CPLL calibration
block evaluates the frequency at which the CPLL lock is achieved. To bypass this block to
reduce functional simulation time, set the SIM_CPLL_CAL_BYPASS user parameter to 1
during IP customization.
Note: This will not have any effect on post-synthesis simulations and hardware functionality.
The CPLL Calibration block is now enhanced to work with both TX alone or RX alone for
advanced use cases. When Both TX alone or TX + RX are using CPLL, then only the TX CPLL
Calibration block would be applicable, while in the use case where TX is not CPLL and RX is
CPLL (txpllclksel_in!= 2 and rxpllclksel_in ==2), then RX CPLL Calibration block
is used. The below CPLL Calibration block ports are exposed only when the
INCLUDE_CPLL_CAL user parameter is set to 1, the default values corresponding to the
line-rate are obtained by open-example design step or by following the equation specified
in the Description field. If you set the value of INCLUDE_CPLL_CAL to 2, the HDL logic
inside the wizard drives the relevant ports internally for configuration during IP
customization. Xilinx recommends that the INCLUDE_CPLL_CAL parameter be set to 1 and
appropriate values be driven on the ports shown in Table 3-1 when the GT parent IP intends
to perform dynamic line rate switching. For more information and guidance on rate usage
of these ports, see Xilinx Answer: AR# 70485.
sequences upon completion of the reset sequences. This wiring exists regardless of the
location of each helper block.
Following device configuration, no reset helper block reset inputs should be asserted until
transceiver power is reported as good. The reset controller helper block internally holds all
PLL and datapath resources in reset until GTPOWERGOOD is High from all transceiver
channels, then subsequently resets all transceiver resources by transitioning once through
the reset all state machine. As a result, you should wait for either the initial assertion of all
bits of the gtpowergood_out port (if you have exposed the port), or of both
gtwiz_reset_tx_done_out and gtwiz_reset_rx_done_out before attempting
subsequent resets of any kind. However with UltraScale+ devices, it has been observed that
if the JTAG frequency with which the FPGA is programmed is greater than 6MHz,then there
could be some initial instability on the GT Reference clock output from IBUFDS_GTE4
followed by BUFG_GT. To avoid this, a user delay powergood logic is added by default
inside the GT Wizard IP to hold the gtpowergood_out so that the logic is kept in reset
initially. USER_GTPOWERGOOD_DELAY_EN user parameter has been added for enabling
this. You should not set the value of this parameter to 0 when CPLL is enabled, as the CPLL
Calibration block which is mandatory could be using the GT Reference clock source.
When the transmitter reset state machine is complete, if one or more PLLs that clock
transceiver primitive transmitter datapaths lose lock, the gtwiz_reset_tx_done_out
user indicator is de-asserted. A reset sequence does not automatically restart in this
circumstance; user intervention is required.
Similarly, when the receiver reset state machine has completed, if one or more PLLs that
clock transceiver primitive receiver datapaths lose lock, the gtwiz_reset_rx_done_out
user indicator is de-asserted. A reset sequence does not automatically restart in this
circumstance; user intervention is required.
The helper block can be located either within the core or in the example design per user
selection. Depending on its location and the location of other helper blocks, the relevant
ports are enabled on the core interface so that the necessary signals can cross the core
boundary.
If additional reset control or related ports are required for your application, or if you wish to
observe individual transceiver primitive reset status signals, you can enable the relevant
ports on the core instance using the optional ports interface during IP customization.
See Chapter 2, Product Specification, for a description of all reset controller block ports.
See the UltraScale Architecture GTH Transceivers User Guide (UG576) [Ref 1] or UltraScale
Architecture GTY Transceivers User Guide (UG578) [Ref 2] for complete documentation on
resetting and initializing the transceiver primitives.
A single instance of the helper block is delivered with each instance of the Wizard IP core.
By default, its source clock input port, gtwiz_userclk_tx_srcclk_in, is driven by the
TXOUTCLK port of the master transceiver channel. Within the helper block, this source
drives either one or two BUFG_GT primitives, which are global clock buffers that are capable
of clock division.
As shown in Figure 3-2, if the TXUSRCLK and TXUSRCLK2 frequencies are identical (which
is the case when the transmitter user data width is narrower than or equal to the size of the
internal data width), then only a single BUFG_GT is instantiated within the helper block. This
buffer drives both gtwiz_userclk_tx_usrclk_out and
gtwiz_userclk_tx_usrclk2_out helper block output ports, which are wired to the
TXUSRCLK and TXUSRCLK2 input ports, respectively, of each transceiver channel primitive.
The helper block configures the BUFG_GT to divide the source clock down to the correct
user clock frequency as required.
X-Ref Target - Figure 3-2
gtwiz_userclk_tx_srcclk_in gtwiz_userclk_tx_usrclk_out
From TXOUTCLK of TX Master Channel To TXUSRCLK of All Channels
/
gtwiz_userclk_tx_usrclk2_out
To TXUSRCLK2 of All Channels
/
X14541
Figure 3-2: Transmitter User Clocking Network Helper Block (with One BUFG_GT)
As shown in Figure 3-3, if TXUSRCLK is twice the frequency of TXUSRCLK2 (which is the
case when the transmitter user data width is wider than the internal data width), then two
BUFG_GT primitives are instantiated within the helper block. The helper block configures
one BUFG_GT to divide the source clock down to the correct transmitter datapath frequency
and drive the gtwiz_userclk_tx_usrclk_out helper block output port, which is wired
to the TXUSRCLK input port of each transceiver channel primitive. The helper block
configures the other BUFG_GT to divide the source clock down to the correct transmitter
user interface frequency and drive the gtwiz_userclk_tx_usrclk2_out helper block
output port, which is wired to the TXUSRCLK2 input port of each transceiver channel
primitive.
X-Ref Target - Figure 3-3
gtwiz_userclk_tx_srcclk_in gtwiz_userclk_tx_usrclk_out
From TXOUTCLK of TX Master Channel To TXUSRCLK of All Channels
/
gtwiz_userclk_tx_usrclk2_out
To TXUSRCLK2 of All Channels
/
X14542
The helper block can be located either within the core, or in the example design, per user
selection. If included within the core, wiring from the master transceiver channel primitive
TXOUTCLK output port to the helper block gtwiz_userclk_tx_srcclk_in input port is
also internal to the core, but that clock signal is presented on the core interface as
gtwiz_userclk_tx_srcclk_out. Similarly, wiring between the helper block
gtwiz_userclk_tx_usrclk_out and gtwiz_userclk_tx_usrclk2_out output
ports and the transceiver channel primitives is internal to the core but those helper block
outputs are also presented on the core interface.
If the helper block is located within the example design, then by necessity, the relevant
transceiver channel clock ports are enabled on the core interface so that the necessary
signals can cross the core boundary.
If additional clock signals or related ports are required for your application, you can enable
the relevant ports on the core instance through the optional ports interface during IP
customization. See Chapter 2, Product Specification, for a description of all transmitter user
clocking network helper block ports. See the UltraScale Architecture GTH Transceivers User
Guide (UG576) [Ref 1] or UltraScale Architecture GTY Transceivers User Guide (UG578) [Ref 2]
for complete documentation on clocking the transceiver primitives.
A single instance of the helper block is usually delivered with each instance of the Wizard IP
core. Alternatively, when the receiver elastic buffer is bypassed and single-lane buffer
bypass mode is enabled, one instance of the helper block is delivered for, and wired to, each
independently clocked transceiver channel primitive instance.
As shown in Figure 3-4, if RXUSRCLK and RXUSRCLK2 frequencies are identical (which is
the case when the receiver user data width is narrower than or equal to the size of the
internal data width), then only a single BUFG_GT is instantiated within the helper block. This
buffer drives both gtwiz_userclk_rx_usrclk_out and
gtwiz_userclk_rx_usrclk2_out helper block output ports, which are wired to the
RXUSRCLK and RXUSRCLK2 input ports, respectively, of the appropriate transceiver
channel primitive(s). The helper block configures the BUFG_GT to divide the source clock
down to the correct user clock frequency as required.
gtwiz_userclk_rx_srcclk_in
From RXOUTCLK of gtwiz_userclk_rx_usrclk_out
RX Master Channel To RXUSRCLK of All Channels
/
gtwiz_userclk_rx_usrclk2_out
To RXUSRCLK2 of All Channels
/
gtwiz_userclk_rx_srcclk_in gtwiz_userclk_rx_usrclk_out
From RXOUTCLK of To RXUSRCLK of
Corresponding Channel Corresponding Channel
/
gtwiz_userclk_rx_usrclk2_out
To RXUSRCLK2 of
Corresponding Channel
/
X14543
Figure 3-4: Receiver User Clocking Network Helper Block (with One BUFG_GT)
As shown in Figure 3-5, if RXUSRCLK is twice the frequency of RXUSRCLK2 (which is the
case when the receiver user data width is wider than the internal data width), then two
BUFG_GT primitives are instantiated within the helper block. The helper block configures
one BUFG_GT to divide the source clock down to the correct receiver datapath frequency
and drive the gtwiz_userclk_rx_usrclk_out helper block output port, which is wired
to the RXUSRCLK input port of the appropriate transceiver channel primitive(s). The helper
block configures the other BUFG_GT to divide the source clock down to the correct receiver
user interface frequency and drive the gtwiz_userclk_rx_usrclk2_out helper block
output port, which is wired to the RXUSRCLK2 input port of the appropriate transceiver
channel primitive(s).
gtwiz_userclk_rx_srcclk_in
From RXOUTCLK of gtwiz_userclk_rx_usrclk_out
RX Master Channel To RXUSRCLK of All Channels
/
gtwiz_userclk_rx_usrclk2_out
To RXUSRCLK2 of All Channels
/
gtwiz_userclk_rx_srcclk_in gtwiz_userclk_rx_usrclk_out
From RXOUTCLK of To RXUSRCLK of
Corresponding Channel Corresponding Channel
/
gtwiz_userclk_rx_usrclk2_out
To RXUSRCLK2 of
Corresponding Channel
/
X14544
Figure 3-5: Receiver User Clocking Network Helper Block (with Two BUFG_GT Primitives)
The helper block holds BUFG_GT primitive(s) in reset when the
gtwiz_userclk_rx_reset_in user input is asserted. This reset input should be held
High until the source clock input is known to be stable. When the reset input is released, the
gtwiz_userclk_rx_active_out user indicator synchronously asserts, indicating an
active user clock and allowing dependent helper blocks to proceed.
The helper block can be located either within the core or in the example design per user
selection. If included within the core, wiring from the appropriate transceiver channel
primitive RXOUTCLK output port(s) to the helper block gtwiz_userclk_rx_srcclk_in
input port(s) is also internal to the core, but that clock signal is presented on the core
interface as gtwiz_userclk_rx_srcclk_out.
transceiver channel clock ports are enabled on the core interface so that the necessary
signals can cross the core boundary.
If additional clock signals or related ports are required for your application, you can enable
the relevant ports on the core instance through the optional ports interface during IP
customization. For a description of all receiver user clocking network helper block ports, see
Chapter 2, Product Specification. See the UltraScale Architecture GTH Transceivers User
Guide (UG576) [Ref 1] or UltraScale Architecture GTY Transceivers User Guide (UG578) [Ref 2]
for complete documentation on clocking the transceiver primitives.
The TXDATA and RXDATA ports of each transceiver channel are 128 bits, but only those bits
within the range of the configured transmitter and receiver user data widths are used; other
bits are to be tied off or left unconnected, respectively. When multiple channels are
enabled, it can be inconvenient to identify the active bits of the txdata_in and
rxdata_out core port vectors. Furthermore, for user data widths of 20, 40, 80, or 160 bits,
portions of TXCTRL0 and TXCTRL1 are interleaved with TXDATA, and portions of RXCTRL0
and RXCTRL1 are interleaved with RXDATA.
The helper block handles this transceiver-facing complexity while providing a simple user
interface sized to the chosen user data width utilizing wiring only. The helper block is
divided into two independent modules: a transmitter module and a receiver module. Both
modules use generated HDL wire assignments. Because no combinatorial or sequential
logic is used, there is no impact on the datapath.
Transmitter Module
The helper block transmitter module port gtwiz_userdata_tx_in is a vector sized to
the chosen transmitter user data width, multiplied by the number of enabled transceiver
channels. By core convention, its least significant bits correspond to the least significant
bits of the transceiver channel in the lowest enabled XY grid position.
Figure 3-6 shows the helper block configuration for an example core configuration using a
32-bit transmitter user data width and four enabled transceiver channels. With the resulting
packed 128-bit gtwiz_userdata_tx_in vector, the helper block drives the appropriate
bits of each transceiver channel’s TXDATA port. For 20-, 40-, 80-, and 160-bit transmitter
user data widths, it also drives the appropriate bits of each transceiver channel’s TXCTRL0
and TXCTRL1 ports, handling the required de-interleaving. In other configurations, the
TXCTRL0 and TXCTRL1 ports are not driven by the helper block and are available for user
access.
X14545
Figure 3-6: User Data Width Sizing Helper Block (Transmitter Module) Example Configuration
Receiver Module
The helper block receiver module port gtwiz_userdata_rx_out is a vector sized to the
chosen receiver user data width multiplied by the number of enabled transceiver channels.
By core convention, its least significant bits correspond to the least significant bits of the
transceiver channel in the lowest enabled XY grid position.
Figure 3-7 shows the helper block configuration for an example core configuration using a
32-bit receiver user data width and four enabled transceiver channels. The resulting packed
128-bit gtwiz_userdata_rx_out helper block vector provides received data from the
appropriate bits from each transceiver channel’s RXDATA port. For 20-, 40-, 80-, and 160-bit
receiver user data widths, it also provides the appropriate bits from each transceiver
channel’s RXCTRL0 and RXCTRL1 ports, handling the required interleaving. The RXCTRL0
and RXCTRL1 ports are available for user access.
X-Ref Target - Figure 3-7
X14546
Figure 3-7: User Data Width Sizing Helper Block (Receiver Module) Example Configuration
A single instance of the helper block is delivered with each instance of the Wizard IP core
that is configured to bypass the transmitter buffer. Its user interface provides you with a
simple means of initiating and monitoring the status of the transmitter buffer bypass
procedure. Its transceiver interface connects to each transceiver channel primitive within
the core.
For core configurations that contain multiple serial transceiver primitives, the helper block
implements the multi-lane buffer bypass procedure. The transmitter master channel is
specified during IP customization.
Table 3-2: Transmitter Buffer Bypass Controller Helper Block Completion Result Encoding
gtwiz_buffbypass_tx_done_out gtwiz_buffbypass_tx_error_out Buffer Bypass Procedure Result
0 Any Not complete
1 0 Completed successfully
1 1 Completed with error
The helper block can be located either within the core or in the example design per user
selection. Depending on its location and the location of other helper blocks, the relevant
ports are enabled on the core interface so that the necessary signals can cross the core
boundary. If you choose to locate the helper block within the core but also wish to observe
individual transceiver primitive buffer bypass status signals, you can enable the relevant
ports on the core instance through the optional ports interface during IP customization.
See Chapter 2, Product Specification, for a description of all transmitter buffer bypass
controller helper block ports. See the UltraScale Architecture GTH Transceivers User Guide
(UG576) [Ref 1] or UltraScale Architecture GTY Transceivers User Guide (UG578) [Ref 2] for
complete information about bypassing the transmitter buffer in transceiver primitives.
• If multi-lane buffer bypass mode is enabled, one instance of the helper block is
delivered and implements the multi-lane buffer bypass procedure. In this case, the user
interface port width is not scaled, while the transceiver interface is scaled to the
number of channel primitives in the core.
• If single-lane buffer bypass mode is enabled, an instance of the helper block is
delivered for, and wired to each transceiver channel primitive instance. In this case, the
user interface port width scales with the number of helper blocks, while the transceiver
interface connects to its corresponding channel primitive only.
The helper block user interface provides you with a simple means of initiating and
monitoring the status of the receiver buffer bypass procedure. Its transceiver interface
connects to transceiver channel primitive(s) within the core.
Table 3-3: Transmitter Buffer Bypass Controller Helper Block Completion Result Encoding
gtwiz_buffbypass_rx_done_out gtwiz_buffbypass_rx_error_out Buffer Bypass Procedure Result
0 Any Not complete
1 0 Completed successfully
1 1 Completed with error
You can force the receiver buffer bypass controller helper block to initiate the buffer bypass
procedure at any time after the helper block has been reset and the initial procedure has
completed by pulsing the gtwiz_buffbypass_rx_start_user_in user input.
The helper block can be located either within the core or in the example design per user
selection. Depending on its location and the location of other helper blocks, the relevant
ports are enabled on the core interface so that the necessary signals can cross the core
boundary.
If you choose to locate the helper block within the core but also wish to observe individual
transceiver primitive buffer bypass status signals, you can enable the relevant ports on the
core instance through the optional ports interface during IP customization.
See Chapter 2, Product Specification, for a description of all receiver buffer bypass
controller helper block ports. See the UltraScale Architecture GTH Transceivers User Guide
(UG576) [Ref 1] or UltraScale Architecture GTY Transceivers User Guide (UG578) [Ref 2] for
complete documentation on bypassing the receiver elastic buffer in transceiver primitives.
• You attempt to place the physical transceiver resources of those core instances into a
single transceiver Quad, and
• The transceiver common configuration is identical or otherwise safe to share between
the two core instances.
Transceiver common sharing between core instances is an advanced use mode and should
only be performed when restrictions and limitations are fully understood. See the UltraScale
Architecture GTH Transceivers User Guide (UG576) [Ref 1] or UltraScale Architecture GTY
Transceivers User Guide (UG578) [Ref 2] for details on the use of the transceiver common
primitive.
Figure 3-8 illustrates the case where one or more transceiver common primitives are
enabled and located within the core instance, when user-specified. In this case, the
QPLL#OUTCLK and QPLL#OUTREFCLK ports of the transceiver common primitives
internally drive the QPLL#CLK and QPLL#REFCLK ports of the associated transceiver
channel primitives, as required (where # is 0 or 1 for QPLL0 or QPLL1, respectively).
However, those same signals are also provided as outputs on the core interface as
qpll#outclk_out and qpll#outrefclk_out.
Wizard IP Core
Transceiver Transceiver
COMMON CHANNEL
Wrapper Wrapper
COMMON CHANNEL
Primitive Primitive
qpll#outclk_out
qpll#outrefclk_out
X14547
IP Example Design
Wizard IP Core
COMMON CHANNEL
Primitive Primitive
X14548
Wizard IP Core
Transceiver
qpll#clk_in CHANNEL
qpll#refclk_in Wrapper
CHANNEL
Primitive
Wizard IP Core
Transceiver Transceiver
COMMON CHANNEL
Wrapper Wrapper
COMMON CHANNEL
Primitive Primitive
qpll#outclk_out
qpll#outrefclk_out
X14549
You can customize the Wizard IP core for use in your design by specifying values for the
various parameters associated with the core using these steps:
1. In the Vivado Design Suite, create a new project or open an existing project that is
configured to target one of the supported UltraScale™ or UltraScale+™ devices.
IMPORTANT: It is important to choose the exact part because characteristics such as speed grade,
temperature grade, and silicon level affect the available features and performance limits of the serial
transceivers. Limitations based on device characteristics are represented by the available choices when
customizing the Wizard IP in the Vivado Integrated Design Environment (IDE).
2. Open the IP Catalog and select the IP at FPGA Features and Design > I/O Interfaces >
UltraScale FPGAs Transceivers Wizard.
3. Double-click the IP or select the Customize IP command from the toolbar or right-click
menu to display the Wizard Customize IP dialog box.
Note: This core is not available in the Vivado IP integrator.
For details, see the Vivado Design Suite User Guide: Designing with IP (UG896) [Ref 8].
Note: Figures in this chapter are illustrations of the Vivado IDE. This layout might vary from the
current version.
Review each of the available options and modify them as desired so that the resulting core
instance meets your system requirements. For a full understanding of transceiver primitive
features and available use modes, see the UltraScale Architecture GTH Transceivers User
Guide (UG576) [Ref 1] or UltraScale Architecture GTY Transceivers User Guide (UG578)
[Ref 2].
The IP symbol is shown on the left-hand side of the Customize IP dialog box, and displays
only enabled ports by default. It organizes input ports on the left-hand side of the symbol
and output ports on the right-hand side. The IP symbol is updated as you make
customization choices and use the optional ports enablement interface. See Chapter 2,
Product Specification for a detailed description of ports and their use.
Basic Tab
IP customization options in the Basic tab (Figure 4-1) are described in the following
subsections. Selections apply to each enabled transceiver channel in the core instance. See
the UltraScale Architecture GTH Transceivers User Guide (UG576) [Ref 1] or UltraScale
Architecture GTY Transceivers User Guide (UG578) [Ref 2] for full details on available choices
for each customization option.
System Frame
Overall system settings are customized by options in the system frame. Note that the XGUI
design is top-down priority. The Transmitter side updates would have higher priority and
could update the dependent Receiver side customizations.
industry standard. After applying the preset, you can further modify options as needed
for your specific system and its protocol IP. Leave the selection set to “Start from
scratch” if you wish to make fully custom selections. You can also click "Switch to
Defaults" at the top of the screen to return all options to the "Start from scratch"
defaults.
• Transceiver type. Select the type of serial transceiver to configure. Available choices
are limited to the transceiver types present within the selected device.
Transmitter Frame
Serial transceiver transmitter settings are customized by options in the transmitter frame.
• Line rate (Gb/s). Enter the transmitter line rate in gigabits per second. The available
range depends on transceiver type and can be limited by the selected device.
• PLL type. Select the desired PLL type used to clock the transmitter of each enabled
serial transceiver channel. Possible options are QPLL0, QPLL1, and CPLL, but available
choices can be limited by the selected device and transmitter line rate. When QPLL0 or
QPLL1 is chosen, one or more transceiver common primitives is instantiated. If the
transmitter and receiver line rates differ, different PLL types might be required for each
data direction.
• QPLL Fractional-N options. For configurations targeting a QPLL in a device which
supports the fractional-N feedback divider, enter a Requested reference clock (MHz)
value and click the Calc button. This action populates the Actual Reference Clock
(MHz) field with a variety of supported transmitter reference clock frequencies based
on the requested value. In most cases, the requested frequency is available for
selection. The calculation also populates the Fractional part of QPLL feedback
divider field with the numerator of the fractional part of the QPLL feedback divider
used to clock the transmitter datapath. This value can be manually tweaked to
fine-tune the available Actual Reference Clock (MHz) selections for advanced use
cases. Possible values are 0 through 16777215, where 0 disables fractional-N operation.
Changing this field updates the available Actual Reference Clock (MHz) selections.
• Actual Reference clock (MHz). Select the desired frequency, from among all
compatible frequencies, for the reference clock that will be provided to the selected
PLL type to achieve the selected transmitter line rate.
• Encoding. Select the type of encoding or data format handling you want the
transceiver to apply when data is transmitted. The options and their characteristics are
as follows, but choices can be limited by selected device, transceiver type, and line rate:
° Sync. gearbox for 64B/66B. Data is transmitted using the TX Synchronous Gearbox in
normal mode for 64B/66B applications.
° Sync. gearbox for 64B/66B (CAUI mode). Data is transmitted using the TX
Synchronous Gearbox in CAUI (dual data stream) mode for 64B/66B applications.
° Async. gearbox for 64B/66B. Data is transmitted using the TX Asynchronous Gearbox
in normal mode for 64B/66B applications.
° Async. gearbox for 64B/66B (CAUI mode). Data is transmitted using the TX
Asynchronous Gearbox in CAUI (dual data stream) mode for 64B/66B applications.
° Sync. gearbox for 64B/67B. Data is transmitted using the TX Synchronous Gearbox in
normal mode for 64B/67B applications.
° Sync. gearbox for 64B/67B (CAUI mode). Data is transmitted using the TX
Synchronous Gearbox in CAUI (dual data stream) mode for 64B/67B applications.
• User data width. Also known as external data width. Select the desired bit width for
the transmitter user data interface of each serial transceiver channel. Possible options
are 16, 20, 32, 40, 64, 80, 128, and 160 but available choices can be limited by selected
device, transceiver type, line rate, and encoding. This selection sets the active portion
of the transmitter data vector, which is presented at full size on the core interface
unless the user data width sizing helper block is located within the core. The active
portion of the transmitter data vector is least significant bit-aligned. Inactive bits
should be tied Low.
• Internal data width. Select the desired bit width for the internal transmitter datapath
of each serial transceiver channel. Possible options are 16, 20, 32, 40, 64, and 80, but
available choices are limited by selected device, transceiver type, line rate, encoding,
and user data width.
• Buffer. Choose whether to enable or bypass the transmitter buffer. The ability to
bypass the buffer might be limited by the selected encoding. When the buffer is
bypassed, the transmitter buffer bypass controller helper block is provided.
• TXOUTCLK source. Select the internal clock source for the TXOUTCLK port of each
serial transceiver primitive. Possible options are TXPLLREFCLK_DIV1,
TXPLLREFCLK_DIV2, TXOUTCLKPCS, TXOUTCLKPMA, and TXPROGDIVCLK, but available
choices can be limited by selected device, line rate, reference clock frequency,
encoding, internal data width, and buffer usage. The transmitter user clocking network
helper block is driven by the TXOUTCLK port, and thus by this clock source, of the
master transceiver channel.
• Differential swing and emphasis mode. Select the transmitter driver mode. Selection
determines the set of ports that control the transmitter driver swing and cursors.
Receiver Frame
Serial transceiver receiver settings are customized by options in the receiver frame.
• Line rate (Gb/s). Enter the receiver line rate in gigabits per second. The available range
depends on transceiver type and can be limited by the selected device.
• PLL type. Select the desired PLL type used to clock the receiver of each enabled serial
transceiver channel. Possible options are QPLL0, QPLL1, and CPLL, but available choices
can be limited by the selected device and receiver line rate. When QPLL0 or QPLL1 is
chosen, one or more transceiver common primitives will be instantiated. If the receiver
and transmitter line rates differ, different PLL types might be required for each data
direction.
• QPLL Fractional-N options. For configurations targeting a QPLL in a device which
supports the fractional-N feedback divider, enter a Requested reference clock (MHz)
value and click the Calc button. This action populates the Actual Reference Clock
(MHz) field with a variety of supported receiver reference clock frequencies based on
the requested value. In most cases, the requested frequency is available for selection,
but must be equivalent to the analogous transmitter value if the same QPLL is used for
both transmitter and receiver. The calculation also populates the Fractional part of
QPLL feedback divider field with the numerator of the fractional part of the QPLL
feedback divider used to clock the receiver datapath. This value can be manually
tweaked to fine-tune the available Actual Reference Clock (MHz) selections for
advanced use cases. Possible values are 0 through 16777215, where 0 disables
fractional-N operation. Changing this field updates the available Actual Reference
Clock (MHz) selections.
• Actual Reference clock (MHz). Select the desired frequency from among all
compatible frequencies for the reference clock that will be provided to the selected PLL
type to achieve the selected receiver line rate.
• Decoding. Select the type of decoding or data format handling you want the
transceiver to apply when data is received. The options and their characteristics are as
follows, but choices can be limited by selected device, transceiver type, line rate, and
transmitter data encoding:
° Sync. gearbox for 64B/66B. Data is received using the RX Synchronous Gearbox in
normal mode for 64B/66B applications.
° Sync. gearbox for 64B/66B (CAUI mode). Data is received using the RX Synchronous
Gearbox in CAUI (dual data stream) mode for 64B/66B applications.
° Async. gearbox for 64B/66B. Data is received using the RX Asynchronous Gearbox in
normal mode for 64B/66B applications.
° Async. gearbox for 64B/66B (CAUI mode). Data is received using the RX
Asynchronous Gearbox in CAUI (dual data stream) mode for 64B/66B applications.
° Sync. gearbox for 64B/67B. Data is received using the RX Synchronous Gearbox in
normal mode for 64B/67B applications.
° Sync. gearbox for 64B/67B gearbox (CAUI mode). Data is received using the RX
Synchronous Gearbox in CAUI (dual data stream) mode for 64B/67B applications.
• User data width. Also known as external data width. Select the desired bit width for
the receiver user data interface of each serial transceiver channel. Possible options are
16, 20, 32, 40, 64, 80, 128, and 160 but available choices can be limited by selected
device, transceiver type, line rate, and decoding. This selection sets the active portion
of the receiver data vector, which is presented at full size on the core interface unless
the user data width sizing helper block is located within the core. The active portion of
the receiver data vector is least significant bit-aligned. Inactive bits should be ignored.
• Internal data width. Select the desired bit width for the internal receiver datapath of
each serial transceiver channel. Possible options are 16, 20, 32, 40, 64, and 80, but
available choices are limited by selected device, transceiver type, line rate, decoding,
and user data width.
• Buffer. Choose whether to enable or bypass the receiver elastic buffer. The ability to
bypass the buffer can be limited by the selected decoding. When the buffer is
bypassed, the receiver buffer bypass controller helper block is provided.
• RXOUTCLK source. Select the internal clock source for the RXOUTCLK port of each
serial transceiver primitive. Possible options are RXPLLREFCLK_DIV1,
RXPLLREFCLK_DIV2, RXOUTCLKPCS, RXOUTCLKPMA, and RXPROGDIVCLK, but available
choices can be limited by selected device, line rate, reference clock frequency,
decoding, internal data width, and buffer usage. The receiver user clocking network
helper block is driven by the RXOUTCLK port, and thus by this clock source, of either
the master transceiver channel or of each transceiver channel (depending on buffer
usage options).
Advanced serial transceiver receiver settings are customized by options in the collapsible
portion of the receiver frame. Click the title to expand the section.
• Insertion loss at Nyquist (dB). Specify the insertion loss of the channel between the
transmitter and receiver at the Nyquist frequency in dB.
• Equalization mode. Select between decision feedback equalization (DFE) mode and
low-power mode (LPM) for the receiver equalization. When the Auto option is selected,
the mode is set automatically based on the channel insertion loss, where a value
greater than 14 dB causes DFE to be used, otherwise LPM is used. Refer to the
UltraScale Architecture GTH Transceivers User Guide (UG576) [Ref 1] or the UltraScale
Architecture GTY Transceivers User Guide (UG578) [Ref 2] for further guidance.
• Link coupling. Options are AC and DC. Select AC if external AC coupling is enabled in
the application, and DC otherwise.
• Termination. Select the receiver termination voltage. Your choice of termination
should depend on the protocol and its link coupling.
• Programmable termination voltage (mV). When termination is set to programmable,
select the termination voltage in mV.
• PPM offset between receiver and transmitter. Specify the offset between received
data and transmitter data in PPM. For example, if your protocol specifies ±100 ppm,
you would enter 200 in this field. This offset affects the receiver CDR settings.
• Spread spectrum clocking. Specify the spread spectrum clocking (SSC) modulation in
PPM. SSC affects the receiver CDR settings.
• Enable Out of Band signaling (OOB)/Electrical Idle. Select this option to enable Out
of Band (OOB) signaling/Electrical Idle. Availability is subject to the supported receiver
line rate, data decoding, reference clock frequency, termination, programmable
termination value, and link coupling selections.
Note:
1. For Rates, 6G customer should use the static PPM field for CDR and enter 1000 PPM in
the wizard. The CDR settings should be able to handle 1000PPM up/down spread or +/
- 500PPM center spread.
X-Ref Target - Figure 4-2
2. For 1.5G, 3G, and 6G, customer should use the SSC field in wizard. This will set the CDR
to tolerate 5000PPM (Up or down spread and +/- 2500 Center Spread)
X-Ref Target - Figure 4-3
Specify the frequency of the required free-running clock that will be provided to bring up
the core and to clock various helper blocks. An accurate frequency is required to construct
clock constraints and parameterize certain design modules. For GTH transceiver
configurations that target engineering sample (ES1 or ES2) UltraScale devices and that use
the CPLL, this clock must also be used for the transceiver channel DRP interface. See
Performance, page 10 for maximum frequency guidance.
Independently select the master transmitter and receiver channels from among all enabled
transceiver channels. Enabled channels are identified by their coordinates on the
transceiver channel grid. In the generated core instance, the TX master channel drives the
source clock input of the transmitter user clocking network helper block, and the RX master
channel drives the source clock input of the receiver user clocking network helper block.
The TX and RX master channel designations are also used to configure the buffer bypass
master lane when the transmitter buffer or receiver elastic buffer is bypassed, respectively.
Transceiver channel enablement, reference clock source, and recovered clock selections are
customized by options in the channel table or channel graphic. The channel graphic is
shown on the left side of the Customization dialog box in place of the IP symbol when
interacting with Physical Resources tab options. The channel table contains interactive
Channel Enable, TX REFCLK source, RX REFCLK source, and RXRECCLKOUT buffer column
options, and an informative Location details column. Available channels are organized by
their column and Quad locations. The interactive channel graphic provides the same
customization options and aids in visualizing transceiver primitive and reference clocking
topology.
• Enabling a channel. To enable a particular transceiver channel for use, either click the
corresponding checkbox in the channel table or right-click the channel in the graphic
and select Enable. Enabling a channel causes that physical transceiver site to be
instantiated, connected, and appropriately constrained in the generated core instance.
At least one channel must be enabled at all times; to disable the default channel, first
enable the desired channel(s), then disable the default. Click the Disable All Channels
button to return transceiver channel enablement to its default state. Transceiver
channels are organized by column and Quad, and are named according to their
coordinates on the transceiver channel grid. Channels can also be identified by their
serial data pins as shown in the Data pins column.
• Choosing a transmitter reference clock source. A valid transmitter reference clock
source must be chosen for each enabled channel. You can choose a source from the TX
REFCLK column of the channel table or by right-clicking the channel in the graphic. The
transmitter PLL type selected during Basic tab customization is shown for reference.
Choosing a reference clock source for a channel causes that buffered input to be
routed to the channel, and for appropriate constraints to be generated. Each unique
reference clock source selected requires a differential clock input to the device.
• Choosing a receiver reference clock source. A valid receiver reference clock source
must be chosen for each enabled channel. You can choose a source from the RX REFCLK
column of the channel table or by right-clicking the channel in the graphic. The receiver
PLL type selected during Basic tab customization is shown for reference. Choosing a
reference clock source for a channel causes that buffered input to be routed to the
channel, and for appropriate constraints to be generated. Each unique reference clock
source selected requires a differential clock input to the device.
Note: The Wizard always connects the buffered reference clock signal to the “GTREFCLK0” position
of the appropriate PLL clock multiplexer(s) even if MGTREFCLK1 or a reference clock requiring north
or south routing is selected. This is a supported simplification use mode, and the Vivado design tools
handle the required routing complexity. GTGREFCLK should be used only for testing purposes. For
more information on the use of GTGREFCLK, see UltraScale Architecture GTH Transceivers User
Guide (UG576) [Ref 1] or UltraScale Architecture GTY Transceivers User Guide (UG578)
[Ref 2].
• Choosing a recovered clock source and buffer. The recovered clock of a transceiver
channel can be buffered and driven out of the device. For an enabled transceiver
channel, you can choose an available output buffer from the RXRECCLKOUT buffer
column of the channel table, or by right-clicking the channel in the graphic. This feature
requires using one of the available differential clock buffers within that transceiver’s
Quad as an output, preventing that same resource from being used as a reference clock
input buffer. Choosing a recovered clock source and buffer causes the channel’s
recovered clock output to be routed to an instantiated output buffer primitive and the
appropriate constraints to be generated.
options for a given feature if your application does not use that feature. See the UltraScale
Architecture GTH Transceivers User Guide (UG576) [Ref 1] or UltraScale Architecture GTY
Transceivers User Guide (UG578) [Ref 2] for details on the relevant serial transceiver
features. The layout of the Optional Features tab with the Receiver comma detection and
alignment section expanded is shown in Figure 4-5.
X-Ref Target - Figure 4-5
Various customization options relating to the detection of received comma characters and
data alignment to those characters are presented in this collapsible section. For more
information, see UltraScale Architecture GTH Transceivers User Guide (UG576) [Ref 1] or
UltraScale Architecture GTY Transceivers User Guide (UG578) [Ref 2]. Click the title to expand
the section.
• Valid comma values for 8B/10B decoding. Select whether all 8B/10B commas or just
IEEE Std 802.3-specified comma characters are decoded as comma characters.
• Plus comma. Mark the checkbox under “Detect” to enable detection of the provided
bit pattern as a plus comma. You can enter a pattern directly in the text box under
“Value” or choose an option in the comma preset box to specify the standard plus
comma pattern.
• Minus comma. Mark the checkbox under “Detect” to enable detection of the provided
bit pattern as a minus comma. You can enter a pattern directly in the text box under
“Value” or choose an option in the comma preset box to specify the standard minus
comma pattern.
• Mask. Enter a comma mask bit pattern. Any bit set to “0” makes the comma detection
block treat corresponding plus and minus comma values as a “don’t care”.
• Detect combined plus/minus (double length) comma. Mark the checkbox to enable
the transceiver to search for the two commas in a row.
• Alignment boundary. Select which data byte boundaries are allowed for comma
alignment. Possible options are any byte boundary, two byte boundaries, four byte
boundaries, and eight byte boundaries, but available selections can be limited by
receiver internal data width.
• Show realign comma. Mark the checkbox to cause commas which cause realignment
to be shown at the receiver interface.
• Manual alignment (RXSLIDE) mode. If RXSLIDE will be used to implement manual
alignment, select which mode to enable. Possible options are Off (to disable manual
alignment), PCS, PMA, and Automated PMA, but available selections can be limited by
receiver data decoding and receiver elastic buffer usage.
Various customization options relating to receiver channel bonding are presented in this
collapsible section. Click the title to expand the section.
• Enable and select number of sequences to use. Select whether to enable receiver
channel bonding, and if enabled, how many channel bonding sequences to use.
Possible options are No channel bonding, 1, or 2 sequences, but available selections
can be limited by the number of enabled channels, receiver data decoding, receiver
internal data width, and receiver elastic buffer usage.
• Length of each sequence. When channel bonding is used, select the length of each
channel bonding sequence. Options are 1, 2, and 4 patterns.
• Sequence maximum skew. When channel bonding is used, select a channel bonding
maximum skew value that is less than half the minimum distance between instances of
the channel bonding sequence. Options are 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, and 14
characters.
• Maximum channel bonding level to be used. When channel bonding is used, select
the maximum channel bonding level that will be used in the channel bonding topology
of the system. Options are 1, 2, 3, 4, 5, 6, and 7 levels.
• Don't care. For each pattern of each enabled channel bonding sequence, mark the
checkbox to indicate that it should be treated as a “don’t care” and always considered
as a match within a channel bonding sequence.
• Value. For each pattern of each enabled channel bonding sequence, specify its bit
value.
• K character. For each pattern of each enabled channel bonding sequence, mark the
checkbox to indicate that it is a K character.
• Inverted disparity. For each pattern of each enabled channel bonding sequence, mark
the checkbox to indicate that it uses inverted disparity to signify control of a character
by deliberate error.
Various customization options relating to receiver clock correction are presented in this
collapsible section. Click the title to expand the section. Note that, if RXOUTCLK source is
selected as RXOUTCLKPMA which in turn drives RXUSRCLK/RXUSRCLK2, then clock
correction would do nothing. For more information, see the UltraScale Architecture GTH
Transceivers User Guide (UG576) [Ref 1] or the UltraScale Architecture GTY Transceivers User
Guide (UG578) [Ref 2].
• Enable and select number of sequences to use. Select whether to enable receiver
clock correction, and if enabled, how many clock correction sequences to use. Possible
options are No clock correction, 1, or 2 sequences, but available selections can be
limited by receiver data decoding, receiver internal data width, and receiver elastic
buffer usage.
• Length of each sequence. When clock correction is used, select the length of each
clock correction sequence. Options are 1, 2, and 4 patterns.
• Don’t care. For each pattern of each enabled clock correction sequence, mark the
checkbox to indicate that it should be treated as a “don’t care” and always considered
as a match within a clock correction sequence.
• Value. For each pattern of each enabled clock correction sequence, specify its bit value.
• K character. For each pattern of each enabled clock correction sequence, mark the
checkbox to indicate that it is a K character.
• Inverted disparity. For each pattern of each enabled clock correction sequence, mark
the checkbox to indicate that it uses inverted disparity to signify a control character by
deliberate error.
• Periodicity of the sequence (in bytes). Specify the separation between clock
correction sequences, in bytes.
• Keep idle. Specify whether at least one clock correction sequence is kept in the data
stream for every continuous stream of clock correction sequences received. Options are
Enable or Disable.
• Precedence. Specify whether clock correction takes precedence over channel bonding
when both operations are triggered at the same time. Options are Enable or Disable.
• Minimum repetition. Specify the number of RXUSRCLK cycles following a clock
correction during which the elastic buffer is not permitted to execute another clock
correction. Legal options are 0 (for no limit), or 1 to 31 cycles.
Various customization options relating to transmitter and receiver elastic buffer control and
behaviors are presented in this collapsible section. Click the title to expand the section.
• Receiver elastic buffer bypass mode. When the receiver elastic buffer is bypassed and
two or more transceiver channels are enabled, specify whether multi-lane buffer bypass
mode or single-lane buffer bypass mode is used. When multi-lane mode is selected,
the designated receiver master channel acts as the buffer bypass master lane and clock
source for the one receiver user clocking network helper block instance that provides
user clocks to the master and all slave lanes. When single-lane mode is selected, each
transceiver channel receiver elastic buffer is bypassed individually, resulting in an
instance of the receiver buffer bypass controller helper block and an instance of the
receiver user clocking network helper block for each transceiver channel. The default is
multi-lane mode.
• Reset receiver elastic buffer on channel bonding change. Specify whether the
receiver elastic buffer is reset on change to RXCHANBONDMASTER, RXCHANBONDSLAVE,
or RXCHANBONDLEVEL. When the receiver elastic buffer is used, options are Enable or
Disable.
• Reset receiver elastic buffer on comma alignment. Specify whether the receiver
elastic buffer is reset on comma alignment. When the receiver elastic buffer is used,
options are Enable or Disable.
• Reset receiver elastic buffer on rate change. Specify whether the receiver elastic
buffer is reset on rate change. When the receiver elastic buffer is used, options are
Enable or Disable.
• Reset transmitter buffer on rate change. Specify whether the transmitter buffer is
reset on rate change. When the transmitter buffer is used, options are Enable or
Disable.
• Enable secondary QPLL. When either QPLL0 or QPLL1 (but not both) are used to clock
the transmitter and/or receiver, the remaining QPLL is unused in the core as configured.
Enable this option to allow customization of the secondary QPLL in the transceiver
common for use in a different core. Refer to Transceiver Common Primitive, page 77 for
transceiver common sharing approaches.
• Line rate of second core (Gb/s). Enter the transmitter and/or receiver line rate, in
gigabits per second, for the core that will utilize the secondary QPLL instantiated by
this core. The available range depends on transceiver type and can be limited by the
selected device.
SATA Section
• TX COM sequence burst length. Select the number of bursts that make up a SATA
COM sequence. Options are 6, 7, 8, 9, 10, 11, 12, 13, 14, and 15.
This frame is labeled as “Simplify transceiver usage by organizing resources and helper
blocks” in the Customize IP dialog box. The location of the transceiver common primitive
and each available helper block can be selected here. See Chapter 3, Designing with the
Core, for guidance on the usage of each helper block and trade-offs to consider when
deciding where to locate the transceiver common and each available helper block.
• Include reset controller in the… Specify whether the reset controller helper block is
instantiated in the core or in the example design. The default is in the core.
• Include user width data sizing in the… Specify whether the user data width sizing
helper block is instantiated in the core or in the example design. The default is in the
core.
• Include transmitter buffer bypass controller in the… If the transmitter buffer is
bypassed, specify whether the transmitter buffer bypass controller helper block is
instantiated in the core or in the example design. The default is in the core.
• Include receiver elastic buffer bypass controller in the… If the receiver elastic buffer
is bypassed, specify whether the receiver buffer bypass controller helper block is
instantiated in the core or in the example design. The default is in the core.
• Include In-System IBERT core… Specify the optional inclusion of In-System IBERT core
in the Wizard example design. The default is No (do not include).
This frame is labeled as “Expose additional ports by Functionality, for advanced feature
usage” in the Customize IP dialog box. The optional port enablement interface allows
additional transceiver channel and transceiver common primitive ports to be exposed on
the core interface. See the UltraScale Architecture GTH Transceivers User Guide (UG576)
[Ref 1] or UltraScale Architecture GTY Transceivers User Guide (UG578) [Ref 2] for details on
each available transceiver primitive port.
• All Ports. All Wizard ports are presented for optional enablement in this highlighted,
collapsible section. Click the title to expand the section and display the All Ports table.
Ordering is alphabetical by port name, and organized according to port direction. The
Name column of the table shows the Wizard IP core interface name for each port, while
the Information column indicates the transceiver primitive type and mapping of that
port (for non-helper block ports). Mark the checkbox for a given port in the Enable
column to expose that port on the core interface. The IP symbol is updated to reflect
the enabled ports. The search field can be used to search text within the All Ports
collapsible section. Port enablement restrictions of the All Ports table are as follows:
° Transceiver primitive input ports that are driven within the core instance, usually as
a result of locating a helper block within the core, cannot be enabled.
° Ports unique to transceiver types that are different from the selected transceiver
type cannot be enabled.
• Other groups. Collapsible groups other than All Ports categorize Wizard ports
according to specific transceiver functionality. Click the title of a group to expand its
section. To easily identify and enable the ports required for your application, groups
are organized and named according to chapters within the UltraScale Architecture GTH
Transceivers User Guide (UG576) [Ref 1] or UltraScale Architecture GTY Transceivers User
Guide (UG578) [Ref 2]. In addition, a Transceiver-based IP Debug Ports group is
provided to organize frequently used debug ports. Mark the checkbox for a given port
to expose that port on the core interface. The IP symbol is updated to reflect the
enabled ports. Port enablement restrictions in other groups are as follows:
° Transceiver primitive input ports that are driven within the core instance, usually as
a result of locating a helper block within the core, cannot be enabled.
° Ports unique to transceiver types that are different from the selected transceiver
type cannot be enabled.
• ENABLE_COMMON_USRCLK:
Required Constraints
Core-level Constraints
Each instance of the UltraScale FPGAs Transceivers Wizard core includes a core-level Xilinx
design constraints (XDC) file customized for that instance. The core-level XDC file contains:
• Transceiver location constraints that reflect the transceiver primitive site locations
selected during customization of the Physical Resources tab of the Customize IP dialog
box.
• Case analysis constraints, as necessary, that direct the Vivado design tools to
propagate the correct constraint for the operational TXOUTCLK frequency.
• False path constraints, as necessary, if synchronizer modules or other false paths are
included in the core.
The constraints provided in the core-level XDC file are required for proper operation of the
core instance. This file is managed by the Vivado design tools and can change to reflect
core customization changes or core version upgrades. Do not modify this file. For advanced
use cases, if you want to manage GT locations manually, set DISABLE_LOC_XDC user
parameter to ‘1’ during IP customization.
Note: GT parent IP could be driving the value of this user parameter as part of the hierarchical
instantiation, and using this parameter may not be always possible in a locked IP scenario. If you
need to manage the GT locations, Xilinx recommends that you configure the GT parent IP as GT
outside and then customize the UltraScale GT wizard IP based on your design requirement.
• I/O location constraints for each instantiated transceiver differential reference clock
buffer.
• Placeholder I/O location constraints, which serve as commented templates to
constrain the location of top-level I/O as appropriate for your system.
• System-level clock period constraints on the free-running clock used for system
bring-up, and on the transceiver reference clocks differential inputs.
• False path constraints for synchronizer modules or other false paths that are included
in the example design.
The example design XDC is necessary to properly constrain elements within the example
design, but it can also be used as a starting point for the development of your system-level
constraints. The constraints in the example design XDC do not overlap with those in the
core-level XDC.
Out-of-Context Constraints
When an out-of-context (OOC) design flow such as OOC synthesis or hierarchical design is
used, the Wizard also uses a special OOC XDC file customized for that instance. The OOC
XDC file provides default period constraints on clock ports that would otherwise be
constrained by the example design XDC file. This file is managed by the Vivado design tools
and can change to reflect core customization changes or core version upgrades. Do not
modify this file.
Clock Frequencies
The example design XDC file creates period constraints for the clock inputs that drive the
dedicated differential reference clock buffers, which in turn drive the various PLL resources
in the core and propagate to the TXOUTCLK and RXOUTCLK pins of each transceiver
channel primitive. Where a transceiver channel drives a user clocking network helper block,
those derived constraints then propagate through the helper block resources to constrain
synchronous paths at the relevant clock frequencies of that user clock network. The correct
clock period for each constraint is automatically determined by the Wizard. For example,
when using a single reference clock buffer in the X0Y0 grid position, a command similar to
the following will exist in the example design XDC file:
IMPORTANT: It is important to retain the create_clock command that exists in the example design XDC
and is applied to the input of the differential reference clock buffers. This constraint is used to derive
the user clocking network constraints.
For GTH transceiver configurations targeting engineering sample (ES1 or ES2) UltraScale
devices, and in which the CPLL is used as the PLL type for a given data direction or as the
source of the selectable TXOUTCLK frequency, set_case_analysis commands exist
within the core-level XDC. For example:
Using the frequency provided during core customization, the example design XDC file
creates a period constraint for the free-running clock used for system bring-up. For
example:
Additional clock period constraints can be necessary when integrating the Wizard IP core
into your system. For example:
• If you enable any optional clock ports on the Wizard IP core interface (for example, the
DRP clock), you must appropriately constrain those clocks.
Note: As described in Chapter 4, Customizing and Generating the Core, the free-running clock
must also be used for the transceiver channel DRP interface clock in GTH transceiver
configurations targeting architecture engineering sample (ES1 or ES2) UltraScale devices that
use the CPLL.
If you choose not to use the provided user clocking network helper blocks and thus break
the path from TXOUTCLK or RXOUTCLK through the appropriate user clocking network
helper blocks and to the appropriate transceiver user clocks, you must appropriately
constrain the new source of the transceiver user clocks.
Clock Management
This section is not applicable for this IP core.
Clock Placement
The example design XDC file creates package pin constraints for each instantiated
transceiver differential reference clock buffer primitive as well as each instantiated
differential recovered clock output buffer primitive, if utilized. The constraints reflect the
transceiver primitive site locations selected during customization of the Physical Resources
tab of the Customize IP dialog box. If you wish to use different physical locations, the
correct way to adjust both the location constraints and the wiring between clock buffers,
transceiver channel and common primitives is to re-customize the core and select different
clock buffer locations, rather than modify the example design XDC file.
Within the example design XDC, two set_property package_pin commands exist per
transceiver differential reference clock buffer in the following format. The specific locations
and ports are examples only:
Within the example design XDC, two set_property package_pin commands exist per
transceiver differential recovered clock output buffer in the following format. The specific
locations and ports are examples only:
Banking
This section is not applicable for this IP core. For transceiver channel primitive location
constraints, see Transceiver Placement.
Transceiver Placement
The core-level XDC file creates a location constraint for each enabled transceiver channel
primitive. The constraints reflect the transceiver primitive site locations selected during
customization of the Physical Resources tab of the Customize IP dialog box. To use different
physical locations, re-customize the core and choose different transceiver channel primitive
locations rather than modifying the core-level XDC file.
Within the core-level XDC, one set_property LOC command exists per transceiver channel in
the following format. The specific hierarchical path and location are examples only:
Other Constraints
Depending on IP customization choices including helper block locations, synchronizers can
be instantiated within the core or the example design in order to facilitate clock domain
crossing of individual signals. When synchronizers or other ignorable asynchronous paths
are present, false path constraints are included in the core-level XDC file or in the example
design XDC file (as appropriate) for those arbitrary latency paths. Some possible commands
for each XDC file are as follows:
Simulation
The Wizard example design test bench can be simulated to quickly demonstrate core and
transceiver functionality. For more information, see Chapter 6, Test Bench.
For details about synthesis and implementation, see the Vivado Design Suite User Guide:
Designing with IP (UG896) [Ref 8].
Example Design
This chapter contains information about the provided example design in the
Vivado® Design Suite.
The example design contains configurable PRBS generator and checker modules per
transceiver channel that enable simple data integrity testing, and resulting link status
reporting. As described in Chapter 6, Test Bench, an included self-checking test bench
simulates the example design in loopback, checking for link maintenance. The example
design is also synthesizable so it can be used to check for data integrity and resulting link
in hardware, either through loopback or connection to a suitable link partner. A VIO core
instance probes key status signals, drives basic control signals, and reduces reliance on
hardware I/O interaction.
RECOMMENDED: As the primary means of demonstrating the customized core, Xilinx recommends that
you use the example design to familiarize yourself with the basic usage and behavior of the Wizard IP
core.
Transceiver
PRBS Generator CHANNEL Wrapper
PRBS Checker
D Helper Block
Logic in Example
Design CHANNEL
Link Primitive
Status
B
C
COMMON
Primitive
X14550
The example design instantiates the customized core instance. The core instance contains
one or more transceiver channel primitives and, depending on customization choices, can
instantiate one or more transceiver common primitives and one or more helper blocks.
Portion A of the figure represents a helper block included within the core instance.
The lowest level of example design hierarchy is the example design wrapper. The purpose of
the example design wrapper is to instantiate only the customized core and any helper
blocks that you included in the example design. By including only those resources and no
additional demonstration logic, the example design wrapper can be integrated in your
project with no or minimal modification required. Portion B of the figure represents a
helper block instantiated within the example design wrapper. Enabled ports of the core
instance that do not directly interface to helper block B are routed through to the next level
of example design hierarchy.
The example design top-level module instantiates the example design wrapper and is the
top-level module of the Vivado IP example project. The top-level module serves many
purposes. Portion C of the figure represents the different ways that ports enabled on the
core and exposed through the example design wrapper are handled in the example design
top-level module. Ports that were optionally enabled or otherwise enabled but are not
directly used in the example design are tied off to their appropriate values (per the core
customization). A small number of ports that must be driven internally to the example
design for purposes of example design operation are driven by some logic function to
produce the necessary value. A small number of ports are also connected to the top-level
example design I/O.
An example stimulus module and an example checking module are each instantiated for
each transceiver channel instance. As shown in portion D of the figure, these modules
include a PRBS block that is customized for data generation or checking as appropriate, as
well as a minimal amount of additional logic sufficient to interface to the selected
transmitter data encoding and receiver data decoding formats of the transceiver channels.
Note: The example stimulus and example checking modules fundamentally transmit and check raw
PRBS data, and do not implement higher-level protocols to encapsulate that raw data.
Because independent example stimulus and checking modules exist per channel, an
aggregate pattern match status across all modules is needed. A small amount of logic in the
example design top-level module combines the match status from all example checking
modules into a single “match all” signal. This signal is then used in a simple link status state
machine to indicate the health of the PRBS checker-based link while remaining resilient to
occasional bit errors. A sticky link down indicator is set any time the link status signal
deasserts, and an accompanying reset signal clears that sticky link down indicator. Together,
these three signals are sufficient to monitor data integrity-based link status across all
transceiver channels in an abstracted fashion, including mapping the top-level I/O to two
LEDs and one pushbutton on a PCB. To reduce reliance on hardware I/O interaction and
simplify example design bring-up and debug, a VIO core instance also connects to these
top-level signals and other key control and status signals. The VIO core can be
re-customized and connected to other signals as needed.
Additionally, an initialization state machine provides demonstration logic that interacts with
and enhances the reset controller helper block to assist with successful system bring-up.
See Link Status and Initialization, page 107 for more details on these features.
The ports shown in Table 5-1 are present on the example design top-level module, and are
therefore package pins in the example project.
The link status state machine uses a leaky bucket algorithm to accumulate multiple
consecutive clock cycles of combined PRBS matches, incrementing a link counter to its
prescribed maximum before reporting that the link is up (indicated by
link_status_out = 1). After the link is up, any PRBS mismatches cause a more rapid
decrease in the link counter, such that bursts of mismatches or independent mismatches in
close proximity quickly reduce the link counter to its prescribed minimum where the link is
reported as down (indicated by link_status_out = 0). The logic operates continually,
and therefore automatically attempts to recover from transient mismatches or regain link
upon its loss. Figure 5-2 illustrates the behavior of the link counter and resulting link status
in response to various PRBS checker conditions.
X-Ref Target - Figure 5-2
MAX
Link counter increments on
each subsequent clock cycle
when PRBS checker matches PRBS mismatches in close proximity
Link Counter Value
* * X14551
Figure 5-2: Link Counter and Link Status in Response to Various PRBS Checker Conditions
Whenever the link is down, including at the start of operation, the sticky link down indicator
link_down_latched_out is set to 1. It can only be reset by assertion of the
link_down_latched_reset_in input.
A simple use of the link status interface in hardware is to map link_status_out and
link_down_latched_out to active-High LEDs, and link_down_latched_reset_in
to an active-High pushbutton. The link_status_out LED gives a rough estimation of link
behavior, while even momentary loss of link is visible due to the sticky behavior of
link_down_latched_out lighting the LED. The link_down_latched_reset_in
pushbutton clears link_down_latched_out, turning off its LED as long as the link
remains up. These link status interface signals are also connected to the VIO core instance
by default.
Initialization Module
The Wizard example design contains a module that demonstrates how initialization logic
can be constructed to interact with and enhance the reset controller helper block to assist
with successful system bring-up. The example initialization logic monitors for timely
transceiver resource reset completion, retrying appropriate resets as necessary to mitigate
problems with system bring-up such as clock or data connection readiness. It also
optionally monitors data quality after the system is operational, resetting the receiver if the
data is not considered to be “good.” The initialization module is an example and can be
modified as necessary to suit your needs.
The example initialization module is implemented as a finite state machine that is activated
with the first user-provided “reset all” pulse following device configuration. The module
first monitors for timely completion of the transmitter PLL and datapath transceiver
resources, pulsing an internal “reset all” signal to the reset controller helper block in the
event that the transmitter resets do not complete in a reasonable time. Upon transmitter
reset completion, the example initialization module similarly waits for timely completion of
receiver PLL and datapath transceiver resources, pulsing an internal receiver PLL and
datapath reset (or receiver datapath reset if a single PLL is used for both data directions) to
the reset controller helper block in the event that the receiver resets do not complete in a
reasonable time. For debug purposes, each reset assertion increments a retry counter up to
a specified saturation point, and the retry counter is only cleared upon device
configuration. The initialization done and retry counter signals are connected to the VIO
core instance by default.
The example initialization module also contains a receive data good input. If an active-High
indication of data quality drives this port, the initialization module automatically pulses the
appropriate receiver reset to the reset controller helper block if the design has been
successfully initialized but the receiver data good input is Low. In this way, the initialization
module repeatedly attempts to re-establish good data reception in the event of its loss; for
example, due to cable pull effects on the receiver. Figure 5-3 illustrates the initialization
module state machine.
X14552
• internal versions (using a logical OR where appropriate) of link status indicator signal
link_down_latched_reset_in.
• reset helper block signals gtwiz_reset_all_in,
gtwiz_reset_tx_pll_and_datapath_in, gtwiz _rese t_tx_ datap ath_i n,
gtwiz_reset_rx_pll_and_datapath_in, and gtwiz_reset_rx_datapath_in.
By interacting with these key signals, using the VIO core can reduce reliance on hardware
I/O interaction and provide rapid insight into basic system behavior.
The default VIO core instance probes synchronized versions of the following signals if they
are available in the example design top-level module for the customized Wizard core:
gtpowergood_out cplllock_out
qpll0lock_out qpll1lock_out
txprgdivresetdone_out rxprgdivresetdone_out
txpmaresetdone_out rxpmaresetdone_out
gtwiz_buffbypass_tx_done_out gtwiz_buffbypass_rx_done_out
gtwiz_buffbypass_tx_error_out gtwiz_buffbypass_rx_error_out
rxelecidle_out rxstatus_out
rxbufstatus_out rxprbserr_out
rxprbslocked_out
TIP: To probe these signals, use the optional ports interface during IP customization to expose the
relevant ports through the IP core boundary.
One VIO probe port is used per signal, and each signal is vectored across all enabled
transceiver primitives.
The default VIO core instance drives the following signals if they are available in the
example design top-level module for the customized Wizard core. Synchronizers are used
where appropriate:
txpmareset_in rxpmareset_in
txpcsreset_in rxpcsreset_in
rxcdrreset_in rxdfelpmreset_in
txelecidle_in txpd_in
rxpd_in txprecursor_in
txpostcursor_in loopback_in
txprbssel_in rxprbssel_in
txprbsforceerr_in rxprbscntreset_in
TIP: To interactively drive these signals, use the optional ports interface during IP customization to
expose the relevant ports through the IP core boundary.
One VIO probe port is used per signal, and each signal is vectored across all enabled
transceiver primitives.
To probe additional Wizard signals available in the example design top-level module,
re-customize the VIO core instance to add further probe ports. For more details on using
the VIO core and other Vivado Design Suite debug features, see Vivado Design Suite User
Guide: Programming and Debugging (UG908) [Ref 12].
Figure 5-4: Optional enablement of In-System IBERT Core in GT Wizard Example Design
Convenience Features
The Wizard example design provides several convenience features that can be useful when
integrating the core instance into your system.
• Any helper blocks that were specified to be included in the example design are
instantiated within the example wrapper level of hierarchy. By including only those
resources and no additional demonstration logic, the example design wrapper can be
useful to integrate in your own project with no, or minimal modification required.
• If the transceiver common was specified to be included in the example design, all
enabled transceiver common instances are also localized within the example wrapper
level of hierarchy.
• As described in Chapter 2, Product Specification, the core provides vectored ports that
are concatenations of the corresponding port across enabled transceiver primitives.
While this provides a compact and predictable user interface, users might prefer
individual signals per transceiver primitive. The example design top-level module
provides vector slicing for each enabled port, assigning each slice as appropriate for
the signal type. This feature can be used for reference or integrated into your system as
desired. Three examples follow, for illustration:
a. If the core instance contains four enabled GTH transceiver channels, their GTHTXP
serial data output pins are vectored as gthtxp_out[3:0] on the core interface and
mapped to gthtxp_int[3:0] within the example design top-level module. The
four bits of the vector are sliced into four per-channel assignments that also map to
top-level outputs. The “ch” prefix of each signal indicates a transceiver channel
signal type, and the number that follows indicates its index among all enabled
transceiver channel primitives:
wire [3:0] gthtxp_int;
assign ch0_gthtxp_out = gthtxp_int[0:0];
assign ch1_gthtxp_out = gthtxp_int[1:1];
assign ch2_gthtxp_out = gthtxp_int[2:2];
assign ch3_gthtxp_out = gthtxp_int[3:3];
b. If the core instance contains three enabled transceiver channels and optionally
enables the drpaddr_in port, the 9-bit DRPADDR transceiver channel ports are
vectored as drpaddr_in[26:0] on the core interface and mapped to
drpaddr_int[26:0] within the example design top-level module. The 27 bits of
the vector are sliced into three per-channel assignments that are each set to the
same default driver value that the corresponding transceiver primitive port would
have been assigned to internally if the port were not exposed on the core interface.
If you choose to integrate the vector slicing convenience code into your project,
assign the signals as appropriate for your system:
wire [26:0] drpaddr_int;
wire [8:0] ch0_drpaddr_int = 9'b000000000;
wire [8:0] ch1_drpaddr_int = 9'b000000000;
wire [8:0] ch2_drpaddr_int = 9'b000000000;
assign drpaddr_int[8:0] = ch0_drpaddr_int;
assign drpaddr_int[17:9] = ch1_drpaddr_int;
assign drpaddr_int[26:18] = ch2_drpaddr_int;
c. If the core instance contains one enabled transceiver common and optionally
enables the qpll0lock_out port, the one-bit QPLL0LOCK transceiver common
port is provided as qpll0lock_out[0:0] on the core interface and mapped to
qpll0lock_int[0:0] within the example design top-level module. For this single
primitive case, the provided vector slicing is equivalent to a renamed signal. The
“cm” prefix of each signal indicates a transceiver common signal type, and the
number that follows indicates its index among all enabled transceiver common
primitives:
wire [0:0] qpll0lock_int;
wire [0:0] cm0_qpll0lock_int;
assign cm0_qpll0lock_int = qpll0lock_int [0:0];
d. Multiple instances of a helper block also results in similar assignments. The “hb”
prefix of each signal indicates a helper block signal type, and the number that
follows indicates its index among all included helper blocks of that type.
Note: A very small number of uncommonly-used transceiver primitive ports are tied off to safe
values within the core. If you use the optional port enablement interface to enable access to such
a port on the core interface, a warning message with usage instructions is included as a code
comment with its vector slicing assignments in the example design top-level module.
• The example design top-level module provides easy access to the reset inputs of the
user clocking network helper blocks, and by default, drives them with appropriate
signals that indicate clock source stability.
IMPORTANT: Xilinx cannot guarantee support for modifications made to the example design contents
as they are delivered, so be sure to understand the effects of your changes and follow any
recommendations in this document and in the example design code.
It can be useful to use the example wrapper level of the example design hierarchy in your
system because it instantiates the core and contains the example helper blocks and
transceiver common instances if those resources were specified to be located in the
example design during IP customization. Helper blocks and transceiver common instances
delivered within the example wrapper are provided as examples and can be modified as
necessary to suit your system requirements.
Note: The same parameter overrides exist on transceiver common instances for a given core
customization, regardless of their instantiated location.
As described in Constraining the Core, the example design XDC file contains top-level
design constraints, some of which will be necessary to include in your system when the
Wizard IP core is integrated into it. For example, differential reference clock period
constraints and buffer location constraints must be included in your own project XDC file.
The core-level XDC file that constrains individual transceiver channel locations
automatically remains associated with each instantiation of the core.
• The example design does not implement specific protocols to generate or check data.
For example, while the example stimulus module does support TX Gearbox data
encoding configurations and the example checking module does support RX Gearbox
data decoding configurations to interface to the transceiver channel primitives, they do
not implement true 64B/66B or 64B/67B data coding. Fundamentally, raw PRBS data is
generated and checked.
• When the example design is simulated using the provided test bench, each transceiver
channel is looped back from the serial data transmitter to the receiver. As such, data
integrity can only be properly checked if the transmitter and receiver are configured for
the same line rate and to use the same data coding. No transcoding or rate adjustment
schemes are used. If the transmitter and receiver line rates or data coding are
configured differently from one another in your system, you might wish to cross-couple
two appropriately-customized core instances and check for data integrity in hardware
or in your own test bench. In such a setup, the transmitter of core instance A is rate-
and coding-matched to the receiver of core instance B, and vice versa.
Test Bench
This chapter contains information about the provided test bench in the Vivado® Design
Suite.
The UltraScale™ FPGAs Transceivers Wizard includes a simple self-checking test bench
module that provides basic stimulus to the example design and interacts with its link status
interface to check for data integrity across all enabled transceiver channels.
The example design instantiates an example stimulus module to drive the transmitter user
interface and an example checking module that is driven by the receiver user interface of
each transceiver channel. The example design combines the individual PRBS match
indicators from each channel into an overall match signal. The combined match signal is the
basis of a link status indicator with corresponding sticky link down indicator and dedicated
reset input. See Chapter 5, Example Design for more details on the data stimulus, checking,
and link status functions of the example design.
The provided test bench instantiates the example design top-level module and loops back
each enabled transceiver channel in the core instance from the serial data transmitter to the
receiver. This enables the example stimulus, checking, and link status logic within the
example design to operate as part of a self-checking system under the stimulus of the
simulation test bench. For more information, refer to Vivado Design Suite: Logic Simulation
(UG900) [Ref 10].
Simulation Behavior
The example design simulation test bench provides the requisite free-running clock and
transceiver reference clock signals, as well as a “reset all” pulse to the example design logic
and reset controller helper block input ports. This stimulus is sufficient to allow the helper
blocks to bring up the remainder of the system. After some time, the transceiver PLL(s) will
achieve lock, allowing the reset controller helper block finite state machines to complete
the full reset sequence. After the reset sequence is complete, you can begin to observe the
example stimulus module transmitting data. A short time later, the example checking
module begins to search for data alignment and checks for data integrity, which is in turn
used by the link status logic to drive the link status indicator.
Note: To quickly demonstrate operation of the entire example design, the simulation test bench
asserts “reset all” from the beginning of operation. In hardware operation, initial reset inputs should
not be provided until transceiver power is good. See Reset Sequencing and Other Services, page 66
for relevant guidelines.
The example design output port link_status_out indicates a PRBS match-based link
across all channels. The test bench uses a counter to detect a level link_status_out
assertion, and deassertions reset the counter. When the counter saturates, the test bench
prints this message to the transcript:
The test bench then pulses link_down_latched_reset_in to reset the example design
sticky link down indicator, and allows the simulation to run for a prescribed period of time
to ensure that the link is maintained. These messages are printed to the transcript:
At the end of the prescribed wait period, the test bench checks whether the link has been
maintained. If so, the following messages are printed to the transcript and the test is
considered to have passed. The simulation then finishes:
Figure 6-1 shows the characteristic waveform of a passing test, demonstrating initial link, a
saturating link up counter leading to the link stable indicator, a pulse to reset the sticky link
down indicator, and the beginning of the wait period where the test bench is run while the
sticky link down indicator remains deasserted. The signals shown are those from the test
bench level of hierarchy only, and are the default set when loading a simulation from the
Vivado design tools. You might wish to add additional signals to the waveform window for
more visibility into the operation of the example design or the core instance.
If the link is lost after it was first achieved, the following messages are printed to the
transcript and the test is considered to have failed. The simulation then finishes:
FAIL: simulation completed with subsequent link loss after initial link.
** Error: Test did not complete successfully
Use the “run all” feature of your simulator to allow the simulation to run for an unbounded
period of time. The provided test bench includes a timeout process that, should the time
limit be reached before a stable link is first achieved, prints the following message to the
transcript before exiting the simulation. This behavior is considered a test failure and is not
expected:
The Wizard provides many of the same options present in previous Xilinx® Wizards IP
cores, as well as significant new features and flexibility.
Debugging
This appendix includes details about resources available on the Xilinx® Support website
and debugging tools.
Documentation
This product guide is the main document associated with the Wizard. This guide, along with
documentation related to all products that aid in the design process, can be found on the
Xilinx Support web page or by using the Xilinx Documentation Navigator.
Download the Xilinx Documentation Navigator from the Downloads page. For more
information about this tool and the features available, open the online help after
installation.
Answer Records
Answer Records include information about commonly encountered problems, helpful
information on how to resolve these problems, and any known issues with a Xilinx product.
Answer Records are created and maintained daily ensuring that users have access to the
most accurate information available.
Answer Records for this core can be located by using the Search Support box on the main
Xilinx support web page. To maximize your search results, use proper keywords such as
• Product name
• Tool message(s)
• Summary of the issue encountered
A filter search is available after results are returned to further target the results.
AR: 57487
Technical Support
Xilinx provides technical support in the Xilinx Support web page for this LogiCORE™ IP
product when used as described in the product documentation. Xilinx cannot guarantee
timing, functionality, or support if you do any of the following:
• Implement the solution in devices that are not defined in the documentation.
• Customize the solution beyond that allowed in the product documentation.
• Change any section of the design labeled DO NOT MODIFY.
To contact Xilinx Technical Support, navigate to the Xilinx Support web page.
The Vivado logic analyzer is used to interact with the logic debug LogiCORE IP cores,
including:
See the Vivado Design Suite User Guide: Programming and Debugging (UG908) [Ref 12].
Xilinx Resources
For support resources such as Answers, Documentation, Downloads, and Forums, see Xilinx
Support.
References
These documents provide supplemental material useful with this product guide:
Revision History
The following table shows the revision history for this document.