Registers

Summary of the core interface’s registers

NameOffsetLengthDescription
otp_ctrl.INTR_STATE0x04Interrupt State Register
otp_ctrl.INTR_ENABLE0x44Interrupt Enable Register
otp_ctrl.INTR_TEST0x84Interrupt Test Register
otp_ctrl.ALERT_TEST0xc4Alert Test Register
otp_ctrl.STATUS0x104OTP status register.
otp_ctrl.ERR_CODE_00x144This register holds information about error conditions that occurred in the agents
otp_ctrl.ERR_CODE_10x184This register holds information about error conditions that occurred in the agents
otp_ctrl.ERR_CODE_20x1c4This register holds information about error conditions that occurred in the agents
otp_ctrl.ERR_CODE_30x204This register holds information about error conditions that occurred in the agents
otp_ctrl.ERR_CODE_40x244This register holds information about error conditions that occurred in the agents
otp_ctrl.ERR_CODE_50x284This register holds information about error conditions that occurred in the agents
otp_ctrl.ERR_CODE_60x2c4This register holds information about error conditions that occurred in the agents
otp_ctrl.ERR_CODE_70x304This register holds information about error conditions that occurred in the agents
otp_ctrl.ERR_CODE_80x344This register holds information about error conditions that occurred in the agents
otp_ctrl.ERR_CODE_90x384This register holds information about error conditions that occurred in the agents
otp_ctrl.ERR_CODE_100x3c4This register holds information about error conditions that occurred in the agents
otp_ctrl.ERR_CODE_110x404This register holds information about error conditions that occurred in the agents
otp_ctrl.ERR_CODE_120x444This register holds information about error conditions that occurred in the agents
otp_ctrl.ERR_CODE_130x484This register holds information about error conditions that occurred in the agents
otp_ctrl.ERR_CODE_140x4c4This register holds information about error conditions that occurred in the agents
otp_ctrl.ERR_CODE_150x504This register holds information about error conditions that occurred in the agents
otp_ctrl.ERR_CODE_160x544This register holds information about error conditions that occurred in the agents
otp_ctrl.ERR_CODE_170x584This register holds information about error conditions that occurred in the agents
otp_ctrl.ERR_CODE_180x5c4This register holds information about error conditions that occurred in the agents
otp_ctrl.ERR_CODE_190x604This register holds information about error conditions that occurred in the agents
otp_ctrl.ERR_CODE_200x644This register holds information about error conditions that occurred in the agents
otp_ctrl.ERR_CODE_210x684This register holds information about error conditions that occurred in the agents
otp_ctrl.ERR_CODE_220x6c4This register holds information about error conditions that occurred in the agents
otp_ctrl.ERR_CODE_230x704This register holds information about error conditions that occurred in the agents
otp_ctrl.DIRECT_ACCESS_REGWEN0x744Register write enable for all direct access interface registers.
otp_ctrl.DIRECT_ACCESS_CMD0x784Command register for direct accesses.
otp_ctrl.DIRECT_ACCESS_ADDRESS0x7c4Address register for direct accesses.
otp_ctrl.DIRECT_ACCESS_WDATA_00x804Write data for direct accesses.
otp_ctrl.DIRECT_ACCESS_WDATA_10x844Write data for direct accesses.
otp_ctrl.DIRECT_ACCESS_RDATA_00x884Read data for direct accesses.
otp_ctrl.DIRECT_ACCESS_RDATA_10x8c4Read data for direct accesses.
otp_ctrl.CHECK_TRIGGER_REGWEN0x904Register write enable for !!CHECK_TRIGGER.
otp_ctrl.CHECK_TRIGGER0x944Command register for direct accesses.
otp_ctrl.CHECK_REGWEN0x984Register write enable for !!INTEGRITY_CHECK_PERIOD and !!CONSISTENCY_CHECK_PERIOD.
otp_ctrl.CHECK_TIMEOUT0x9c4Timeout value for the integrity and consistency checks.
otp_ctrl.INTEGRITY_CHECK_PERIOD0xa04This value specifies the maximum period that can be generated pseudo-randomly.
otp_ctrl.CONSISTENCY_CHECK_PERIOD0xa44This value specifies the maximum period that can be generated pseudo-randomly.
otp_ctrl.VENDOR_TEST_READ_LOCK0xa84Runtime read lock for the VENDOR_TEST partition.
otp_ctrl.CREATOR_SW_CFG_READ_LOCK0xac4Runtime read lock for the CREATOR_SW_CFG partition.
otp_ctrl.OWNER_SW_CFG_READ_LOCK0xb04Runtime read lock for the OWNER_SW_CFG partition.
otp_ctrl.OWNERSHIP_SLOT_STATE_READ_LOCK0xb44Runtime read lock for the OWNERSHIP_SLOT_STATE partition.
otp_ctrl.ROT_CREATOR_AUTH_READ_LOCK0xb84Runtime read lock for the ROT_CREATOR_AUTH partition.
otp_ctrl.ROT_OWNER_AUTH_SLOT0_READ_LOCK0xbc4Runtime read lock for the ROT_OWNER_AUTH_SLOT0 partition.
otp_ctrl.ROT_OWNER_AUTH_SLOT1_READ_LOCK0xc04Runtime read lock for the ROT_OWNER_AUTH_SLOT1 partition.
otp_ctrl.PLAT_INTEG_AUTH_SLOT0_READ_LOCK0xc44Runtime read lock for the PLAT_INTEG_AUTH_SLOT0 partition.
otp_ctrl.PLAT_INTEG_AUTH_SLOT1_READ_LOCK0xc84Runtime read lock for the PLAT_INTEG_AUTH_SLOT1 partition.
otp_ctrl.PLAT_OWNER_AUTH_SLOT0_READ_LOCK0xcc4Runtime read lock for the PLAT_OWNER_AUTH_SLOT0 partition.
otp_ctrl.PLAT_OWNER_AUTH_SLOT1_READ_LOCK0xd04Runtime read lock for the PLAT_OWNER_AUTH_SLOT1 partition.
otp_ctrl.PLAT_OWNER_AUTH_SLOT2_READ_LOCK0xd44Runtime read lock for the PLAT_OWNER_AUTH_SLOT2 partition.
otp_ctrl.PLAT_OWNER_AUTH_SLOT3_READ_LOCK0xd84Runtime read lock for the PLAT_OWNER_AUTH_SLOT3 partition.
otp_ctrl.EXT_NVM_READ_LOCK0xdc4Runtime read lock for the EXT_NVM partition.
otp_ctrl.ROM_PATCH_READ_LOCK0xe04Runtime read lock for the ROM_PATCH partition.
otp_ctrl.VENDOR_TEST_DIGEST_00xe44Integrity digest for the VENDOR_TEST partition.
otp_ctrl.VENDOR_TEST_DIGEST_10xe84Integrity digest for the VENDOR_TEST partition.
otp_ctrl.CREATOR_SW_CFG_DIGEST_00xec4Integrity digest for the CREATOR_SW_CFG partition.
otp_ctrl.CREATOR_SW_CFG_DIGEST_10xf04Integrity digest for the CREATOR_SW_CFG partition.
otp_ctrl.OWNER_SW_CFG_DIGEST_00xf44Integrity digest for the OWNER_SW_CFG partition.
otp_ctrl.OWNER_SW_CFG_DIGEST_10xf84Integrity digest for the OWNER_SW_CFG partition.
otp_ctrl.ROT_CREATOR_AUTH_DIGEST_00xfc4Integrity digest for the ROT_CREATOR_AUTH partition.
otp_ctrl.ROT_CREATOR_AUTH_DIGEST_10x1004Integrity digest for the ROT_CREATOR_AUTH partition.
otp_ctrl.ROT_OWNER_AUTH_SLOT0_DIGEST_00x1044Integrity digest for the ROT_OWNER_AUTH_SLOT0 partition.
otp_ctrl.ROT_OWNER_AUTH_SLOT0_DIGEST_10x1084Integrity digest for the ROT_OWNER_AUTH_SLOT0 partition.
otp_ctrl.ROT_OWNER_AUTH_SLOT1_DIGEST_00x10c4Integrity digest for the ROT_OWNER_AUTH_SLOT1 partition.
otp_ctrl.ROT_OWNER_AUTH_SLOT1_DIGEST_10x1104Integrity digest for the ROT_OWNER_AUTH_SLOT1 partition.
otp_ctrl.PLAT_INTEG_AUTH_SLOT0_DIGEST_00x1144Integrity digest for the PLAT_INTEG_AUTH_SLOT0 partition.
otp_ctrl.PLAT_INTEG_AUTH_SLOT0_DIGEST_10x1184Integrity digest for the PLAT_INTEG_AUTH_SLOT0 partition.
otp_ctrl.PLAT_INTEG_AUTH_SLOT1_DIGEST_00x11c4Integrity digest for the PLAT_INTEG_AUTH_SLOT1 partition.
otp_ctrl.PLAT_INTEG_AUTH_SLOT1_DIGEST_10x1204Integrity digest for the PLAT_INTEG_AUTH_SLOT1 partition.
otp_ctrl.PLAT_OWNER_AUTH_SLOT0_DIGEST_00x1244Integrity digest for the PLAT_OWNER_AUTH_SLOT0 partition.
otp_ctrl.PLAT_OWNER_AUTH_SLOT0_DIGEST_10x1284Integrity digest for the PLAT_OWNER_AUTH_SLOT0 partition.
otp_ctrl.PLAT_OWNER_AUTH_SLOT1_DIGEST_00x12c4Integrity digest for the PLAT_OWNER_AUTH_SLOT1 partition.
otp_ctrl.PLAT_OWNER_AUTH_SLOT1_DIGEST_10x1304Integrity digest for the PLAT_OWNER_AUTH_SLOT1 partition.
otp_ctrl.PLAT_OWNER_AUTH_SLOT2_DIGEST_00x1344Integrity digest for the PLAT_OWNER_AUTH_SLOT2 partition.
otp_ctrl.PLAT_OWNER_AUTH_SLOT2_DIGEST_10x1384Integrity digest for the PLAT_OWNER_AUTH_SLOT2 partition.
otp_ctrl.PLAT_OWNER_AUTH_SLOT3_DIGEST_00x13c4Integrity digest for the PLAT_OWNER_AUTH_SLOT3 partition.
otp_ctrl.PLAT_OWNER_AUTH_SLOT3_DIGEST_10x1404Integrity digest for the PLAT_OWNER_AUTH_SLOT3 partition.
otp_ctrl.ROM_PATCH_DIGEST_00x1444Integrity digest for the ROM_PATCH partition.
otp_ctrl.ROM_PATCH_DIGEST_10x1484Integrity digest for the ROM_PATCH partition.
otp_ctrl.HW_CFG0_DIGEST_00x14c4Integrity digest for the HW_CFG0 partition.
otp_ctrl.HW_CFG0_DIGEST_10x1504Integrity digest for the HW_CFG0 partition.
otp_ctrl.HW_CFG1_DIGEST_00x1544Integrity digest for the HW_CFG1 partition.
otp_ctrl.HW_CFG1_DIGEST_10x1584Integrity digest for the HW_CFG1 partition.
otp_ctrl.SECRET0_DIGEST_00x15c4Integrity digest for the SECRET0 partition.
otp_ctrl.SECRET0_DIGEST_10x1604Integrity digest for the SECRET0 partition.
otp_ctrl.SECRET1_DIGEST_00x1644Integrity digest for the SECRET1 partition.
otp_ctrl.SECRET1_DIGEST_10x1684Integrity digest for the SECRET1 partition.
otp_ctrl.SECRET2_DIGEST_00x16c4Integrity digest for the SECRET2 partition.
otp_ctrl.SECRET2_DIGEST_10x1704Integrity digest for the SECRET2 partition.
otp_ctrl.SECRET3_DIGEST_00x1744Integrity digest for the SECRET3 partition.
otp_ctrl.SECRET3_DIGEST_10x1784Integrity digest for the SECRET3 partition.
otp_ctrl.SW_CFG_WINDOW0x400016384Any read to this window directly maps to the corresponding offset in the creator and owner software

