14.4.1 Holding Registers

The RoT Holding Registers store eFuse values that auto-loaded on a POR or when the EN_LD_ALL/EN_LD register bits are set to perform a manual load operation.

The eFuse blocks are used to implement the following holding registers:
  • Unique ID
  • 16-bit device ID
  • 256-bit Storage Root Key (SRK)
  • 384-bit public boot key
  • 15-bit lifecycle counter
  • 255-bit anti-rollback counter
  • Security/RoT configuration
Figure 14-1. Memory Map of the Fuse Panels

The holding registers are governed by their read and write access permissions. The holding registers are loaded from their corresponding fuses if any of the following conditions are met:

  • After a POR during the Auto-Load state
  • Explicit FW setting of EN_LD_ALL or EN_LD bits
  • After fuse programming if EN_LD_ALL or EN_LD bits are set in the same cycle as EN_PGM being set

The above scheme minimizes the power and boot time associated with an eFuse load operation.

Holding registers can also be written by firmware dictated by the write locks as specified in the following table.

Table 14-1. Device Elements Provisioning
Secure ElementSize in BitsProvisionerTo Program Lock
Unique ID128MCHPYes
Device ID16MCHPYes
SECCFG32Code signer (MCHP, 3rd Parties, Customers)No
Anti Rollback Counter255Code signer (MCHP, 3rd Parties, Customers)No
Life Cycle Counter15Code signer (MCHP, 3rd Parties, Customers)No
Secure Boot Key384Code signer (MCHP, 3rd Parties, Customers)Yes
Storage Root Key256MCHPYes

All the holding registers are reset by POR. All the regular SFRs in the macro are reset by a system reset signal unless specifically mentioned otherwise.