Zynq UltraScale+ MPSoC User-Configurable PS PUF Parameters - Zynq UltraScale+ MPSoC User-Configurable PS PUF Parameters - 2026.1 English - UG643

Standalone Library Documentation: BSP and Libraries Document Collection (UG643)

Document ID
UG643
Release Date
2026-06-23
Version
2026.1 English

The table below lists the user-configurable PS PUF parameters for Zynq UltraScale+ MPSoC devices.

Table 1. Zynq UltraScale+ MPSoC User-Configurable PS PUF Parameters
Macro Name Description
XSK_PUF_INFO_ON_UART Default = FALSE

TRUE displays syndrome data on UART com port. FALSE displays any data on UART com port.

XSK_PUF_PROGRAM_EFUSE Default = FALSE

TRUE programs the generated syndrome data, CHash, and Auxilary values, Black key. FALSE does not program data into eFUSE.

XSK_PUF_IF_CONTRACT_MANUFACTURER Default = FALSE

Enable this macro when application is hand over to contract manufacturer. TRUE allows only authenticated application. FALSE authentication is not mandatory.

XSK_PUF_REG_MODE Default = XSK_PUF_MODE4KPUF registration is performed in 4K mode. For only understanding it is provided in this file, but user is not supposed to modify this.
XSK_PUF_READ_SECUREBITS Default = FALSE

TRUE reads status of the puf secure bits from eFUSE and displayed on UART. FALSE does not read secure bits.

XSK_PUF_PROGRAM_SECUREBITS Default = FALSE

TRUE programs PUF secure bits based on the user input provided at XSK_PUF_SYN_INVALID, XSK_PUF_SYN_WRLK, and XSK_PUF_REGISTER_DISABLE. FALSE does not program any PUF secure bits.

XSK_PUF_SYN_INVALID Default = FALSE

TRUE permanently invalidates the already programmed syndrome data.FALSE will not modify anything

XSK_PUF_SYN_WRLK Default = FALSE

TRUE will permanently disable programming syndrome data into eFUSE.FALSE will not modify anything.

XSK_PUF_REGISTER_DISABLE Default = FALSE

TRUE permanently does not allow PUF syndrome data registration.FALSE will not modify anything.

XSK_PUF_RESERVED Default = FALSE

TRUE programs this reserved eFUSE bit. FALSE will not modify anything.

XSK_PUF_AES_KEY Default = 0000000000000000000000000000000000000000000000000000000000000000

The value mentioned in this is converted to hex buffer and encrypts this with PUF helper data and generates a black key and written into the Zynq UltraScale+ MPSoC PS eFUSE array when XSK_PUF_PROGRAM_EFUSE macro is TRUE. Provide this value in the string format with 8 characters long. Valid characters are 0-9,a-f,A-F. Any other character is considered as invalid string and does not AES key.
Note: Provide red key in this macro and application calculates the black key and programs into eFUSE if XSK_PUF_PROGRAM_EFUSE macro is TRUE. To avoid programming eFUSE results can be displayed on UART com port by making XSK_PUF_INFO_ON_UART to TRUE.
XSK_PUF_BLACK_KEY_IV Default = 000000000000000000000000

The value mentioned here is converted to hex buffer.

This is Initialization vector(IV) which is used to generated black key with provided AES key and generated PUF key. Provide this value in the string format with 24 characters long. Valid characters are 0-9,a-f,A-F. Any other character is considered as invalid string.