INTR_STATE

Interrupt State Register

  • Offset: 0x0
  • Reset default: 0x0
  • Reset mask: 0x3

Fields

{"reg": [{"name": "otp_operation_done", "bits": 1, "attr": ["rw1c"], "rotate": -90}, {"name": "otp_error", "bits": 1, "attr": ["rw1c"], "rotate": -90}, {"bits": 30}], "config": {"lanes": 1, "fontsize": 10, "vspace": 200}}
BitsTypeResetNameDescription
31:2Reserved
1rw1c0x0otp_errorAn error has occurred in the OTP controller. Check the ERR_CODE register to get more information.
0rw1c0x0otp_operation_doneA direct access command or digest calculation operation has completed.

INTR_ENABLE

Interrupt Enable Register

  • Offset: 0x4
  • Reset default: 0x0
  • Reset mask: 0x3

Fields

{"reg": [{"name": "otp_operation_done", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "otp_error", "bits": 1, "attr": ["rw"], "rotate": -90}, {"bits": 30}], "config": {"lanes": 1, "fontsize": 10, "vspace": 200}}
BitsTypeResetNameDescription
31:2Reserved
1rw0x0otp_errorEnable interrupt when INTR_STATE.otp_error is set.
0rw0x0otp_operation_doneEnable interrupt when INTR_STATE.otp_operation_done is set.

INTR_TEST

Interrupt Test Register

  • Offset: 0x8
  • Reset default: 0x0
  • Reset mask: 0x3

Fields

{"reg": [{"name": "otp_operation_done", "bits": 1, "attr": ["wo"], "rotate": -90}, {"name": "otp_error", "bits": 1, "attr": ["wo"], "rotate": -90}, {"bits": 30}], "config": {"lanes": 1, "fontsize": 10, "vspace": 200}}
BitsTypeResetNameDescription
31:2Reserved
1wo0x0otp_errorWrite 1 to force INTR_STATE.otp_error to 1.
0wo0x0otp_operation_doneWrite 1 to force INTR_STATE.otp_operation_done to 1.

ALERT_TEST

Alert Test Register

  • Offset: 0xc
  • Reset default: 0x0
  • Reset mask: 0x1f

Fields

{"reg": [{"name": "fatal_macro_error", "bits": 1, "attr": ["wo"], "rotate": -90}, {"name": "fatal_check_error", "bits": 1, "attr": ["wo"], "rotate": -90}, {"name": "fatal_bus_integ_error", "bits": 1, "attr": ["wo"], "rotate": -90}, {"name": "fatal_prim_otp_alert", "bits": 1, "attr": ["wo"], "rotate": -90}, {"name": "recov_prim_otp_alert", "bits": 1, "attr": ["wo"], "rotate": -90}, {"bits": 27}], "config": {"lanes": 1, "fontsize": 10, "vspace": 230}}
BitsTypeResetNameDescription
31:5Reserved
4wo0x0recov_prim_otp_alertWrite 1 to trigger one alert event of this kind.
3wo0x0fatal_prim_otp_alertWrite 1 to trigger one alert event of this kind.
2wo0x0fatal_bus_integ_errorWrite 1 to trigger one alert event of this kind.
1wo0x0fatal_check_errorWrite 1 to trigger one alert event of this kind.
0wo0x0fatal_macro_errorWrite 1 to trigger one alert event of this kind.

STATUS

OTP status register.

  • Offset: 0x10
  • Reset default: 0x0
  • Reset mask: 0x7fffffff

Fields

