IBERT

The Integrated Bit Error Ratio Tester (IBERT) core is an integrated feature in the multi-gigabit transceivers (GTs) of Versal ACAP devices. The IBERT core feature is available for use at runtime for any Versal ACAP design that instantiates the GT-related IPs using the Vivado GT Wizard. The IBERT ChipScoPy APIs provides users functionality to access to all available attributes for the GTs, create TX/RX links, modify relevant TX and/or RX parameters and run 2D statistical eye scans.

Discovering IBERT

To discover the IBERT core(s) on a device, call the discover_and_setup_cores() method with the ibert_scan argument as true

from chipscopy import create_session

CS_URL = "TCP:localhost:3042"
HW_URL = "TCP:localhost:3121"

session = create_session(cs_server_url=CS_URL, hw_server_url=HW_URL)

device = session.devices.at(index=0)

device.discover_and_setup_cores(ibert_scan=True)

To access the IBERT cores that were found and setup, access the ibert_cores attribute that is part of the Device class.

iberts = device.ibert_cores
ibert_0 = ibert.at(index=0)

Hierarchy of objects

The hierarchy of serial objects is useful when trying to access the children of certain object. To print the hierarchy to stdout, use the report_hierarchy() method.

report_hierarchy(ibert_0)

The output is similar to the linux tree command. Below is a sample IBERT Versal GTY core with Quad_103 as the only active GT Group.

_images/ibert-hierarchy.png

Reset

To reset all the RX, TX and PLL in the child GT Group(s), use the reset() method

ibert_0.reset()

Attributes of IBERT object

The attributes of the IBERT class instance are listed here and are accessible via the python . operator i.e. <ibert_obj>.<attribute>.

Table 1 IBERT attributes

Attribute

Description

name

Name of the IBERT core

type

Serial object type. This is always equal to IBERT_KEY

handle

Handle of the IBERT from cs_server

children

Direct children of the IBERT core

gt_groups

Children of type GTGroup

Other serial objects

Scans

Appendix & Reference