For 7 series devices, the hierarchy of I/O banks is divided into two object types: I/O Banks and Package Pins. For AMD UltraScale architecture, the I/O bank hierarchy includes two additional divisions: bytegroups and nibbles. The relationships of these objects on an UltraScale device are defined as follows:
- An IO_BANK of 52 pins has four pkgpin_bytegroups, while a mini IO_BANK of 26 pins has two bytegroups.
- Each pkgpin_bytegroup has 13 package pins, and has two pkgpin_nibbles, an upper and lower.
- Each pkgpin_nibble has six or seven pins, and is the upper or lower nibble of the pkgpin_bytegroup.
- A package_pin is one pin of an iobank, a pkgpin_bytegroup, or a pkgpin_nibble.
In UltraScale, the bitslice logic connected to I/O banks is grouped into pkgpin_bytegroups and pkgpin_nibbles. These objects aid in the placement of related I/O pins, such as groups of bitslices. For instance, you can use bytegroups and nibbles for I/O pin assignment of memory controllers on UltraScale devices. You can perform interactive I/O planning by opening either the elaborated RTL design or the synthesized design in the Vivado IDE, using the Memory Bank/Byte Planner, which enables automatic or manual assignment of memory I/O pin groups to I/O banks and byte lanes. This process is discussed in detail at this link in the Vivado Design Suite User Guide: I/O and Clock Planning (UG899).
The PKGPIN_BYTEGROUP and PKGPIN_NIBBLE are related to IO_BANKs, PACKAGE_PINs, and PORTs, as previously described. In addition, each PKGPIN_BYTEGROUP is related to a SITE on the AMD device. You can query the PKGPIN_BYTEGROUP of an associated object using a Tcl command like the following:
get_pkgpin_bytegroups -of [get_package_pins AG17]
You can also get the list of package_pin objects assigned to specific pkgpin_bytegroups:
get_package_pins -of [get_pkgpin_bytegroups BANK45_BYTE2]
The properties found on PKGPIN_BYTEGROUP objects are as follows, with example values:
Property Type Read-only Value CLASS string true pkgpin_bytegroup INDEX_IN_IOBANK int true 2 IOBANK int true 45 NAME string true BANK45_BYTE2
The properties of the bytegroup objects can be listed with the following command:
report_property -all [lindex [get_pkgpin_bytegroups] 0]