{"reg": [{"name": "VENDOR_TEST_ERROR", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "CREATOR_SW_CFG_ERROR", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "OWNER_SW_CFG_ERROR", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "OWNERSHIP_SLOT_STATE_ERROR", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "ROT_CREATOR_AUTH_ERROR", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "ROT_OWNER_AUTH_SLOT0_ERROR", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "ROT_OWNER_AUTH_SLOT1_ERROR", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "PLAT_INTEG_AUTH_SLOT0_ERROR", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "PLAT_INTEG_AUTH_SLOT1_ERROR", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "PLAT_OWNER_AUTH_SLOT0_ERROR", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "PLAT_OWNER_AUTH_SLOT1_ERROR", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "PLAT_OWNER_AUTH_SLOT2_ERROR", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "PLAT_OWNER_AUTH_SLOT3_ERROR", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "EXT_NVM_ERROR", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "ROM_PATCH_ERROR", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "HW_CFG0_ERROR", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "HW_CFG1_ERROR", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "SECRET0_ERROR", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "SECRET1_ERROR", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "SECRET2_ERROR", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "SECRET3_ERROR", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "LIFE_CYCLE_ERROR", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "DAI_ERROR", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "LCI_ERROR", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "TIMEOUT_ERROR", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "LFSR_FSM_ERROR", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "SCRAMBLING_FSM_ERROR", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "KEY_DERIV_FSM_ERROR", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "BUS_INTEG_ERROR", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "DAI_IDLE", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "CHECK_PENDING", "bits": 1, "attr": ["ro"], "rotate": -90}, {"bits": 1}], "config": {"lanes": 1, "fontsize": 10, "vspace": 290}}
BitsTypeResetNameDescription
31Reserved
30ro0x0CHECK_PENDINGSet to 1 if an integrity or consistency check triggered by the LFSR timer or via CHECK_TRIGGER is pending.
29ro0x0DAI_IDLESet to 1 if the DAI is idle and ready to accept commands.
28ro0x0BUS_INTEG_ERRORThis bit is set to 1 if a fatal bus integrity fault is detected. This error triggers a fatal_bus_integ_error alert.
27ro0x0KEY_DERIV_FSM_ERRORSet to 1 if the key derivation FSM has reached an invalid state. This raises an fatal_check_error alert and is an unrecoverable error condition.
26ro0x0SCRAMBLING_FSM_ERRORSet to 1 if the scrambling datapath FSM has reached an invalid state. This raises an fatal_check_error alert and is an unrecoverable error condition.
25ro0x0LFSR_FSM_ERRORSet to 1 if the LFSR timer FSM has reached an invalid state. This raises an fatal_check_error alert and is an unrecoverable error condition.
24ro0x0TIMEOUT_ERRORSet to 1 if an integrity or consistency check times out. This raises an fatal_check_error alert and is an unrecoverable error condition.
23ro0x0LCI_ERRORSet to 1 if an error occurred in the LCI. If set to 1, SW should check the ERR_CODE register at the corresponding index.
22ro0x0DAI_ERRORSet to 1 if an error occurred in the DAI. If set to 1, SW should check the ERR_CODE register at the corresponding index.
21ro0x0LIFE_CYCLE_ERRORSet to 1 if an error occurred in this partition. If set to 1, SW should check the ERR_CODE register at the corresponding index.
20ro0x0SECRET3_ERRORSet to 1 if an error occurred in this partition. If set to 1, SW should check the ERR_CODE register at the corresponding index.
19ro0x0SECRET2_ERRORSet to 1 if an error occurred in this partition. If set to 1, SW should check the ERR_CODE register at the corresponding index.
18ro0x0SECRET1_ERRORSet to 1 if an error occurred in this partition. If set to 1, SW should check the ERR_CODE register at the corresponding index.
17ro0x0SECRET0_ERRORSet to 1 if an error occurred in this partition. If set to 1, SW should check the ERR_CODE register at the corresponding index.
16ro0x0HW_CFG1_ERRORSet to 1 if an error occurred in this partition. If set to 1, SW should check the ERR_CODE register at the corresponding index.
15ro0x0HW_CFG0_ERRORSet to 1 if an error occurred in this partition. If set to 1, SW should check the ERR_CODE register at the corresponding index.
14ro0x0ROM_PATCH_ERRORSet to 1 if an error occurred in this partition. If set to 1, SW should check the ERR_CODE register at the corresponding index.
13ro0x0EXT_NVM_ERRORSet to 1 if an error occurred in this partition. If set to 1, SW should check the ERR_CODE register at the corresponding index.
12ro0x0PLAT_OWNER_AUTH_SLOT3_ERRORSet to 1 if an error occurred in this partition. If set to 1, SW should check the ERR_CODE register at the corresponding index.
11ro0x0PLAT_OWNER_AUTH_SLOT2_ERRORSet to 1 if an error occurred in this partition. If set to 1, SW should check the ERR_CODE register at the corresponding index.
10ro0x0PLAT_OWNER_AUTH_SLOT1_ERRORSet to 1 if an error occurred in this partition. If set to 1, SW should check the ERR_CODE register at the corresponding index.
9ro0x0PLAT_OWNER_AUTH_SLOT0_ERRORSet to 1 if an error occurred in this partition. If set to 1, SW should check the ERR_CODE register at the corresponding index.
8ro0x0PLAT_INTEG_AUTH_SLOT1_ERRORSet to 1 if an error occurred in this partition. If set to 1, SW should check the ERR_CODE register at the corresponding index.
7ro0x0PLAT_INTEG_AUTH_SLOT0_ERRORSet to 1 if an error occurred in this partition. If set to 1, SW should check the ERR_CODE register at the corresponding index.
6ro0x0ROT_OWNER_AUTH_SLOT1_ERRORSet to 1 if an error occurred in this partition. If set to 1, SW should check the ERR_CODE register at the corresponding index.
5ro0x0ROT_OWNER_AUTH_SLOT0_ERRORSet to 1 if an error occurred in this partition. If set to 1, SW should check the ERR_CODE register at the corresponding index.
4ro0x0ROT_CREATOR_AUTH_ERRORSet to 1 if an error occurred in this partition. If set to 1, SW should check the ERR_CODE register at the corresponding index.
3ro0x0OWNERSHIP_SLOT_STATE_ERRORSet to 1 if an error occurred in this partition. If set to 1, SW should check the ERR_CODE register at the corresponding index.
2ro0x0OWNER_SW_CFG_ERRORSet to 1 if an error occurred in this partition. If set to 1, SW should check the ERR_CODE register at the corresponding index.
1ro0x0CREATOR_SW_CFG_ERRORSet to 1 if an error occurred in this partition. If set to 1, SW should check the ERR_CODE register at the corresponding index.
0ro0x0VENDOR_TEST_ERRORSet to 1 if an error occurred in this partition. If set to 1, SW should check the ERR_CODE register at the corresponding index.

ERR_CODE

This register holds information about error conditions that occurred in the agents interacting with the OTP macro via the internal bus. The error codes should be checked if the partitions, DAI or LCI flag an error in the STATUS register, or when an INTR_STATE.otp_error has been triggered. Note that all errors trigger an otp_error interrupt, and in addition some errors may trigger either an fatal_macro_error or an fatal_check_error alert.

  • Reset default: 0x0
  • Reset mask: 0x7

Instances

NameOffset
ERR_CODE_00x14
ERR_CODE_10x18
ERR_CODE_20x1c
ERR_CODE_30x20
ERR_CODE_40x24
ERR_CODE_50x28
ERR_CODE_60x2c
ERR_CODE_70x30
ERR_CODE_80x34
ERR_CODE_90x38
ERR_CODE_100x3c
ERR_CODE_110x40
ERR_CODE_120x44
ERR_CODE_130x48
ERR_CODE_140x4c
ERR_CODE_150x50
ERR_CODE_160x54
ERR_CODE_170x58
ERR_CODE_180x5c
ERR_CODE_190x60
ERR_CODE_200x64
ERR_CODE_210x68
ERR_CODE_220x6c
ERR_CODE_230x70

Fields

{"reg": [{"name": "ERR_CODE", "bits": 3, "attr": ["ro"], "rotate": -90}, {"bits": 29}], "config": {"lanes": 1, "fontsize": 10, "vspace": 100}}
BitsTypeResetName
31:3Reserved
2:0ro0x0ERR_CODE

ERR_CODE . ERR_CODE

