Interfaces

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

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

Inter-Module Signals

Port NamePackage::StructTypeActWidthDescription
rram_macrorram_ctrl_pkg::rram_macroreq_rspreq1
otp_keyotp_ctrl_pkg::nvm_otp_keyreq_rspreq1
otp_macrootp_ctrl_macro_pkg::otp_ctrl_macroreq_rsprsp1Data interface for the OTP macro.
lc_creator_seed_sw_rw_enlc_ctrl_pkg::lc_txunircv1
lc_owner_seed_sw_rw_enlc_ctrl_pkg::lc_txunircv1
lc_iso_part_sw_rd_enlc_ctrl_pkg::lc_txunircv1
lc_iso_part_sw_wr_enlc_ctrl_pkg::lc_txunircv1
lc_seed_hw_rd_enlc_ctrl_pkg::lc_txunircv1
lc_escalate_enlc_ctrl_pkg::lc_txunircv1
rma_reqlc_ctrl_pkg::lc_txunircv1
rma_acklc_ctrl_pkg::lc_txunireq1
rma_seedlc_ctrl_pkg::lc_nvm_rma_seedunircv1
pwrmgrpwrmgr_pkg::pwr_nvmunireq1
keymgrrram_ctrl_pkg::keymgr_rramunireq1
core_tltlul_pkg::tlreq_rsprsp1
host_tltlul_pkg::tlreq_rsprsp1

Interrupts

Interrupt NameTypeDescription
wr_emptyStatusWrite FIFO empty
wr_lvlStatusWrite FIFO drained to level
rd_fullStatusRead FIFO full
rd_lvlStatusRead FIFO filled to level
op_doneEventOperation complete
corr_errEventCorrectable error encountered

Security Alerts

Alert NameDescription
recov_errRRAM recoverable errors. Fired whenever a software initiated controller operation completes with any bit set in ERR_CODE.
fatal_std_errRRAM standard fatal errors. Fired whenever any bit in STD_FAULT_STATUS is set.
fatal_errRRAM fatal errors. Fired whenever any bit in FAULT_STATUS is set, including uncorrectable ECC errors. Note that this alert is not always fatal. The underlying error bits in the FAULT_STATUS register remain set until reset, meaning the alert keeps firing. This doesn’t hold for FAULT_STATUS.PHY_RELBL_ERR. To enable firmware dealing with multi-bit ECC errors during firmware selection and verification, these error bits can be cleared. After passing this stage, it is recommended that firmware classifies the corresponding alert as fatal on the receiver end, i.e, inside the alert handler.
fatal_macro_errFatal errors triggered inside the RRAM macro, including fatal TL-UL bus integrity faults of the test interface.
recov_macro_errRecoverable errors triggered inside the RRAM macro.

Security Countermeasures

