XilSKey_EPl - 2023.1 English

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

Document ID
UG643
Release Date
2023-05-16
Version
2023.1 English

XEfusePl is the PL eFUSE driver instance. Using this structure, user can define the eFUSE bits to be blown.

Declaration

typedef struct
{
  u32 ForcePowerCycle,
  u32 KeyWrite,
  u32 AESKeyRead,
  u32 UserKeyRead,
  u32 CtrlWrite,
  u32 RSARead,
  u32 UserKeyWrite,
  u32 SecureWrite,
  u32 RSAWrite,
  u32 User128BitWrite,
  u32 SecureRead,
  u32 AESKeyExclusive,
  u32 JtagDisable,
  u32 UseAESOnly,
  u32 EncryptOnly,
  u32 IntTestAccessDisable,
  u32 DecoderDisable,
  u32 RSAEnable,
  u32 FuseObfusEn,
  u32 ProgAESandUserLowKey,
  u32 ProgUserHighKey,
  u32 ProgAESKeyUltra,
  u32 ProgUserKeyUltra,
  u32 ProgRSAKeyUltra,
  u32 ProgUser128BitUltra,
  u32 CheckAESKeyUltra,
  u32 ReadUserKeyUltra,
  u32 ReadRSAKeyUltra,
  u32 ReadUser128BitUltra,
  u8 AESKey[XSK_EFUSEPL_AES_KEY_SIZE_IN_BYTES],
  u8 UserKey[XSK_EFUSEPL_USER_KEY_SIZE_IN_BYTES],
  u8 RSAKeyHash[XSK_EFUSEPL_RSA_KEY_HASH_SIZE_IN_BYTES],
  u8 User128Bit[XSK_EFUSEPL_128BIT_USERKEY_SIZE_IN_BYTES],
  u32 JtagMioTDI,
  u32 JtagMioTDO,
  u32 JtagMioTCK,
  u32 JtagMioTMS,
  u32 JtagMioMuxSel,
  u32 JtagMuxSelLineDefVal,
  u32 JtagGpioID,
  u32 HwmGpioStart,
  u32 HwmGpioReady,
  u32 HwmGpioEnd,
  u32 JtagGpioTDI,
  u32 JtagGpioTDO,
  u32 JtagGpioTMS,
  u32 JtagGpioTCK,
  u32 GpioInputCh,
  u32 GpioOutPutCh,
  u8 AESKeyReadback[XSK_EFUSEPL_AES_KEY_SIZE_IN_BYTES],
  u8 UserKeyReadback[XSK_EFUSEPL_USER_KEY_SIZE_IN_BYTES],
  u32 CrcOfAESKey,
  u8 AESKeyMatched,
  u8 RSAHashReadback[XSK_EFUSEPL_RSA_KEY_HASH_SIZE_IN_BYTES],
  u8 User128BitReadBack[XSK_EFUSEPL_128BIT_USERKEY_SIZE_IN_BYTES],
  u32 SystemInitDone,
  XSKEfusePl_Fpga FpgaFlag,
  u32 CrcToVerify,
  u32 NumSlr,
  u32 MasterSlr,
  u32 SlrConfigOrderIndex
} XilSKey_EPl;
Table 1. Structure XilSKey_EPl member description
Member Description
ForcePowerCycle

Following are the FUSE CNTRL bits[1:5, 8-10] If XTRUE then part has to be power cycled to be able to be reconfigured only for zynq Only for ZYNQ

KeyWrite

If XTRUE will disable eFUSE write to FUSE_AES and FUSE_USER blocks valid only for zynq but in ultrascale If XTRUE will disable eFUSE write to FUSE_AESKEY block in Ultrascale For ZYNQ and Ultrascale

AESKeyRead

If XTRUE will disable eFUSE read to FUSE_AES block and also disables eFUSE write to FUSE_AES and FUSE_USER blocks in Zynq Pl.but in Ultrascale if XTRUE will disable eFUSE read to FUSE_KEY block and also disables eFUSE write to FUSE_KEY blocks For Zynq and Ultrascale

UserKeyRead

If XTRUE will disable eFUSE read to FUSE_USER block and also disables eFUSE write to FUSE_AES and FUSE_USER blocks in zynq but in ultrascale if XTRUE will disable eFUSE read to FUSE_USER block and also disables eFUSE write to FUSE_USER blocks For Zynq and Ultrascale

CtrlWrite

If XTRUE will disable eFUSE write to FUSE_CNTRL block in both Zynq and Ultrascale For Zynq and Ultrascale

RSARead

If XTRUE will disable eFuse read to FUSE_RSA block and also disables eFuse write to FUSE_RSA block in Ultrascale only For Ultrascale If XTRUE will disable eFUSE write to FUSE_USER block in Ultrascale

UserKeyWrite

only For Ultrascale If XTRUE will disable eFUSE write to FUSE_SEC block in Ultrascale

SecureWrite

only For Ultrascale If XTRUE will disable eFUSE write to FUSE_RSA block in Ultrascale

RSAWrite

only For Ultrascale

User128BitWrite