ValueNameDescription
0x0NO_ERRORNo error condition has occurred.
0x1MACRO_ERRORReturned if the OTP macro command was invalid or did not complete successfully due to a macro malfunction. This error should never occur during normal operation and is not recoverable. This error triggers an fatal_macro_error alert.
0x2MACRO_ECC_CORR_ERRORA correctable ECC error has occured during an OTP read operation. The corresponding controller automatically recovers from this error when issuing a new command.
0x3MACRO_ECC_UNCORR_ERRORAn uncorrectable ECC error has occurred during an OTP read operation. This error should never occur during normal operation and is not recoverable. If this error is present this may be a sign that the device is malfunctioning. This error triggers an fatal_macro_error alert.
0x4MACRO_WRITE_BLANK_ERRORThis error is returned if a programming operation attempted to clear a bit that has previously been programmed to 1. The corresponding controller automatically recovers from this error when issuing a new command. Note however that the affected OTP word may be left in an inconsistent state if this error occurs. This can cause several issues when the word is accessed again (either as part of a regular read operation, as part of the readout at boot, or as part of a background check). It is important that SW ensures that each word is only written once, since this can render the device useless.
0x5ACCESS_ERRORThis error indicates that a locked memory region has been accessed. The corresponding controller automatically recovers from this error when issuing a new command.
0x6CHECK_FAIL_ERRORAn ECC, integrity or consistency mismatch has been detected in the buffer registers. This error should never occur during normal operation and is not recoverable. This error triggers an fatal_check_error alert.
0x7FSM_STATE_ERRORThe FSM of the corresponding controller has reached an invalid state, or the FSM has been moved into a terminal error state due to an escalation action via lc_escalate_en_i. This error should never occur during normal operation and is not recoverable. If this error is present, this is a sign that the device has fallen victim to an invasive attack. This error triggers an fatal_check_error alert.

DIRECT_ACCESS_REGWEN

Register write enable for all direct access interface registers.

  • Offset: 0x74
  • Reset default: 0x1
  • Reset mask: 0x1

Fields

{"reg": [{"name": "DIRECT_ACCESS_REGWEN", "bits": 1, "attr": ["rw0c"], "rotate": -90}, {"bits": 31}], "config": {"lanes": 1, "fontsize": 10, "vspace": 220}}
BitsTypeResetName
31:1Reserved
0rw0c0x1DIRECT_ACCESS_REGWEN

DIRECT_ACCESS_REGWEN . DIRECT_ACCESS_REGWEN

This bit controls whether the DAI registers can be written. Write 0 to it in order to clear the bit.

Note that the hardware also modulates this bit and sets it to 0 temporarily during an OTP operation such that the corresponding address and data registers cannot be modified while an operation is pending. The DAI_IDLE status bit will also be set to 0 in such a case.

DIRECT_ACCESS_CMD

Command register for direct accesses.

Fields

