Interfaces

Referring to the Comportable guideline for peripheral device functionality, the module csrng has the following hardware interfaces defined

  • Primary Clock: clk_i
  • Other Clocks: none
  • Bus Device Interfaces (TL-UL): tl
  • Bus Host Interfaces (TL-UL): none
  • Peripheral Pins for Chip IO: none

Inter-Module Signals

Port NamePackage::StructTypeActWidthDescription
csrng_cmdcsrng_pkg::csrngreq_rsprsp2
entropy_src_hw_ifentropy_src_pkg::entropy_src_hw_ifreq_rspreq1
cs_aes_haltentropy_src_pkg::cs_aes_haltreq_rsprsp1Coordinate activity between CSRNG’s AES and Entropy Source’s SHA3. When CSRNG gets a request and its AES is not active, it acknowledges and until the request has dropped neither runs its AES nor drops the acknowledge.
otp_en_csrng_sw_app_readprim_mubi_pkg::mubi8unircv1
lc_hw_debug_enlc_ctrl_pkg::lc_txunircv1
tltlul_pkg::tlreq_rsprsp1

Interrupts

Interrupt NameTypeDescription
cs_cmd_req_doneEventAsserted when a command request is completed.
cs_entropy_reqEventAsserted when a request for entropy has been made.
cs_hw_inst_excEventAsserted when a hardware-attached CSRNG instance encounters a command exception
cs_fatal_errEventAsserted when a FIFO error or a fatal alert occurs. Check the ERR_CODE register to get more information.

Security Alerts

Alert NameDescription
recov_alertThis alert is triggered when a recoverable alert occurs. Check the RECOV_ALERT_STS register to get more information.
fatal_alertThis alert triggers (i) if an illegal state machine state is reached, or (ii) if an AES fatal alert condition occurs, or (iii) if a fatal integrity failure is detected on the TL-UL bus.

Security Countermeasures

Countermeasure IDDescription
CSRNG.CONFIG.REGWENRegisters are protected from writes.
CSRNG.CONFIG.MUBIRegisters have multi-bit encoded fields.
CSRNG.INTERSIG.MUBIOTP signal used to enable software access to registers.
CSRNG.MAIN_SM.FSM.SPARSEThe CSRNG main state machine uses a sparse state encoding.
CSRNG.UPDATE.FSM.SPARSEThe CSRNG update state machine uses a sparse state encoding.
CSRNG.BLK_ENC.FSM.SPARSEThe CSRNG block encrypt state machine uses a sparse state encoding.
CSRNG.OUTBLK.FSM.SPARSEThe CSRNG block output state machine uses a sparse state encoding.
CSRNG.GEN_CMD.CTR.REDUNThe generate command uses a counter that is protected by a second counter that counts in the opposite direction.
CSRNG.DRBG_UPD.CTR.REDUNThe ctr_drbg update algorthm uses a counter that is protected by a second counter that counts in the opposite direction.
CSRNG.DRBG_GEN.CTR.REDUNThe ctr_drbg generate algorthm uses a counter that is protected by a second counter that counts in the opposite direction.
CSRNG.CTRL.MUBIMulti-bit field used for selection control.
CSRNG.MAIN_SM.CTR.LOCAL_ESCA mismatch detected inside any CSRNG counter moves the main state machine into a terminal error state.
CSRNG.CONSTANTS.LC_GATEDSeed diversification based on the lifecycle state.
CSRNG.SW_GENBITS.BUS.CONSISTENCYComparison on successive bus values for genbits returned on the software channel.
CSRNG.TILE_LINK.BUS.INTEGRITYTilelink end-to-end bus integrity scheme.
CSRNG.AES_CIPHER.FSM.SPARSEThe AES cipher core FSM uses a sparse state encoding. See the AES module documentation for AES-specific countermeasures.
CSRNG.AES_CIPHER.FSM.REDUNThe AES cipher core FSM uses multiple, independent logic rails. See the AES module documentation for AES-specific countermeasures.
CSRNG.AES_CIPHER.CTRL.SPARSECritical control signals for the AES cipher core such as handshake and MUX control signals use sparse encodings. See the AES module documentation for AES-specific countermeasures.
CSRNG.AES_CIPHER.FSM.LOCAL_ESCThe AES cipher core FSM moves to a terminal error state upon local escalation. Can be triggered by AES_CIPHER.FSM.SPARSE, AES_CIPHER.FSM.REDUN, AES_CIPHER.CTR.REDUN and AES_CIPHER.CTRL.SPARSE. See the AES module documentation for AES-specific countermeasures.
CSRNG.AES_CIPHER.CTR.REDUNThe AES round counter inside the AES cipher core FSM is protected with multiple, independent logic rails. See the AES module documentation for AES-specific countermeasures.
CSRNG.AES_CIPHER.DATA_REG.LOCAL_ESCUpon local escalation, the AES cipher core doesn’t output intermediate state. See the AES module documentation for AES-specific countermeasures.

Other CSRNG signals.

SignalDirectionTypeDescription
otp_en_csrng_sw_app_read_iinput otp_en_t An efuse that will enable firmware to access the NIST CTR_DRBG internal state and genbits through registers.
lc_hw_debug_en_iinputlc_tx_t A life-cycle that will select which diversification value is used for xoring with the seed from ENTROPY_SRC.
entropy_src_hw_if_ooutputentropy_src_hw_if_req_tSeed request made to the ENTROPY_SRC module.
entropy_src_hw_if_iinputentropy_src_hw_if_rsp_tSeed response from the ENTROPY_SRC module.
cs_aes_halt_iinputcs_aes_halt_req_tRequest to CSRNG from ENTROPY_SRC to halt requests to the AES block for power leveling purposes.
cs_aes_halt_ooutputcs_aes_halt_rsp_tResponse from CSRNG to ENTROPY_SRC that all requests to AES block are halted.
csrng_cmd_iinputcsrng_req_tApplication interface request to CSRNG from an EDN block.
csrng_cmd_ooutputcsrng_rsp_tApplication interface response from CSRNG to an EDN block.