PIC32CM5112SG00064 PUF registers

The 29 registers of PUF (Physically Unclonable Function), from 0x44834000, with their reset value and every field. The PIC32CM5112SG00064 has 3618 registers in 68 peripherals, one page each.

PUF Physically Unclonable Function

CTRLAControl Register A

Address
0x44834000
Reset
0x00000000
Access
read/write
Size
32-bit
4 fields
FieldBitsWhat it does
RUNSTDBY6RUNSTDBY Enable bit - not used by EIP HWWriting this register has no affect on the EIPNote: Currently this bit is present, but has no functionality. This bit is part of the IP wrapper but has no use for the EIP.
PRIV2Privileged Access Only
  • 0 PUF registers accessible in privileged and unprivileged modes.
  • 1 PUF registers only accessible in privileged mode.
ENABLE1Clock Enable bit
  • 0 PUF clock is disabled and Macro held in reset and any access to QK register would cause PSLVERR.
  • 1 PUF clock is enabled.
SWRST0Software ResetNOTE: Reset to PUF must be held active long enough to reset complete macro.
  • 0 No effect
  • 1 Reset registers and internal state

STATUSAStatus Register A

Address
0x44834038
Reset
0x00000000
Access
read only
Size
32-bit
1 field
FieldBitsWhat it does
BUSY0PUF Busy indicator
  • 0 Macro can accept commands.
  • 1 Macro has not completed the power up or power down sequence and cannot accept any other commands.

DISABLEDisable Function Control Register

Address
0x44834100
Reset
0x00000000
Access
read/write
Size
32-bit
12 fields
FieldBitsWhat it does
TEST_MEM30TEST_MEMORY Command Disable bit
  • 0 Command is enabled.
  • 1 Command is disabled.
SKIP_MEM_TEST29SKIP_MEMORY TEST Command Control bit
  • 0 Command is enabled / Not Skipped.
  • 1 Command is disabled / Skipped during initialization
GEN_RAND15GENERATE_RANDOM Command Disable bit
  • 0 Command is enabled.
  • 1 Command is disabled.
WRAP9WRAP Command Disable bit
  • 0 Command is enabled.
  • 1 Command is disabled.
WRAP_GEN_RAND8WRAP_GENERATE_RANDOM Command Disable bit
  • 0 Command is enabled.
  • 1 Command is disabled.
UNWRAP7UNWRAP Command Disable bit
  • 0 Command is enabled.
  • 1 Command is disabled.
GET_KEY6GET_KEY Command Disable bit
  • 0 Command is enabled.
  • 1 Command is disabled.
STOP5STOP Command Disable bit
  • 0 Command is enabled.
  • 1 Command is disabled.
RECONSTRUCT3RECONSTRUCT Command Disable bit
  • 0 Command is enabled.
  • 1 Command is disabled.
START2START Command Disable bit
  • 0 Command is enabled.
  • 1 Command is disabled.
ENROLL1ENROLL Command Disable bit
  • 0 Command is enabled.
  • 1 Command is disabled.
TEST_PUF31TEST_PUF Command Disable bit
  • 0 Command is enabled.
  • 1 Command is disabled.

RESTRICT0Restrict User Context 0 Control Register

Address
0x44834104
Reset
0x00000000
Access
read/write
Size
32-bit
1 field
FieldBitsWhat it does
RESTRICT_CONTEXT_031:0Restrict User Context Writing a 1 in a bit position prevents other PUF keys to be generated with this context bit set. NOTE: Refer to the EIP datasheet for the function of the restrict_user_context signals

RESTRICT1Restrict User Context 1 Control Register

Address
0x44834108
Reset
0x00000000
Access
read/write
Size
32-bit
1 field
FieldBitsWhat it does
RESTRICT_CONTEXT_131:0Restrict User Context Writing a 1 in a bit position prevents other PUF keys to be generated with this context bit set. NOTE: Refer to the EIP datasheet for the function of the restrict_user_context signals

CTRL_PWRPower Control Register

Address
0x4483410C
Reset
0x00000000
Access
read/write
Size
32-bit
1 field
FieldBitsWhat it does
SRAM_PWRSW0SRAM Power Switch Enable Bit
  • 0 SRAM register power is disabled ( puf_req_power_sram driven to 0)
  • 1 SRAM register power is enabled ( puf_req_power_sram driven to 1)