If TRUE will disable eFUSE write to 128BIT FUSE_USER block in Ultrascale only For Ultrascale

SecureRead

IF XTRUE will disable eFuse read to FUSE_SEC block and also disables eFuse write to FUSE_SEC block in Ultrascale only For Ultrascale

AESKeyExclusive

If XTRUE will force eFUSE key to be used if booting Secure Image In Zynq Only for Zynq

JtagDisable

If XTRUE then permanently sets the Zynq ARM DAP controller in bypass mode in both zynq and ultrascale. for Zynq and Ultrascale

UseAESOnly

If XTRUE will force to use Secure boot with eFUSE key only for both Zynq and Ultrascale For Zynq and Ultrascale

EncryptOnly

If XTRUE will only allow encrypted bitstreams only For Ultrascale only

IntTestAccessDisable

If XTRUE then sets the disable's Xilinx internal test access in Ultrascale Only for Ultrascale

DecoderDisable

If XTRUE then permanently disables the decryptor in Ultrascale Only for Ultrascale

RSAEnable

Enable RSA authentication in ultrascale only for Ultrascale

FuseObfusEn

Enable Obfuscated feature for decryption of eFUSE AES only for Ultrascale

ProgAESandUserLowKey

Following is the define to select if the user wants to select AES key and User Low Key for Zynq Only for Zynq

ProgUserHighKey

Following is the define to select if the user wants to select User Low Key for Zynq Only for Zynq

ProgAESKeyUltra

Following is the define to select if the user wants to select User key for Ultrascale Only for Ultrascale

ProgUserKeyUltra

Following is the define to select if the user wants to select User key for Ultrascale Only for Ultrascale

ProgRSAKeyUltra

Following is the define to select if the user wants to select RSA key for Ultrascale Only for Ultrascale

ProgUser128BitUltra

Following is the define to select if the user wants to program 128-bit User key for Ultrascale Only for Ultrascale

CheckAESKeyUltra

Following is the define to select if the user wants to read AES key for Ultrascale Only for Ultrascale

ReadUserKeyUltra

Following is the define to select if the user wants to read User key for Ultrascale Only for Ultrascale

ReadRSAKeyUltra

Following is the define to select if the user wants to read RSA key for Ultrascale Only for Ultrascale

ReadUser128BitUltra

Following is the define to select if the user wants to read 128-bit User key for Ultrascale Only for Ultrascale

AESKey

This is the REF_CLK value in Hz < u32 RefClk; This is for the aes_key value for both Zynq and Ultrascale

UserKey

This is for the user_key value for both Zynq and Ultrascale

RSAKeyHash

This is for the rsa_key value for Ultrascale Only for Ultrascale

User128Bit

This is for the User 128-bit key value for Ultrascale Only for Ultrascale

JtagMioTDI

TDI MIO Pin Number for ZYNQ Only for ZYNQ

JtagMioTDO

TDO MIO Pin Number for ZYNQ Only for ZYNQ

JtagMioTCK

TCK MIO Pin Number for ZYNQ Only for ZYNQ

JtagMioTMS

TMS MIO Pin Number for ZYNQ Only for ZYNQ

JtagMioMuxSel

MUX Selection MIO Pin Number for ZYNQ Only for ZYNQ

JtagMuxSelLineDefVal

Value on the MUX Selection line for ZYNQ Only for ZYNQ

JtagGpioID

GPIO device ID Only for Ultrascale

HwmGpioStart

Hardware module Start signal's GPIO pin number Only for Ultrascale

HwmGpioReady

Hardware module Ready signal's GPIO pin number

HwmGpioEnd

Hardware module End signal's GPIO pin number Only for Ultrascale

JtagGpioTDI

TDI AXI GPIO pin number for Ultrascale Only for Ultrascale

JtagGpioTDO

TDO AXI GPIO pin number for Ultrascale Only for Ultrascale

JtagGpioTMS

TMS AXI GPIO pin number for Ultrascale Only for Ultrascale

JtagGpioTCK

TCK AXI GPIO pin number for Ultrascale Only for Ultrascale

GpioInputCh

AXI GPIO Channel number of all Inputs TDO Only for Ultrascale

GpioOutPutCh

AXI GPIO Channel number for all Outputs TDI/TMS/TCK Only for Ultrascale

AESKeyReadback

AES key read only for Zynq

UserKeyReadback

User key read in Ultrascale and Zynq for Ultrascale and Zynq

CrcOfAESKey

Expected AES key's CRC for Ultrascale here we can't read AES key directly Only for Ultrascale

AESKeyMatched

Flag is True is AES's CRC is matched, otherwise False Only for Ultrascale

RSAHashReadback

RSA key read back for Ultrascale Only for Ultrascale

User128BitReadBack

User 128-bit key read back for Ultrascale Only for Ultrascale

SystemInitDone

Internal variable to check if timer, XADC and JTAG are initialized.

FpgaFlag

Stores Fpga series of Efuse

CrcToVerify

CRC of AES key to verify programmed AES key Only for Ultrascale

NumSlr

Number of SLRs to iterate through

MasterSlr

Current SLR to iterate through

SlrConfigOrderIndex

Slr configuration order Index