{"reg": [{"name": "RD", "bits": 1, "attr": ["r0w1c"], "rotate": -90}, {"name": "WR", "bits": 1, "attr": ["r0w1c"], "rotate": -90}, {"name": "DIGEST", "bits": 1, "attr": ["r0w1c"], "rotate": -90}, {"bits": 29}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:3Reserved
2r0w1c0x0DIGESTInitiates the digest calculation and locking sequence for the partition specified by DIRECT_ACCESS_ADDRESS.
1r0w1c0x0WRInitiates a programming sequence that writes the data in DIRECT_ACCESS_WDATA_0 and DIRECT_ACCESS_WDATA_1 (for 64bit partitions) to the location specified by DIRECT_ACCESS_ADDRESS.
0r0w1c0x0RDInitiates a readout sequence that reads the location specified by DIRECT_ACCESS_ADDRESS. The command places the data read into DIRECT_ACCESS_RDATA_0 and DIRECT_ACCESS_RDATA_1 (for 64bit partitions).

DIRECT_ACCESS_ADDRESS

Address register for direct accesses.

Fields

{"reg": [{"name": "DIRECT_ACCESS_ADDRESS", "bits": 14, "attr": ["rw"], "rotate": 0}, {"bits": 18}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetName
31:14Reserved
13:0rw0x0DIRECT_ACCESS_ADDRESS

DIRECT_ACCESS_ADDRESS . DIRECT_ACCESS_ADDRESS

This is the address for the OTP word to be read or written through the direct access interface. Note that the address is aligned to the access size internally, hence bits 1:0 are ignored for 32bit accesses, and bits 2:0 are ignored for 64bit accesses.

For the digest calculation command, set this register to the partition base offset.

DIRECT_ACCESS_WDATA

Write data for direct accesses. Hardware automatically determines the access granule (32bit or 64bit) based on which partition is being written to.

Instances

NameOffset
DIRECT_ACCESS_WDATA_00x80
DIRECT_ACCESS_WDATA_10x84

Fields

{"reg": [{"name": "DIRECT_ACCESS_WDATA", "bits": 32, "attr": ["rw"], "rotate": 0}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:0rw0x0DIRECT_ACCESS_WDATA

DIRECT_ACCESS_RDATA

Read data for direct accesses. Hardware automatically determines the access granule (32bit or 64bit) based on which partition is read from.

  • Reset default: 0x0
  • Reset mask: 0xffffffff

Instances

NameOffset
DIRECT_ACCESS_RDATA_00x88
DIRECT_ACCESS_RDATA_10x8c

Fields

{"reg": [{"name": "DIRECT_ACCESS_RDATA", "bits": 32, "attr": ["ro"], "rotate": 0}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:0ro0x0DIRECT_ACCESS_RDATA

CHECK_TRIGGER_REGWEN

Register write enable for CHECK_TRIGGER.

  • Offset: 0x90
  • Reset default: 0x1
  • Reset mask: 0x1

Fields

{"reg": [{"name": "CHECK_TRIGGER_REGWEN", "bits": 1, "attr": ["rw0c"], "rotate": -90}, {"bits": 31}], "config": {"lanes": 1, "fontsize": 10, "vspace": 220}}
BitsTypeResetNameDescription
31:1Reserved
0rw0c0x1CHECK_TRIGGER_REGWENWhen cleared to 0, the CHECK_TRIGGER register cannot be written anymore. Write 0 to clear this bit.

CHECK_TRIGGER

Command register for direct accesses.

Fields

{"reg": [{"name": "INTEGRITY", "bits": 1, "attr": ["r0w1c"], "rotate": -90}, {"name": "CONSISTENCY", "bits": 1, "attr": ["r0w1c"], "rotate": -90}, {"bits": 30}], "config": {"lanes": 1, "fontsize": 10, "vspace": 130}}
BitsTypeResetName
31:2Reserved
1r0w1c0x0CONSISTENCY
0r0w1c0x0INTEGRITY

CHECK_TRIGGER . CONSISTENCY

Writing 1 to this bit triggers a consistency check. SW should monitor STATUS.CHECK_PENDING and wait until the check has been completed. If there are any errors, those will be flagged in the STATUS and ERR_CODE registers, and via interrupts and alerts.

CHECK_TRIGGER . INTEGRITY

Writing 1 to this bit triggers an integrity check. SW should monitor STATUS.CHECK_PENDING and wait until the check has been completed. If there are any errors, those will be flagged in the STATUS and ERR_CODE registers, and via the interrupts and alerts.

CHECK_REGWEN

Register write enable for INTEGRITY_CHECK_PERIOD and CONSISTENCY_CHECK_PERIOD.

  • Offset: 0x98
  • Reset default: 0x1
  • Reset mask: 0x1

Fields

{"reg": [{"name": "CHECK_REGWEN", "bits": 1, "attr": ["rw0c"], "rotate": -90}, {"bits": 31}], "config": {"lanes": 1, "fontsize": 10, "vspace": 140}}
BitsTypeResetNameDescription
31:1Reserved
0rw0c0x1CHECK_REGWENWhen cleared to 0, INTEGRITY_CHECK_PERIOD and CONSISTENCY_CHECK_PERIOD registers cannot be written anymore. Write 0 to clear this bit.

CHECK_TIMEOUT

Timeout value for the integrity and consistency checks.

  • Offset: 0x9c
  • Reset default: 0x0
  • Reset mask: 0xffffffff
  • Register enable: CHECK_REGWEN

Fields

{"reg": [{"name": "CHECK_TIMEOUT", "bits": 32, "attr": ["rw"], "rotate": 0}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetName
31:0rw0x0CHECK_TIMEOUT

CHECK_TIMEOUT . CHECK_TIMEOUT

Timeout value in cycles for the for the integrity and consistency checks. If an integrity or consistency check does not complete within the timeout window, an error will be flagged in the STATUS register, an otp_error interrupt will be raised, and an fatal_check_error alert will be sent out. The timeout should be set to a large value to stay on the safe side. The maximum check time can be upper bounded by the number of cycles it takes to readout, scramble and digest the entire OTP array. Since this amounts to roughly 25k cycles, it is recommended to set this value to at least 100’000 cycles in order to stay on the safe side. A value of zero disables the timeout mechanism (default).

INTEGRITY_CHECK_PERIOD

This value specifies the maximum period that can be generated pseudo-randomly. Only applies to the HW_CFG* and SECRET* partitions once they are locked.

  • Offset: 0xa0
  • Reset default: 0x0
  • Reset mask: 0xffffffff
  • Register enable: CHECK_REGWEN

Fields

{"reg": [{"name": "INTEGRITY_CHECK_PERIOD", "bits": 32, "attr": ["rw"], "rotate": 0}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetName
31:0rw0x0INTEGRITY_CHECK_PERIOD

INTEGRITY_CHECK_PERIOD . INTEGRITY_CHECK_PERIOD

The pseudo-random period is generated using a 40bit LFSR internally, and this register defines the bit mask to be applied to the LFSR output in order to limit its range. The value of this register is left shifted by 8bits and the lower bits are set to 8’hFF in order to form the 40bit mask. A recommended value is 0x3_FFFF, corresponding to a maximum period of ~2.8s at 24MHz. A value of zero disables the timer (default). Note that a one-off check can always be triggered via CHECK_TRIGGER.INTEGRITY.

CONSISTENCY_CHECK_PERIOD

This value specifies the maximum period that can be generated pseudo-randomly. This applies to the LIFE_CYCLE partition and the HW_CFG* and SECRET* partitions once they are locked.

  • Offset: 0xa4
  • Reset default: 0x0
  • Reset mask: 0xffffffff
  • Register enable: CHECK_REGWEN

Fields

{"reg": [{"name": "CONSISTENCY_CHECK_PERIOD", "bits": 32, "attr": ["rw"], "rotate": 0}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetName
31:0rw0x0CONSISTENCY_CHECK_PERIOD

CONSISTENCY_CHECK_PERIOD . CONSISTENCY_CHECK_PERIOD

The pseudo-random period is generated using a 40bit LFSR internally, and this register defines the bit mask to be applied to the LFSR output in order to limit its range. The value of this register is left shifted by 8bits and the lower bits are set to 8’hFF in order to form the 40bit mask. A recommended value is 0x3FF_FFFF, corresponding to a maximum period of ~716s at 24MHz. A value of zero disables the timer (default). Note that a one-off check can always be triggered via CHECK_TRIGGER.CONSISTENCY.

VENDOR_TEST_READ_LOCK

Runtime read lock for the VENDOR_TEST partition.

Fields

{"reg": [{"name": "VENDOR_TEST_READ_LOCK", "bits": 1, "attr": ["rw0c"], "rotate": -90}, {"bits": 31}], "config": {"lanes": 1, "fontsize": 10, "vspace": 230}}
BitsTypeResetNameDescription
31:1Reserved
0rw0c0x1VENDOR_TEST_READ_LOCKWhen cleared to 0, read access to the VENDOR_TEST partition is locked. Write 0 to clear this bit.

CREATOR_SW_CFG_READ_LOCK

Runtime read lock for the CREATOR_SW_CFG partition.

Fields

{"reg": [{"name": "CREATOR_SW_CFG_READ_LOCK", "bits": 1, "attr": ["rw0c"], "rotate": -90}, {"bits": 31}], "config": {"lanes": 1, "fontsize": 10, "vspace": 260}}
BitsTypeResetNameDescription
31:1Reserved
0rw0c0x1CREATOR_SW_CFG_READ_LOCKWhen cleared to 0, read access to the CREATOR_SW_CFG partition is locked. Write 0 to clear this bit.

OWNER_SW_CFG_READ_LOCK

Runtime read lock for the OWNER_SW_CFG partition.

Fields

{"reg": [{"name": "OWNER_SW_CFG_READ_LOCK", "bits": 1, "attr": ["rw0c"], "rotate": -90}, {"bits": 31}], "config": {"lanes": 1, "fontsize": 10, "vspace": 240}}
BitsTypeResetNameDescription
31:1Reserved
0rw0c0x1OWNER_SW_CFG_READ_LOCKWhen cleared to 0, read access to the OWNER_SW_CFG partition is locked. Write 0 to clear this bit.

OWNERSHIP_SLOT_STATE_READ_LOCK

Runtime read lock for the OWNERSHIP_SLOT_STATE partition.

Fields

{"reg": [{"name": "OWNERSHIP_SLOT_STATE_READ_LOCK", "bits": 1, "attr": ["rw0c"], "rotate": -90}, {"bits": 31}], "config": {"lanes": 1, "fontsize": 10, "vspace": 320}}
BitsTypeResetNameDescription
31:1Reserved
0rw0c0x1OWNERSHIP_SLOT_STATE_READ_LOCKWhen cleared to 0, read access to the OWNERSHIP_SLOT_STATE partition is locked. Write 0 to clear this bit.

ROT_CREATOR_AUTH_READ_LOCK

Runtime read lock for the ROT_CREATOR_AUTH partition.

Fields

{"reg": [{"name": "ROT_CREATOR_AUTH_READ_LOCK", "bits": 1, "attr": ["rw0c"], "rotate": -90}, {"bits": 31}], "config": {"lanes": 1, "fontsize": 10, "vspace": 280}}
BitsTypeResetNameDescription
31:1Reserved
0rw0c0x1ROT_CREATOR_AUTH_READ_LOCKWhen cleared to 0, read access to the ROT_CREATOR_AUTH partition is locked. Write 0 to clear this bit.

ROT_OWNER_AUTH_SLOT0_READ_LOCK

Runtime read lock for the ROT_OWNER_AUTH_SLOT0 partition.

Fields

{"reg": [{"name": "ROT_OWNER_AUTH_SLOT0_READ_LOCK", "bits": 1, "attr": ["rw0c"], "rotate": -90}, {"bits": 31}], "config": {"lanes": 1, "fontsize": 10, "vspace": 320}}
BitsTypeResetNameDescription
31:1Reserved
0rw0c0x1ROT_OWNER_AUTH_SLOT0_READ_LOCKWhen cleared to 0, read access to the ROT_OWNER_AUTH_SLOT0 partition is locked. Write 0 to clear this bit.

ROT_OWNER_AUTH_SLOT1_READ_LOCK

Runtime read lock for the ROT_OWNER_AUTH_SLOT1 partition.

Fields

{"reg": [{"name": "ROT_OWNER_AUTH_SLOT1_READ_LOCK", "bits": 1, "attr": ["rw0c"], "rotate": -90}, {"bits": 31}], "config": {"lanes": 1, "fontsize": 10, "vspace": 320}}
BitsTypeResetNameDescription
31:1Reserved
0rw0c0x1ROT_OWNER_AUTH_SLOT1_READ_LOCKWhen cleared to 0, read access to the ROT_OWNER_AUTH_SLOT1 partition is locked. Write 0 to clear this bit.

PLAT_INTEG_AUTH_SLOT0_READ_LOCK

Runtime read lock for the PLAT_INTEG_AUTH_SLOT0 partition.

Fields

{"reg": [{"name": "PLAT_INTEG_AUTH_SLOT0_READ_LOCK", "bits": 1, "attr": ["rw0c"], "rotate": -90}, {"bits": 31}], "config": {"lanes": 1, "fontsize": 10, "vspace": 330}}
BitsTypeResetNameDescription
31:1Reserved
0rw0c0x1PLAT_INTEG_AUTH_SLOT0_READ_LOCKWhen cleared to 0, read access to the PLAT_INTEG_AUTH_SLOT0 partition is locked. Write 0 to clear this bit.

PLAT_INTEG_AUTH_SLOT1_READ_LOCK

Runtime read lock for the PLAT_INTEG_AUTH_SLOT1 partition.

Fields

{"reg": [{"name": "PLAT_INTEG_AUTH_SLOT1_READ_LOCK", "bits": 1, "attr": ["rw0c"], "rotate": -90}, {"bits": 31}], "config": {"lanes": 1, "fontsize": 10, "vspace": 330}}
BitsTypeResetNameDescription
31:1Reserved
0rw0c0x1PLAT_INTEG_AUTH_SLOT1_READ_LOCKWhen cleared to 0, read access to the PLAT_INTEG_AUTH_SLOT1 partition is locked. Write 0 to clear this bit.

PLAT_OWNER_AUTH_SLOT0_READ_LOCK

Runtime read lock for the PLAT_OWNER_AUTH_SLOT0 partition.

Fields

{"reg": [{"name": "PLAT_OWNER_AUTH_SLOT0_READ_LOCK", "bits": 1, "attr": ["rw0c"], "rotate": -90}, {"bits": 31}], "config": {"lanes": 1, "fontsize": 10, "vspace": 330}}
BitsTypeResetNameDescription
31:1Reserved
0rw0c0x1PLAT_OWNER_AUTH_SLOT0_READ_LOCKWhen cleared to 0, read access to the PLAT_OWNER_AUTH_SLOT0 partition is locked. Write 0 to clear this bit.

PLAT_OWNER_AUTH_SLOT1_READ_LOCK

Runtime read lock for the PLAT_OWNER_AUTH_SLOT1 partition.

Fields

{"reg": [{"name": "PLAT_OWNER_AUTH_SLOT1_READ_LOCK", "bits": 1, "attr": ["rw0c"], "rotate": -90}, {"bits": 31}], "config": {"lanes": 1, "fontsize": 10, "vspace": 330}}
BitsTypeResetNameDescription
31:1Reserved
0rw0c0x1PLAT_OWNER_AUTH_SLOT1_READ_LOCKWhen cleared to 0, read access to the PLAT_OWNER_AUTH_SLOT1 partition is locked. Write 0 to clear this bit.

PLAT_OWNER_AUTH_SLOT2_READ_LOCK

Runtime read lock for the PLAT_OWNER_AUTH_SLOT2 partition.

Fields

{"reg": [{"name": "PLAT_OWNER_AUTH_SLOT2_READ_LOCK", "bits": 1, "attr": ["rw0c"], "rotate": -90}, {"bits": 31}], "config": {"lanes": 1, "fontsize": 10, "vspace": 330}}
BitsTypeResetNameDescription
31:1Reserved
0rw0c0x1PLAT_OWNER_AUTH_SLOT2_READ_LOCKWhen cleared to 0, read access to the PLAT_OWNER_AUTH_SLOT2 partition is locked. Write 0 to clear this bit.

PLAT_OWNER_AUTH_SLOT3_READ_LOCK

Runtime read lock for the PLAT_OWNER_AUTH_SLOT3 partition.

Fields

{"reg": [{"name": "PLAT_OWNER_AUTH_SLOT3_READ_LOCK", "bits": 1, "attr": ["rw0c"], "rotate": -90}, {"bits": 31}], "config": {"lanes": 1, "fontsize": 10, "vspace": 330}}
BitsTypeResetNameDescription
31:1Reserved
0rw0c0x1PLAT_OWNER_AUTH_SLOT3_READ_LOCKWhen cleared to 0, read access to the PLAT_OWNER_AUTH_SLOT3 partition is locked. Write 0 to clear this bit.

EXT_NVM_READ_LOCK

Runtime read lock for the EXT_NVM partition.

Fields

{"reg": [{"name": "EXT_NVM_READ_LOCK", "bits": 1, "attr": ["rw0c"], "rotate": -90}, {"bits": 31}], "config": {"lanes": 1, "fontsize": 10, "vspace": 190}}
BitsTypeResetNameDescription
31:1Reserved
0rw0c0x1EXT_NVM_READ_LOCKWhen cleared to 0, read access to the EXT_NVM partition is locked. Write 0 to clear this bit.

ROM_PATCH_READ_LOCK

Runtime read lock for the ROM_PATCH partition.

Fields

{"reg": [{"name": "ROM_PATCH_READ_LOCK", "bits": 1, "attr": ["rw0c"], "rotate": -90}, {"bits": 31}], "config": {"lanes": 1, "fontsize": 10, "vspace": 210}}
BitsTypeResetNameDescription
31:1Reserved
0rw0c0x1ROM_PATCH_READ_LOCKWhen cleared to 0, read access to the ROM_PATCH partition is locked. Write 0 to clear this bit.

VENDOR_TEST_DIGEST

Integrity digest for the VENDOR_TEST partition. The integrity digest is 0 by default. Software must write this digest value via the direct access interface in order to lock the partition. After a reset, write access to the VENDOR_TEST partition is locked and the digest becomes visible in this CSR.

  • Reset default: 0x0
  • Reset mask: 0xffffffff

Instances

NameOffset
VENDOR_TEST_DIGEST_00xe4
VENDOR_TEST_DIGEST_10xe8

Fields

{"reg": [{"name": "VENDOR_TEST_DIGEST", "bits": 32, "attr": ["ro"], "rotate": 0}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:0ro0x0VENDOR_TEST_DIGEST

CREATOR_SW_CFG_DIGEST

Integrity digest for the CREATOR_SW_CFG partition. The integrity digest is 0 by default. Software must write this digest value via the direct access interface in order to lock the partition. After a reset, write access to the CREATOR_SW_CFG partition is locked and the digest becomes visible in this CSR.

  • Reset default: 0x0
  • Reset mask: 0xffffffff

Instances

NameOffset
CREATOR_SW_CFG_DIGEST_00xec
CREATOR_SW_CFG_DIGEST_10xf0

Fields

{"reg": [{"name": "CREATOR_SW_CFG_DIGEST", "bits": 32, "attr": ["ro"], "rotate": 0}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:0ro0x0CREATOR_SW_CFG_DIGEST

OWNER_SW_CFG_DIGEST

Integrity digest for the OWNER_SW_CFG partition. The integrity digest is 0 by default. Software must write this digest value via the direct access interface in order to lock the partition. After a reset, write access to the OWNER_SW_CFG partition is locked and the digest becomes visible in this CSR.

  • Reset default: 0x0
  • Reset mask: 0xffffffff

Instances

NameOffset
OWNER_SW_CFG_DIGEST_00xf4
OWNER_SW_CFG_DIGEST_10xf8

Fields

{"reg": [{"name": "OWNER_SW_CFG_DIGEST", "bits": 32, "attr": ["ro"], "rotate": 0}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:0ro0x0OWNER_SW_CFG_DIGEST

ROT_CREATOR_AUTH_DIGEST

Integrity digest for the ROT_CREATOR_AUTH partition. The integrity digest is 0 by default. Software must write this digest value via the direct access interface in order to lock the partition. After a reset, write access to the ROT_CREATOR_AUTH partition is locked and the digest becomes visible in this CSR.

  • Reset default: 0x0
  • Reset mask: 0xffffffff

Instances

NameOffset
ROT_CREATOR_AUTH_DIGEST_00xfc
ROT_CREATOR_AUTH_DIGEST_10x100

Fields

{"reg": [{"name": "ROT_CREATOR_AUTH_DIGEST", "bits": 32, "attr": ["ro"], "rotate": 0}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:0ro0x0ROT_CREATOR_AUTH_DIGEST

ROT_OWNER_AUTH_SLOT0_DIGEST

Integrity digest for the ROT_OWNER_AUTH_SLOT0 partition. The integrity digest is 0 by default. Software must write this digest value via the direct access interface in order to lock the partition. After a reset, write access to the ROT_OWNER_AUTH_SLOT0 partition is locked and the digest becomes visible in this CSR.

  • Reset default: 0x0
  • Reset mask: 0xffffffff

Instances

NameOffset
ROT_OWNER_AUTH_SLOT0_DIGEST_00x104
ROT_OWNER_AUTH_SLOT0_DIGEST_10x108

Fields

{"reg": [{"name": "ROT_OWNER_AUTH_SLOT0_DIGEST", "bits": 32, "attr": ["ro"], "rotate": 0}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:0ro0x0ROT_OWNER_AUTH_SLOT0_DIGEST

ROT_OWNER_AUTH_SLOT1_DIGEST

Integrity digest for the ROT_OWNER_AUTH_SLOT1 partition. The integrity digest is 0 by default. Software must write this digest value via the direct access interface in order to lock the partition. After a reset, write access to the ROT_OWNER_AUTH_SLOT1 partition is locked and the digest becomes visible in this CSR.

  • Reset default: 0x0
  • Reset mask: 0xffffffff

Instances

NameOffset
ROT_OWNER_AUTH_SLOT1_DIGEST_00x10c
ROT_OWNER_AUTH_SLOT1_DIGEST_10x110

Fields

{"reg": [{"name": "ROT_OWNER_AUTH_SLOT1_DIGEST", "bits": 32, "attr": ["ro"], "rotate": 0}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:0ro0x0ROT_OWNER_AUTH_SLOT1_DIGEST

PLAT_INTEG_AUTH_SLOT0_DIGEST

Integrity digest for the PLAT_INTEG_AUTH_SLOT0 partition. The integrity digest is 0 by default. Software must write this digest value via the direct access interface in order to lock the partition. After a reset, write access to the PLAT_INTEG_AUTH_SLOT0 partition is locked and the digest becomes visible in this CSR.

  • Reset default: 0x0
  • Reset mask: 0xffffffff

Instances

NameOffset
PLAT_INTEG_AUTH_SLOT0_DIGEST_00x114
PLAT_INTEG_AUTH_SLOT0_DIGEST_10x118

Fields

{"reg": [{"name": "PLAT_INTEG_AUTH_SLOT0_DIGEST", "bits": 32, "attr": ["ro"], "rotate": 0}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:0ro0x0PLAT_INTEG_AUTH_SLOT0_DIGEST

PLAT_INTEG_AUTH_SLOT1_DIGEST

Integrity digest for the PLAT_INTEG_AUTH_SLOT1 partition. The integrity digest is 0 by default. Software must write this digest value via the direct access interface in order to lock the partition. After a reset, write access to the PLAT_INTEG_AUTH_SLOT1 partition is locked and the digest becomes visible in this CSR.

  • Reset default: 0x0
  • Reset mask: 0xffffffff

Instances

NameOffset
PLAT_INTEG_AUTH_SLOT1_DIGEST_00x11c
PLAT_INTEG_AUTH_SLOT1_DIGEST_10x120

Fields

{"reg": [{"name": "PLAT_INTEG_AUTH_SLOT1_DIGEST", "bits": 32, "attr": ["ro"], "rotate": 0}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:0ro0x0PLAT_INTEG_AUTH_SLOT1_DIGEST

PLAT_OWNER_AUTH_SLOT0_DIGEST

Integrity digest for the PLAT_OWNER_AUTH_SLOT0 partition. The integrity digest is 0 by default. Software must write this digest value via the direct access interface in order to lock the partition. After a reset, write access to the PLAT_OWNER_AUTH_SLOT0 partition is locked and the digest becomes visible in this CSR.

  • Reset default: 0x0
  • Reset mask: 0xffffffff

Instances

NameOffset
PLAT_OWNER_AUTH_SLOT0_DIGEST_00x124
PLAT_OWNER_AUTH_SLOT0_DIGEST_10x128

Fields

{"reg": [{"name": "PLAT_OWNER_AUTH_SLOT0_DIGEST", "bits": 32, "attr": ["ro"], "rotate": 0}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:0ro0x0PLAT_OWNER_AUTH_SLOT0_DIGEST

PLAT_OWNER_AUTH_SLOT1_DIGEST

Integrity digest for the PLAT_OWNER_AUTH_SLOT1 partition. The integrity digest is 0 by default. Software must write this digest value via the direct access interface in order to lock the partition. After a reset, write access to the PLAT_OWNER_AUTH_SLOT1 partition is locked and the digest becomes visible in this CSR.

  • Reset default: 0x0
  • Reset mask: 0xffffffff

Instances

NameOffset
PLAT_OWNER_AUTH_SLOT1_DIGEST_00x12c
PLAT_OWNER_AUTH_SLOT1_DIGEST_10x130

Fields

{"reg": [{"name": "PLAT_OWNER_AUTH_SLOT1_DIGEST", "bits": 32, "attr": ["ro"], "rotate": 0}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:0ro0x0PLAT_OWNER_AUTH_SLOT1_DIGEST

PLAT_OWNER_AUTH_SLOT2_DIGEST

Integrity digest for the PLAT_OWNER_AUTH_SLOT2 partition. The integrity digest is 0 by default. Software must write this digest value via the direct access interface in order to lock the partition. After a reset, write access to the PLAT_OWNER_AUTH_SLOT2 partition is locked and the digest becomes visible in this CSR.

  • Reset default: 0x0
  • Reset mask: 0xffffffff

Instances

NameOffset
PLAT_OWNER_AUTH_SLOT2_DIGEST_00x134
PLAT_OWNER_AUTH_SLOT2_DIGEST_10x138

Fields

{"reg": [{"name": "PLAT_OWNER_AUTH_SLOT2_DIGEST", "bits": 32, "attr": ["ro"], "rotate": 0}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:0ro0x0PLAT_OWNER_AUTH_SLOT2_DIGEST

PLAT_OWNER_AUTH_SLOT3_DIGEST

Integrity digest for the PLAT_OWNER_AUTH_SLOT3 partition. The integrity digest is 0 by default. Software must write this digest value via the direct access interface in order to lock the partition. After a reset, write access to the PLAT_OWNER_AUTH_SLOT3 partition is locked and the digest becomes visible in this CSR.

  • Reset default: 0x0
  • Reset mask: 0xffffffff

Instances

NameOffset
PLAT_OWNER_AUTH_SLOT3_DIGEST_00x13c
PLAT_OWNER_AUTH_SLOT3_DIGEST_10x140

Fields

{"reg": [{"name": "PLAT_OWNER_AUTH_SLOT3_DIGEST", "bits": 32, "attr": ["ro"], "rotate": 0}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:0ro0x0PLAT_OWNER_AUTH_SLOT3_DIGEST

ROM_PATCH_DIGEST

Integrity digest for the ROM_PATCH partition. The integrity digest is 0 by default. Software must write this digest value via the direct access interface in order to lock the partition. After a reset, write access to the ROM_PATCH partition is locked and the digest becomes visible in this CSR.

  • Reset default: 0x0
  • Reset mask: 0xffffffff

Instances

NameOffset
ROM_PATCH_DIGEST_00x144
ROM_PATCH_DIGEST_10x148

Fields

{"reg": [{"name": "ROM_PATCH_DIGEST", "bits": 32, "attr": ["ro"], "rotate": 0}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:0ro0x0ROM_PATCH_DIGEST

HW_CFG0_DIGEST

Integrity digest for the HW_CFG0 partition. The integrity digest is 0 by default. The digest calculation can be triggered via the DIRECT_ACCESS_CMD. After a reset, the digest then becomes visible in this CSR, and the corresponding partition becomes write-locked.

  • Reset default: 0x0
  • Reset mask: 0xffffffff

Instances

NameOffset
HW_CFG0_DIGEST_00x14c
HW_CFG0_DIGEST_10x150

Fields

{"reg": [{"name": "HW_CFG0_DIGEST", "bits": 32, "attr": ["ro"], "rotate": 0}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:0ro0x0HW_CFG0_DIGEST

HW_CFG1_DIGEST

Integrity digest for the HW_CFG1 partition. The integrity digest is 0 by default. The digest calculation can be triggered via the DIRECT_ACCESS_CMD. After a reset, the digest then becomes visible in this CSR, and the corresponding partition becomes write-locked.

  • Reset default: 0x0
  • Reset mask: 0xffffffff

Instances

NameOffset
HW_CFG1_DIGEST_00x154
HW_CFG1_DIGEST_10x158

Fields

{"reg": [{"name": "HW_CFG1_DIGEST", "bits": 32, "attr": ["ro"], "rotate": 0}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:0ro0x0HW_CFG1_DIGEST

SECRET0_DIGEST

Integrity digest for the SECRET0 partition. The integrity digest is 0 by default. The digest calculation can be triggered via the DIRECT_ACCESS_CMD. After a reset, the digest then becomes visible in this CSR, and the corresponding partition becomes write-locked.

  • Reset default: 0x0
  • Reset mask: 0xffffffff

Instances

NameOffset
SECRET0_DIGEST_00x15c
SECRET0_DIGEST_10x160

Fields

{"reg": [{"name": "SECRET0_DIGEST", "bits": 32, "attr": ["ro"], "rotate": 0}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:0ro0x0SECRET0_DIGEST

SECRET1_DIGEST

Integrity digest for the SECRET1 partition. The integrity digest is 0 by default. The digest calculation can be triggered via the DIRECT_ACCESS_CMD. After a reset, the digest then becomes visible in this CSR, and the corresponding partition becomes write-locked.

  • Reset default: 0x0
  • Reset mask: 0xffffffff

Instances

NameOffset
SECRET1_DIGEST_00x164
SECRET1_DIGEST_10x168

Fields

{"reg": [{"name": "SECRET1_DIGEST", "bits": 32, "attr": ["ro"], "rotate": 0}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:0ro0x0SECRET1_DIGEST

SECRET2_DIGEST

Integrity digest for the SECRET2 partition. The integrity digest is 0 by default. The digest calculation can be triggered via the DIRECT_ACCESS_CMD. After a reset, the digest then becomes visible in this CSR, and the corresponding partition becomes write-locked.

  • Reset default: 0x0
  • Reset mask: 0xffffffff

Instances

NameOffset
SECRET2_DIGEST_00x16c
SECRET2_DIGEST_10x170

Fields

{"reg": [{"name": "SECRET2_DIGEST", "bits": 32, "attr": ["ro"], "rotate": 0}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:0ro0x0SECRET2_DIGEST

SECRET3_DIGEST

Integrity digest for the SECRET3 partition. The integrity digest is 0 by default. The digest calculation can be triggered via the DIRECT_ACCESS_CMD. After a reset, the digest then becomes visible in this CSR, and the corresponding partition becomes write-locked.

  • Reset default: 0x0
  • Reset mask: 0xffffffff

Instances

NameOffset
SECRET3_DIGEST_00x174
SECRET3_DIGEST_10x178

Fields

{"reg": [{"name": "SECRET3_DIGEST", "bits": 32, "attr": ["ro"], "rotate": 0}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:0ro0x0SECRET3_DIGEST

SW_CFG_WINDOW

Any read to this window directly maps to the corresponding offset in the creator and owner software config partitions, and triggers an OTP readout of the bytes requested. Note that the transaction will block until OTP readout has completed.

  • Word Aligned Offset Range: 0x4000to0x7ffc
  • Size (words): 4096
  • Access: ro
  • Byte writes are not supported.

Summary of the prim interface’s registers

NameOffsetLengthDescription
otp_ctrl.CSR00x04
otp_ctrl.CSR10x44
otp_ctrl.CSR20x84
otp_ctrl.CSR30xc4
otp_ctrl.CSR40x104
otp_ctrl.CSR50x144
otp_ctrl.CSR60x184
otp_ctrl.CSR70x1c4

CSR0

  • Offset: 0x0
  • Reset default: 0x0
  • Reset mask: 0x7ff3ff7

Fields

{"reg": [{"name": "field0", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "field1", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "field2", "bits": 1, "attr": ["rw"], "rotate": -90}, {"bits": 1}, {"name": "field3", "bits": 10, "attr": ["rw"], "rotate": 0}, {"bits": 2}, {"name": "field4", "bits": 11, "attr": ["rw"], "rotate": 0}, {"bits": 5}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:27Reserved
26:16rw0x0field4
15:14Reserved
13:4rw0x0field3
3Reserved
2rw0x0field2
1rw0x0field1
0rw0x0field0

CSR1

  • Offset: 0x4
  • Reset default: 0x0
  • Reset mask: 0xffffffff

Fields

{"reg": [{"name": "field0", "bits": 7, "attr": ["rw"], "rotate": 0}, {"name": "field1", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "field2", "bits": 7, "attr": ["rw"], "rotate": 0}, {"name": "field3", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "field4", "bits": 16, "attr": ["rw"], "rotate": 0}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:16rw0x0field4
15rw0x0field3
14:8rw0x0field2
7rw0x0field1
6:0rw0x0field0

CSR2

  • Offset: 0x8
  • Reset default: 0x0
  • Reset mask: 0x1

Fields

{"reg": [{"name": "field0", "bits": 1, "attr": ["rw"], "rotate": -90}, {"bits": 31}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:1Reserved
0rw0x0field0

CSR3

  • Offset: 0xc
  • Reset default: 0x0
  • Reset mask: 0x7f3ff7

Fields

{"reg": [{"name": "field0", "bits": 3, "attr": ["rw1c"], "rotate": -90}, {"bits": 1}, {"name": "field1", "bits": 10, "attr": ["rw1c"], "rotate": 0}, {"bits": 2}, {"name": "field2", "bits": 1, "attr": ["rw1c"], "rotate": -90}, {"name": "field3", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "field4", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "field5", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "field6", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "field7", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "field8", "bits": 1, "attr": ["ro"], "rotate": -90}, {"bits": 9}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:23Reserved
22ro0x0field8
21ro0x0field7
20ro0x0field6
19ro0x0field5
18ro0x0field4
17ro0x0field3
16rw1c0x0field2
15:14Reserved
13:4rw1c0x0field1
3Reserved
2:0rw1c0x0field0

CSR4

  • Offset: 0x10
  • Reset default: 0x0
  • Reset mask: 0x73ff

Fields

{"reg": [{"name": "field0", "bits": 10, "attr": ["rw"], "rotate": 0}, {"bits": 2}, {"name": "field1", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "field2", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "field3", "bits": 1, "attr": ["rw"], "rotate": -90}, {"bits": 17}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:15Reserved
14rw0x0field3
13rw0x0field2
12rw0x0field1
11:10Reserved
9:0rw0x0field0

CSR5

  • Offset: 0x14
  • Reset default: 0x0
  • Reset mask: 0xffff3fff

Fields

{"reg": [{"name": "field0", "bits": 6, "attr": ["rw"], "rotate": 0}, {"name": "field1", "bits": 2, "attr": ["rw"], "rotate": -90}, {"name": "field2", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "field3", "bits": 3, "attr": ["ro"], "rotate": -90}, {"name": "field4", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "field5", "bits": 1, "attr": ["ro"], "rotate": -90}, {"bits": 2}, {"name": "field6", "bits": 16, "attr": ["rw"], "rotate": 0}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:16rw0x0field6
15:14Reserved
13ro0x0field5
12ro0x0field4
11:9ro0x0field3
8ro0x0field2
7:6rw0x0field1
5:0rw0x0field0

CSR6

  • Offset: 0x18
  • Reset default: 0x0
  • Reset mask: 0xffff1bff

Fields

{"reg": [{"name": "field0", "bits": 10, "attr": ["rw"], "rotate": 0}, {"bits": 1}, {"name": "field1", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "field2", "bits": 1, "attr": ["rw"], "rotate": -90}, {"bits": 3}, {"name": "field3", "bits": 16, "attr": ["rw"], "rotate": 0}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:16rw0x0field3
15:13Reserved
12rw0x0field2
11rw0x0field1
10Reserved
9:0rw0x0field0

CSR7

  • Offset: 0x1c
  • Reset default: 0x0
  • Reset mask: 0xc73f

Fields

{"reg": [{"name": "field0", "bits": 6, "attr": ["ro"], "rotate": 0}, {"bits": 2}, {"name": "field1", "bits": 3, "attr": ["ro"], "rotate": -90}, {"bits": 3}, {"name": "field2", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "field3", "bits": 1, "attr": ["ro"], "rotate": -90}, {"bits": 16}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:16Reserved
15ro0x0field3
14ro0x0field2
13:11Reserved
10:8ro0x0field1
7:6Reserved
5:0ro0x0field0