CTRL_KEYKEY Control Register

Address
0x44834110
Reset
0x00000000
Access
read/write
Size
32-bit
1 field
FieldBitsWhat it does
CLR_PUF_KEY0Clear PUF Key Control Bit
  • 0 NO Affect
  • 1 Clears the following outputs from this macro - puf_key, puf_valid, puf_index

QK_CRControl register; The Control register defines which command must be executed next. When the command is accepted or rejected, the bits automatically revert to 0. Only one command bit may be written wi

Address
0x44834200
Reset
0x00000000
Access
read/write
Size
32-bit
12 fields
FieldBitsWhat it does
qk_test_memory30Begin Test Memory operation
qk_generate_random15Begin Generate Random operation
qk_wrap9Begin Wrap operation
qk_wrap_generated_random8Begin Wrap Generated Random operation
qk_unwrap7Begin Unwrap operation
qk_get_key6Begin Get Key operation
qk_stop5Begin Stop operation
qk_reconstruct3Begin Reconstruct operation
qk_start2Begin Start operation
qk_enroll1Begin Enroll operation
qk_zeroize0Begin Zeroize operation
qk_test_puf31Begin Test PUF operation

QK_ORROperation Result register; The Operation Result register provides the result code of the last operation (Initialization, Generate Random, etc.). The value in this register is only valid when qk_busy =

Address
0x44834204
Reset
0x00000000
Access
read only
Size
32-bit
2 fields
FieldBitsWhat it does
qk_result_code7:0Result code of last operation
  • 0
  • 240
  • 241
  • 242
  • 243
  • 244
  • 245
  • 246
  • 247
  • 248
  • 255
qk_last_operation31:24Number of last operation
  • 0
  • 1
  • 2
  • 3
  • 5
  • 6
  • 7
  • 8
  • 9
  • 15
  • 30
  • 31
  • 32
  • 47

QK_SRStatus register; The Status register shows the current status of QuiddiKey and indicates whether a data transfer is requested.

Address
0x44834208
Reset
0x00000001
Access
read/write
Size
32-bit
7 fields
FieldBitsWhat it does
qk_do_request6Request for data out transfer via the QK_DOR register
qk_di_request5Request for data in transfer via the QK_DIR register
qk_rejected4Read: Last command was rejected Write 1: Clears this bit
qk_zeroized3QuiddiKey is in Zeroized or Locked state
qk_error2Last operation failed
qk_ok1Last operation was successful
qk_busy0Operation is in progress

QK_ARAllow register; The Allow register indicates which operations are currently allowed.

Address
0x4483420C
Reset
0x00000000
Access
read only
Size
32-bit
11 fields
FieldBitsWhat it does
qk_allow_test_memory300: Test Memory operation is not allowed 1: Test Memory operation is allowed
qk_allow_generate_random150: Generate Random operation is not allowed 1: Generate Random operation is allowed
qk_allow_wrap90: Wrap operation is not allowed 1: Wrap operation is allowed
qk_allow_wrap_generated_random80: Wrap Generated Random operation is not allowed 1: Wrap Generated Random operation is allowed
qk_allow_unwrap70: Unwrap operation is not allowed 1: Unwrap operation is allowed
qk_allow_get_key60: Get Key operation is not allowed 1: Get Key operation is allowed
qk_allow_stop50: Stop operation is not allowed 1: Stop operation is allowed
qk_allow_reconstruct30: Reconstruct operation is not allowed 1: Reconstruct operation is allowed
qk_allow_start20: Start operation is not allowed 1: Start operation is allowed
qk_allow_enroll10: Enroll operation is not allowed 1: Enroll operation is allowed
qk_allow_test_puf310: Test PUF operation is not allowed 1: Test PUF operation is allowed

QK_IERInterrupt Enable register; With the Interrupt Enable register all QuiddiKey interrupts can be enabled or disabled, without changing the Interrupt Mask register.

Address
0x44834210
Reset
0x00000000
Access
read/write
Size
32-bit
1 field
FieldBitsWhat it does
qk_int_en00: Disables all QuiddiKey interrupts 1: Enables all QuiddiKey interrupts that are enabled in the Interrupt Mask register