Countermeasure IDDescription
RRAM_CTRL.REG.BUS.INTEGRITYEnd-to-end bus integrity scheme. Standard integrity protection to the register file
RRAM_CTRL.HOST.BUS.INTEGRITYEnd-to-end bus integrity scheme. The integrity is added in rram_phy_rd and stored alongside the data in the read-buffer. From the read-buffer the integrity is passed through in u_tl_adapter_host to tl_host. The path from RRAM to the read-buffer is integrity protected through secondary read operation.
RRAM_CTRL.MEM.BUS.INTEGRITYEnd-to-end bus integrity scheme. Integrity is added in rram_phy_rd and stored alongside the data in the read-buffer; for reads, the TL-UL requester is expected to check this integrity. For writes, integrity is checked in rram_phy_wr; software should perform a readback to fully verify a write completed correctly.
RRAM_CTRL.MEM.ADDR_INFECTIONThe write data is XORed with its address in rram_phy_wr on every RRAM write operation. The XOR is then removed for every read operation. For host reads, the address is removed in u_tl_adapter_host. For all controller reads, the address is removed in u_rram_ctrl_rd.
RRAM_CTRL.SCRAMBLE.KEY.SIDELOADThe scrambling key is sideloaded from OTP and thus unreadable by SW.
RRAM_CTRL.LC_CTRL.INTERSIG.MUBILife cycle control signals are used to control information partition access and RRAM debug access. See the documentation on the secret information partition, isolated information partitions, and JTAG connection for more details.
RRAM_CTRL.CTRL.CONFIG.REGWENConfigurations cannot be changed when an operation is ongoing.
RRAM_CTRL.DATA_REGIONS.CONFIG.REGWENEach data region has a configurable REGWEN.
RRAM_CTRL.INFO_PAGE.CONFIG.REGWENEach info page has a configurable REGWEN.
RRAM_CTRL.MEM.CTRL.GLOBAL_ESCGlobal escalation causes memory to no longer be accessible.
RRAM_CTRL.MEM.CTRL.LOCAL_ESCA subset of fatal errors cause memory to no longer be accessible. This subset is defined in STD_FAULT_STATUS.
RRAM_CTRL.MEM_DISABLE.CONFIG.MUBISoftware control for RRAM disable is multibit. The register is DIS.
RRAM_CTRL.EXEC.CONFIG.REDUNSoftware control for RRAM enable is 32-bit constant. The register is EXEC.
RRAM_CTRL.MEM.SCRAMBLEThe RRAM supports XEX scrambling. The cipher used is PRINCE. The scrambling scheme is enabled by software, please see RRAM scrambling in documentation for more details.
RRAM_CTRL.RMA_ENTRY.MEM.SEC_WIPERMA entry wipes RRAM memory and overwrites it with random data.
RRAM_CTRL.CTRL.FSM.SPARSEThe following controller FSMs are sparesly encoded: - rram_ctrl_lcmgr (RMA + seed FSM) - rram_ctrl_otp - rram_ctrl_arb - rram_ctrl_rd/wr
RRAM_CTRL.PHY_WR.FSM.SPARSEThe rram_phy_wr FSM is sparsely encoded.
RRAM_CTRL.CTR.REDUNThe following counters are redundantly encoded: - rram_ctrl_otp - rram_ctrl_rd/wr - rram_phy_wr This includes seed count and address count used during seed reading phase, as well as word count, page count and wipe index in RMA entry phase.
RRAM_CTRL.PHY_ARBITER.CTRL.REDUNThe phy arbiters for controller/host arbitration and in the shared scrambling module are redundant. The arbiters have two instances underneath that are constantly compared to each other.
RRAM_CTRL.PHY_HOST_GRANT.CTRL.CONSISTENCYThe host grant is consistency checked. If the host is ever granted with info partition access, it is an error. If the host is ever granted while no request has been sent, it is an error.
RRAM_CTRL.PHY_RSP.CTRL.CONSISTENCYIf the host or controller ever receive an unexpected transaction done signal, it is an error.
RRAM_CTRL.PHY_RD_RSP.CTRL.INTEGRITYThe following control flow errors are detected and result in an error: - data_valid_o is set while there is no pending request (meta_fifo empty). - data_valid_o is set while a verify operation completes. - A request is sent to the RRAM while no internal request is generated. - The integrity of the response in the read-buffer does not match the integrity of the current request in the meta fifo.
RRAM_CTRL.PHY_RD_BUF.CTRL.INTEGRITYIf the verify operation does not return the same data as the original read, it is an error.
RRAM_CTRL.FIFO.CTR.REDUNThe FIFO pointers of several FIFOs are implemented with duplicate counters.
RRAM_CTRL.HOST_TL_LC_GATE.FSM.SPARSEThe control FSM inside the TL-UL gating primitive is sparsely encoded.
RRAM_CTRL.WR_TL_LC_GATE.FSM.SPARSEThe control FSM inside the TL-UL gating primitive is sparsely encoded.
RRAM_CTRL.MEM.READBACKEvery RRAM read is issued twice (a shadow read). If the two results differ, it indicates the data was manipulated during the read process (e.g. by a fault injection attack), and a fatal alert is raised.
RRAM_CTRL.MEM.INTEGRITYThe RRAM macro computes ECC for every stored word. rram_ctrl controls whether ECC is enabled per region or info page (ecc_en), and captures the location and count of correctable errors in CORR_ERR_LOC/CORR_ERR_CNT.
RRAM_CTRL.OTP.MEM.INTEGRITYEach OTP word is protected with an additional 8-bit Hamming(72,64) integrity syndrome, stored separately in the OTP integrity page, on top of the RRAM macro’s own ECC.