QK_IMRInterrupt Mask register; Individual QuiddiKey interrupts can be enabled or disabled with the Interrupt Mask register.

Address
0x44834214
Reset
0x00000000
Access
read/write
Size
32-bit
7 fields
FieldBitsWhat it does
qk_int_en_do_request6Enables the data out request interrupt
qk_int_en_di_request5Enables the data in request interrupt
qk_int_en_rejected4Enables the rejected interrupt
qk_int_en_zeroized3Enables the zeroized interrupt
qk_int_en_error2Enables the error interrupt
qk_int_en_ok1Enables the ok interrupt
qk_int_en_busy0Enables the busy interrupt

QK_ISRInterrupt Status register; The Interrupt Status register indicates which interrupt has occurred. Multiple interrupts may occur at the same time (e.g. the busy interrupt occurs together with one of the

Address
0x44834218
Reset
0x00000000
Access
read/write
Size
32-bit
7 fields
FieldBitsWhat it does
qk_int_do_request6A positive edge has occurred on qk_do_request, which means that a data out transfer is requested via the QK_DOR register
qk_int_di_request5A positive edge has occurred on qk_di_request, which means that a data in transfer is requested via the QK_DIR register
qk_int_rejected4A positive edge has occurred on qk_rejected, which means that a command was rejected
qk_int_zeroized3A positive edge has occurred on qk_zeroized, which means that QuiddiKey has moved to the Zeroized or Locked state
qk_int_error2A positive edge has occurred on qk_error, which means that an operation has failed
qk_int_ok1A positive edge has occurred on qk_ok, which means that an operation successfully completed
qk_int_busy0A negative edge has occurred on qk_busy, which means that an operation has completed

QK_DATA_DESTData Destination register; The Data Destination register defines via which interface data is made available by QuiddiKey. Only one bit at a time may be 1.

Address
0x44834220
Reset
0x00000000
Access
read/write
Size
32-bit
2 fields
FieldBitsWhat it does
qk_dest_so1Data will be made available via the SO interface
qk_dest_dor0Data will be made available via the QK_DOR register

QK_DATA_SRCData Source register; The Data Source register defines via which interface data must be provided to QuiddiKey. Combinations of bits may be 1 at a time.

Address
0x44834224
Reset
0x00000000
Access
read/write
Size
32-bit
2 fields
FieldBitsWhat it does
qk_src_si1Data must be provided via the SI interface
qk_src_dir0Data must be provided via the QK_DIR register

QK_KEY_INDEXKey Index register; The Key Index register provides the index of the key that is currently output.

Address
0x44834228
Reset
0x00000000
Access
read only
Size
32-bit
1 field
FieldBitsWhat it does
qk_key_inde3:0Value of the Key Index

QK_DIRData Input register; The Data Input register is used to transfer data to QuiddiKey. It can only be written when input data is requested (indicated by the qk_di_request signal). When written at any oth

Address
0x448342A0
Reset
0x00000000
Access
write only
Size
32-bit
1 field
FieldBitsWhat it does
qk_di31:0Input data to QuiddiKey

QK_DORData Output register; The Data Output register is used to transfer data from QuiddiKey. It can only be read when input data is available (indicated by the qk_do_request signal). When read at any other

Address
0x448342A8
Reset
0x00000000
Access
read only
Size
32-bit
1 field
FieldBitsWhat it does
qk_do31:0Output data from QuiddiKey

QK_MISCMiscellaneous register; The Miscellaneous register defines miscellaneous settings for QuiddiKey. These usually need to be configured only once after power up orreset.

Address
0x448342C0
Reset
0x00000001
Access
read/write
Size
32-bit
1 field
FieldBitsWhat it does
qk_data_endianness0Defines the endianness of data in QK_DIR and QK_DOR: 0: Little endian 1: Big endian (default)

QK_IF_SRInterface Status register; The status of the interface can be monitored with the Interface Status register. Writing 1 to a bit, clears the corresponding bit.

Address
0x448342D0
Reset
0x00000000
Access
read/write
Size
32-bit
1 field
FieldBitsWhat it does
reg_if_error0An error has occurred at the register interface

QK_TESTTest register; With the Test register a BIST can be started. It also shows the result of the last BIST.

Address
0x448342D8
Reset
0x00000000
Access
read/write
Size
32-bit
6 fields
FieldBitsWhat it does
qk_bist_error7BIST has failed
qk_bist_ok6BIST has passed
qk_bist_active5BIST is in progress
qk_bist_running4BIST is in progress or finishing up (after qk_bist_enable = 0)
qk_bist_enable0Isolates QuiddiKey and runs BIST
qk_allow_bist31BIST is not allowed

QK_PSRPUF Score register; The PUF Score register shows the value of the PUF Score that was obtained during the last Test PUF, Enroll, Start or Reconstruct operation.

Address
0x448342DC
Reset
0x0000000F
Access
read only
Size
32-bit
1 field
FieldBitsWhat it does
qk_puf_score3:0PUF score obtained during the last Test PUF, Enroll, Start or Reconstruct operation

QK_HW_RUC0Module Restrict User Context 0 register; The Module Restrict User Context 0 register shows the values of the qk_restrict_user_context_0 signal on the signal interface.

Address
0x448342E0
Reset
0x00000000
Access
read only
Size
32-bit
1 field
FieldBitsWhat it does
qk_restrict_user_context_031:0For each bit in the User_Context_0 field: 0: This bit can be used 1: This bit cannot be used

QK_HW_RUC1Module Restrict User Context 1 register; The Module Restrict User Context 1 register shows the values of the qk_restrict_user_context_1 signal on the signal interface.

Address
0x448342E4
Reset
0x00000000
Access
read only
Size
32-bit
1 field
FieldBitsWhat it does
qk_restrict_user_context_131:0For each bit in the User_Context_1 field: 0: This bit can be used 1: This bit cannot be used

QK_HW_SETTINGSModule Settings register; The Module Settings register shows the values of the module settings on the signal interface.

Address
0x448342F0
Reset
0x00000000
Access
read only
Size
32-bit
12 fields
FieldBitsWhat it does
qk_disable_test_memory300: Test Memory operations are enabled 1: Test Memory operations are disabled
qk_skip_memory_test290: Includes memory test during initialization 1: Skips memory test during initialization
qk_disable_generate_random150: Generate Random operations are enabled 1: Generate Random operations are disabled
qk_disable_wrap90: Wrap operations are enabled 1: Wrap operations are disabled
qk_disable_wrap_generated_random80: Wrap Generated Random operations are enabled 1: Wrap Generated Random operations are disabled
qk_disable_unwrap70: Unwrap operations are enabled 1: Unwrap operations are disabled
qk_disable_get_key60: Get Key operations are enabled 1: Get Key operations are disabled
qk_disable_stop50: Stop operations are enabled 1: Stop operations are disabled
qk_disable_reconstruct30: Reconstruct operations are enabled 1: Reconstruct operations are disabled
qk_disable_start20: Start operations are enabled 1: Start operations are disabled
qk_disable_enroll10: Enroll operations are enabled 1: Enroll operations are disabled
qk_disable_test_puf310: Test PUF operations are enabled 1: Test PUF operations are disabled

QK_HW_INFOModule Information register; The Module Information register indicates which configuration of QuiddiKey is used for this module and which options it includes.

Address
0x448342F4
Reset
0x21400000
Access
read only
Size
32-bit
5 fields
FieldBitsWhat it does
qk_config_wrap241: Wrap is included 0: Wrap is not included
Reserved23Safe: 1 Plus: 0
qk_config_bist221: BIST is included 0: BIST is not included
qk_config_sp_800_90211: SP 800-90 option is included 0: SP 800-90 option is not included
qk_config_type31:28QuiddiKey configuration
  • 1
  • 2

QK_HW_IDModule Identifier register; The Module Identifier register provides the identifier of the QuiddiKey Engine netlist.

Address
0x448342F8
Reset
0x20120702
Access
read only
Size
32-bit
1 field
FieldBitsWhat it does
qk_hw_id31:0Module identifier

QK_HW_VERModule Version register; The Module Version register provides the version of this module: major.minor.patch.

Address
0x448342FC
Reset
0x00030701
Access
read only
Size
32-bit
3 fields
FieldBitsWhat it does
qk_hw_version_major23:16Module version, major part
qk_hw_version_minor15:8Module version, minor part
qk_hw_rev7:0Module version, patch part