Registers

The RRAM controller maintains two separate access windows for the FIFOs. It is implemented this way because the access window supports transaction back-pressure should the FIFO become full (in case of write) or empty (in case of read).

Summary

NameOffsetLengthDescription
rram_ctrl.INTR_STATE0x04Interrupt State Register
rram_ctrl.INTR_ENABLE0x44Interrupt Enable Register
rram_ctrl.INTR_TEST0x84Interrupt Test Register
rram_ctrl.ALERT_TEST0xc4Alert Test Register
rram_ctrl.DIS0x104Disable RRAM functionality
rram_ctrl.EXEC0x144Controls whether RRAM can be used for code execution fetches
rram_ctrl.INIT0x184Controller init register
rram_ctrl.CTRL_REGWEN0x1c4Controls the configurability of the CONTROL register.
rram_ctrl.CONTROL0x204Control register
rram_ctrl.ADDR0x244Address for RRAM operation
rram_ctrl.REGION_CFG_REGWEN_00x284Memory region registers configuration enable.
rram_ctrl.REGION_CFG_REGWEN_10x2c4Memory region registers configuration enable.
rram_ctrl.REGION_CFG_REGWEN_20x304Memory region registers configuration enable.
rram_ctrl.REGION_CFG_REGWEN_30x344Memory region registers configuration enable.
rram_ctrl.REGION_CFG_REGWEN_40x384Memory region registers configuration enable.
rram_ctrl.REGION_CFG_REGWEN_50x3c4Memory region registers configuration enable.
rram_ctrl.REGION_CFG_REGWEN_60x404Memory region registers configuration enable.
rram_ctrl.REGION_CFG_REGWEN_70x444Memory region registers configuration enable.
rram_ctrl.REGION_CFG_REGWEN_80x484Memory region registers configuration enable.
rram_ctrl.REGION_CFG_REGWEN_90x4c4Memory region registers configuration enable.
rram_ctrl.MP_REGION_CFG_00x504Memory property configuration for data partition
rram_ctrl.MP_REGION_CFG_10x544Memory property configuration for data partition
rram_ctrl.MP_REGION_CFG_20x584Memory property configuration for data partition
rram_ctrl.MP_REGION_CFG_30x5c4Memory property configuration for data partition
rram_ctrl.MP_REGION_CFG_40x604Memory property configuration for data partition
rram_ctrl.MP_REGION_CFG_50x644Memory property configuration for data partition
rram_ctrl.MP_REGION_CFG_60x684Memory property configuration for data partition
rram_ctrl.MP_REGION_CFG_70x6c4Memory property configuration for data partition
rram_ctrl.MP_REGION_CFG_80x704Memory property configuration for data partition
rram_ctrl.MP_REGION_CFG_90x744Memory property configuration for data partition
rram_ctrl.MP_REGION_00x784Memory base and size configuration for data partition
rram_ctrl.MP_REGION_10x7c4Memory base and size configuration for data partition
rram_ctrl.MP_REGION_20x804Memory base and size configuration for data partition
rram_ctrl.MP_REGION_30x844Memory base and size configuration for data partition
rram_ctrl.MP_REGION_40x884Memory base and size configuration for data partition
rram_ctrl.MP_REGION_50x8c4Memory base and size configuration for data partition
rram_ctrl.MP_REGION_60x904Memory base and size configuration for data partition
rram_ctrl.MP_REGION_70x944Memory base and size configuration for data partition
rram_ctrl.MP_REGION_80x984Memory base and size configuration for data partition
rram_ctrl.MP_REGION_90x9c4Memory base and size configuration for data partition
rram_ctrl.DEFAULT_REGION0xa04Default region properties
rram_ctrl.INFO_REGWEN_00xa44Memory region registers configuration enable.
rram_ctrl.INFO_REGWEN_10xa84Memory region registers configuration enable.
rram_ctrl.INFO_REGWEN_20xac4Memory region registers configuration enable.
rram_ctrl.INFO_REGWEN_30xb04Memory region registers configuration enable.
rram_ctrl.INFO_REGWEN_40xb44Memory region registers configuration enable.
rram_ctrl.INFO_REGWEN_50xb84Memory region registers configuration enable.
rram_ctrl.INFO_REGWEN_60xbc4Memory region registers configuration enable.
rram_ctrl.INFO_REGWEN_70xc04Memory region registers configuration enable.
rram_ctrl.INFO_PAGE_CFG_00xc44Memory property configuration for info partition.
rram_ctrl.INFO_PAGE_CFG_10xc84Memory property configuration for info partition.
rram_ctrl.INFO_PAGE_CFG_20xcc4Memory property configuration for info partition.
rram_ctrl.INFO_PAGE_CFG_30xd04Memory property configuration for info partition.
rram_ctrl.INFO_PAGE_CFG_40xd44Memory property configuration for info partition.
rram_ctrl.INFO_PAGE_CFG_50xd84Memory property configuration for info partition.
rram_ctrl.INFO_PAGE_CFG_60xdc4Memory property configuration for info partition.
rram_ctrl.INFO_PAGE_CFG_70xe04Memory property configuration for info partition.
rram_ctrl.HW_INFO_CFG_OVERRIDE0xe44HW interface info configuration rule overrides
rram_ctrl.OP_STATUS0xe84RRAM Operation Status
rram_ctrl.STATUS0xec4RRAM Controller Status
rram_ctrl.ERR_CODE0xf04RRAM error code register.
rram_ctrl.STD_FAULT_STATUS0xf44This register tabulates standard fault status of the RRAM.
rram_ctrl.FAULT_STATUS0xf84This register tabulates customized fault status of the RRAM.
rram_ctrl.ERR_ADDR0xfc4Synchronous error address
rram_ctrl.CORR_ERR_CNT0x1004Count of correctable ECC errors
rram_ctrl.CORR_ERR_LOC0x1044Last address that was successfully corrected
rram_ctrl.PHY_STATUS0x1084RRAM Phy Status
rram_ctrl.SCRATCH0x10c4RRAM Controller Scratch
rram_ctrl.FIFO_LVL0x1104Programmable depth where FIFOs should generate interrupts
rram_ctrl.FIFO_CLR0x1144Clears RRAM controller FIFOs
rram_ctrl.CURR_FIFO_LVL0x1184Current write and read fifo level
rram_ctrl.wr_fifo0x11c4RRAM write FIFO.
rram_ctrl.rd_fifo0x1204RRAM read FIFO.

INTR_STATE

Interrupt State Register

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

Fields

{"reg": [{"name": "wr_empty", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "wr_lvl", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "rd_full", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "rd_lvl", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "op_done", "bits": 1, "attr": ["rw1c"], "rotate": -90}, {"name": "corr_err", "bits": 1, "attr": ["rw1c"], "rotate": -90}, {"bits": 26}], "config": {"lanes": 1, "fontsize": 10, "vspace": 100}}
BitsTypeResetNameDescription
31:6Reserved
5rw1c0x0corr_errCorrectable error encountered
4rw1c0x0op_doneOperation complete
3ro0x0rd_lvlRead FIFO filled to level
2ro0x0rd_fullRead FIFO full
1ro0x1wr_lvlWrite FIFO drained to level
0ro0x1wr_emptyWrite FIFO empty

INTR_ENABLE

Interrupt Enable Register

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

Fields

{"reg": [{"name": "wr_empty", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "wr_lvl", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "rd_full", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "rd_lvl", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "op_done", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "corr_err", "bits": 1, "attr": ["rw"], "rotate": -90}, {"bits": 26}], "config": {"lanes": 1, "fontsize": 10, "vspace": 100}}
BitsTypeResetNameDescription
31:6Reserved
5rw0x0corr_errEnable interrupt when INTR_STATE.corr_err is set.
4rw0x0op_doneEnable interrupt when INTR_STATE.op_done is set.
3rw0x0rd_lvlEnable interrupt when INTR_STATE.rd_lvl is set.
2rw0x0rd_fullEnable interrupt when INTR_STATE.rd_full is set.
1rw0x0wr_lvlEnable interrupt when INTR_STATE.wr_lvl is set.
0rw0x0wr_emptyEnable interrupt when INTR_STATE.wr_empty is set.

INTR_TEST

Interrupt Test Register

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

Fields

{"reg": [{"name": "wr_empty", "bits": 1, "attr": ["wo"], "rotate": -90}, {"name": "wr_lvl", "bits": 1, "attr": ["wo"], "rotate": -90}, {"name": "rd_full", "bits": 1, "attr": ["wo"], "rotate": -90}, {"name": "rd_lvl", "bits": 1, "attr": ["wo"], "rotate": -90}, {"name": "op_done", "bits": 1, "attr": ["wo"], "rotate": -90}, {"name": "corr_err", "bits": 1, "attr": ["wo"], "rotate": -90}, {"bits": 26}], "config": {"lanes": 1, "fontsize": 10, "vspace": 100}}
BitsTypeResetNameDescription
31:6Reserved
5wo0x0corr_errWrite 1 to force INTR_STATE.corr_err to 1.
4wo0x0op_doneWrite 1 to force INTR_STATE.op_done to 1.
3wo0x0rd_lvlWrite 1 to force INTR_STATE.rd_lvl to 1.
2wo0x0rd_fullWrite 1 to force INTR_STATE.rd_full to 1.
1wo0x0wr_lvlWrite 1 to force INTR_STATE.wr_lvl to 1.
0wo0x0wr_emptyWrite 1 to force INTR_STATE.wr_empty to 1.

ALERT_TEST

Alert Test Register

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

Fields

{"reg": [{"name": "recov_err", "bits": 1, "attr": ["wo"], "rotate": -90}, {"name": "fatal_std_err", "bits": 1, "attr": ["wo"], "rotate": -90}, {"name": "fatal_err", "bits": 1, "attr": ["wo"], "rotate": -90}, {"name": "fatal_macro_err", "bits": 1, "attr": ["wo"], "rotate": -90}, {"name": "recov_macro_err", "bits": 1, "attr": ["wo"], "rotate": -90}, {"bits": 27}], "config": {"lanes": 1, "fontsize": 10, "vspace": 170}}
BitsTypeResetNameDescription
31:5Reserved
4wo0x0recov_macro_errWrite 1 to trigger one alert event of this kind.
3wo0x0fatal_macro_errWrite 1 to trigger one alert event of this kind.
2wo0x0fatal_errWrite 1 to trigger one alert event of this kind.
1wo0x0fatal_std_errWrite 1 to trigger one alert event of this kind.
0wo0x0recov_errWrite 1 to trigger one alert event of this kind.

DIS

Disable RRAM functionality

  • Offset: 0x10
  • Reset default: 0x99
  • Reset mask: 0xff

Fields

{"reg": [{"name": "SW_DIS", "bits": 4, "attr": ["rw1s"], "rotate": 0}, {"name": "RELBL_ERR_FATAL", "bits": 4, "attr": ["rw1s"], "rotate": -90}, {"bits": 24}], "config": {"lanes": 1, "fontsize": 10, "vspace": 170}}
BitsTypeResetName
31:8Reserved
7:4rw1s0x9RELBL_ERR_FATAL
3:0rw1s0x9SW_DIS

DIS . RELBL_ERR_FATAL

Configuration bit for reliability error. Once this config bit is set to MuBi4True, every fault in FAULT_STATUS will disable the RRAM immediately. Otherwise FAULT_STATUS.PHY_RELBL_ERR is excluded from the local escalation, to deal with firmware selection during the boot process. Since this register is rw1s instead of rw, this configuration cannot be reverted.

DIS . SW_DIS

Disables RRAM functionality completely. This is a shortcut mechanism used by the software to completely kill RRAM in case of emergency. Since this register is rw1s instead of rw, to disable, write the value MuBi4True to the register to disable the RRAM. Once disabled, RRAM functionality cannot be re-enabled until the next reset.

EXEC

Controls whether RRAM can be used for code execution fetches

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

Fields

{"reg": [{"name": "EN", "bits": 32, "attr": ["rw"], "rotate": 0}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:0rw0x0ENA value of 0xa26a38f7 allows RRAM to be used for code execution. Any other value prevents code execution.

INIT

Controller init register

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

Fields

{"reg": [{"name": "VAL", "bits": 1, "attr": ["rw1s"], "rotate": -90}, {"bits": 31}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:1Reserved
0rw1s0x0VALInitializes the RRAM controller. During the initialization process, the RRAM controller requests the address and data scramble keys and reads out the root seeds stored in RRAM before allowing other usage of the RRAM controller.

CTRL_REGWEN

Controls the configurability of the CONTROL register. This register ensures the contents of CONTROL cannot be changed by software once a RRAM operation has begun. It unlocks whenever the existing RRAM operation completes, regardless of success or error.

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

Fields

{"reg": [{"name": "EN", "bits": 1, "attr": ["ro"], "rotate": -90}, {"bits": 31}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:1Reserved
0ro0x1ENConfiguration enable. This bit defaults to 1 and is set to 0 by hardware when RRAM operation is initiated. When the controller completes the RRAM operation, this bit is set back to 1 to allow software configuration of CONTROL.

CONTROL

Control register

  • Offset: 0x20
  • Reset default: 0x0
  • Reset mask: 0x3ff0131
  • Register enable: CTRL_REGWEN

Fields

{"reg": [{"name": "START", "bits": 1, "attr": ["rw"], "rotate": -90}, {"bits": 3}, {"name": "OP", "bits": 2, "attr": ["rw"], "rotate": 0}, {"bits": 2}, {"name": "PARTITION", "bits": 1, "attr": ["rw"], "rotate": -90}, {"bits": 7}, {"name": "NUM", "bits": 10, "attr": ["rw"], "rotate": 0}, {"bits": 6}], "config": {"lanes": 1, "fontsize": 10, "vspace": 110}}
BitsTypeResetName
31:26Reserved
25:16rw0x0NUM
15:9Reserved
8rw0x0PARTITION
7:6Reserved
5:4rw0x0OP
3:1Reserved
0rw0x0START

CONTROL . NUM

One fewer than the number of bus words the RRAM operation should read or write. For write operations, the number of bus words must be a multiple of 4. For example, to read 10 words, software should program this field with the value 9. To write 16 words, the software should program this field to 15.

CONTROL . PARTITION

When doing a read or write operation, selects either info or data partition for operation. When 0, select data partition - this is the portion of RRAM that is accessible both by the host and by the controller. When 1, select info partition - this is the portion of RRAM that is only accessible by the controller.

CONTROL . OP

RRAM operation selection

ValueNameDescription
0x0ReadRRAM Read. Read desired number of RRAM words.
0x1WriteRRAM write. Write desired number of RRAM words.
0x2RewriteThis operation reads a specific location and writes it back to the RRAM with the intention to fix errors that occurred in the RRAM over time.

Other values are reserved.

CONTROL . START

Start RRAM transaction. This bit shall only be set at the same time or after the other fields of the CONTROL register and ADDR have been programmed.

ADDR

Address for RRAM operation

  • Offset: 0x24
  • Reset default: 0x0
  • Reset mask: 0x1fffff
  • Register enable: CTRL_REGWEN

Fields

{"reg": [{"name": "START", "bits": 21, "attr": ["rw"], "rotate": 0}, {"bits": 11}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetName
31:21Reserved
20:0rw0x0START

ADDR . START

Start address of a RRAM transaction. This is a byte address relative to the RRAM only. I.e., an address of 0 will access address 0 of the requested partition.

For read operations, the RRAM controller will truncate to the closest, lower word aligned address. For example, if 0x13 is supplied, the controller will perform a read at address 0x10.

For write operations, the RRAM controller will truncate to the closest, lower RRAM-word (128b). For example, if 0x2F is supplied, the controller will perform a write at address 0x20.

REGION_CFG_REGWEN

Memory region registers configuration enable.

  • Reset default: 0x1
  • Reset mask: 0x1

Instances

NameOffset
REGION_CFG_REGWEN_00x28
REGION_CFG_REGWEN_10x2c
REGION_CFG_REGWEN_20x30
REGION_CFG_REGWEN_30x34
REGION_CFG_REGWEN_40x38
REGION_CFG_REGWEN_50x3c
REGION_CFG_REGWEN_60x40
REGION_CFG_REGWEN_70x44
REGION_CFG_REGWEN_80x48
REGION_CFG_REGWEN_90x4c

Fields

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

REGION_CFG_REGWEN . REGION

Region register write enable. Once set to 0, it can no longer be configured to 1.

ValueNameDescription
0x0Region lockedRegion can no longer be configured until next reset.
0x1Region enabledRegion can be configured.

MP_REGION_CFG

Memory property configuration for data partition

Instances

NameOffset
MP_REGION_CFG_00x50
MP_REGION_CFG_10x54
MP_REGION_CFG_20x58
MP_REGION_CFG_30x5c
MP_REGION_CFG_40x60
MP_REGION_CFG_50x64
MP_REGION_CFG_60x68
MP_REGION_CFG_70x6c
MP_REGION_CFG_80x70
MP_REGION_CFG_90x74

Fields

{"reg": [{"name": "EN", "bits": 4, "attr": ["rw"], "rotate": 0}, {"name": "RD_EN", "bits": 4, "attr": ["rw"], "rotate": 0}, {"name": "WR_EN", "bits": 4, "attr": ["rw"], "rotate": 0}, {"name": "SCRAMBLE_EN", "bits": 4, "attr": ["rw"], "rotate": -90}, {"name": "ECC_EN", "bits": 4, "attr": ["rw"], "rotate": 0}, {"bits": 12}], "config": {"lanes": 1, "fontsize": 10, "vspace": 130}}
BitsTypeResetNameDescription
31:20Reserved
19:16rw0x9ECC_ENRegion is integrity checked and reliability ECC enabled.
15:12rw0x9SCRAMBLE_ENRegion is scramble enabled.
11:8rw0x9WR_ENRegion can be written.
7:4rw0x9RD_ENRegion can be read.
3:0rw0x9ENRegion enabled, following fields apply. If region is disabled, it is not matched against any incoming transaction.

MP_REGION

Memory base and size configuration for data partition

Instances

NameOffset
MP_REGION_00x78
MP_REGION_10x7c
MP_REGION_20x80
MP_REGION_30x84
MP_REGION_40x88
MP_REGION_50x8c
MP_REGION_60x90
MP_REGION_70x94
MP_REGION_80x98
MP_REGION_90x9c

Fields

{"reg": [{"name": "BASE", "bits": 12, "attr": ["rw"], "rotate": 0}, {"name": "SIZE", "bits": 12, "attr": ["rw"], "rotate": 0}, {"bits": 8}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:24Reserved
23:12rw0x0SIZERegion size, encoded as (number of pages - 1). For example, if base is 0 and size is 0, then the region is defined by page 0. If base is 0 and size is 1, then the region is defined by pages 0 and 1.
11:0rw0x0BASERegion base page. Note the granularity is page, not byte or word.

DEFAULT_REGION

Default region properties

  • Offset: 0xa0
  • Reset default: 0x9999
  • Reset mask: 0xffff

Fields

{"reg": [{"name": "RD_EN", "bits": 4, "attr": ["rw"], "rotate": 0}, {"name": "WR_EN", "bits": 4, "attr": ["rw"], "rotate": 0}, {"name": "SCRAMBLE_EN", "bits": 4, "attr": ["rw"], "rotate": -90}, {"name": "ECC_EN", "bits": 4, "attr": ["rw"], "rotate": 0}, {"bits": 16}], "config": {"lanes": 1, "fontsize": 10, "vspace": 130}}
BitsTypeResetNameDescription
31:16Reserved
15:12rw0x9ECC_ENRegion is ECC enabled (both integrity and reliability ECC).
11:8rw0x9SCRAMBLE_ENRegion is scramble enabled.
7:4rw0x9WR_ENRegion can be written
3:0rw0x9RD_ENRegion can be read

INFO_REGWEN

Memory region registers configuration enable.

  • Reset default: 0x1
  • Reset mask: 0x1

Instances

NameOffset
INFO_REGWEN_00xa4
INFO_REGWEN_10xa8
INFO_REGWEN_20xac
INFO_REGWEN_30xb0
INFO_REGWEN_40xb4
INFO_REGWEN_50xb8
INFO_REGWEN_60xbc
INFO_REGWEN_70xc0

Fields

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

INFO_REGWEN . REGION

Info page write enable. Once set to 0, it can no longer be configured to 1.

ValueNameDescription
0x0Page lockedRegion can no longer be configured until next reset.
0x1Page enabledRegion can be configured.

INFO_PAGE_CFG

Memory property configuration for info partition. Unlike data partition, each page is individually configured.

  • Reset default: 0x99999
  • Reset mask: 0xfffff
  • Register enable: INFO_REGWEN

Instances

NameOffset
INFO_PAGE_CFG_00xc4
INFO_PAGE_CFG_10xc8
INFO_PAGE_CFG_20xcc
INFO_PAGE_CFG_30xd0
INFO_PAGE_CFG_40xd4
INFO_PAGE_CFG_50xd8
INFO_PAGE_CFG_60xdc
INFO_PAGE_CFG_70xe0

Fields

{"reg": [{"name": "EN", "bits": 4, "attr": ["rw"], "rotate": 0}, {"name": "RD_EN", "bits": 4, "attr": ["rw"], "rotate": 0}, {"name": "WR_EN", "bits": 4, "attr": ["rw"], "rotate": 0}, {"name": "SCRAMBLE_EN", "bits": 4, "attr": ["rw"], "rotate": -90}, {"name": "ECC_EN", "bits": 4, "attr": ["rw"], "rotate": 0}, {"bits": 12}], "config": {"lanes": 1, "fontsize": 10, "vspace": 130}}
BitsTypeResetNameDescription
31:20Reserved
19:16rw0x9ECC_ENRegion is ECC enabled (both integrity and reliability ECC).
15:12rw0x9SCRAMBLE_ENRegion is scramble enabled.
11:8rw0x9WR_ENRegion can be written.
7:4rw0x9RD_ENRegion can be read.
3:0rw0x9ENRegion is enabled, the following fields apply.

HW_INFO_CFG_OVERRIDE

HW interface info configuration rule overrides

  • Offset: 0xe4
  • Reset default: 0x99
  • Reset mask: 0xff

Fields

{"reg": [{"name": "SCRAMBLE_DIS", "bits": 4, "attr": ["rw"], "rotate": -90}, {"name": "ECC_DIS", "bits": 4, "attr": ["rw"], "rotate": -90}, {"bits": 24}], "config": {"lanes": 1, "fontsize": 10, "vspace": 140}}
BitsTypeResetNameDescription
31:8Reserved
7:4rw0x9ECC_DISThe hardwired hardware info configuration rules for ECC enable are logically AND’d with this field. If the hardware rules hardwires ECC to enable, we can disable via software if needed. By default this field is false.
3:0rw0x9SCRAMBLE_DISThe hardwired hardware info configuration rules for scramble enable are logically AND’d with this field. If the hardware rules hardwires scramble to enable, we can disable via software if needed. By default this field is false.

OP_STATUS

RRAM Operation Status

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

Fields

{"reg": [{"name": "done", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "err", "bits": 1, "attr": ["rw"], "rotate": -90}, {"bits": 30}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:2Reserved
1rw0x0errRRAM operation error. Set by HW, cleared by SW. See ERR_CODE for more details.
0rw0x0doneRRAM operation done. Set by HW, cleared by SW

STATUS

RRAM Controller Status

  • Offset: 0xec
  • Reset default: 0xa
  • Reset mask: 0x3f

Fields

{"reg": [{"name": "rd_full", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "rd_empty", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "wr_full", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "wr_empty", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "init_done", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "keys_valid", "bits": 1, "attr": ["ro"], "rotate": -90}, {"bits": 26}], "config": {"lanes": 1, "fontsize": 10, "vspace": 120}}
BitsTypeResetNameDescription
31:6Reserved
5ro0x0keys_validRRAM controller scrambling keys are loaded
4ro0x0init_doneRRAM controller is initilized
3ro0x1wr_emptyRRAM write FIFO empty, software must provide data
2ro0x0wr_fullRRAM write FIFO full
1ro0x1rd_emptyRRAM read FIFO empty
0ro0x0rd_fullRRAM read FIFO full, software must consume data

ERR_CODE

RRAM error code register. This register tabulates detailed error status of the RRAM. This is separate from OP_STATUS, which is used to indicate the current state of the software initiated RRAM operation.

Note, all errors in this register are considered recoverable errors, i.e., errors that could have been generated by software.

  • Offset: 0xf0
  • Reset default: 0x0
  • Reset mask: 0xf

Fields

{"reg": [{"name": "op_err", "bits": 1, "attr": ["rw1c"], "rotate": -90}, {"name": "mp_err", "bits": 1, "attr": ["rw1c"], "rotate": -90}, {"name": "rd_err", "bits": 1, "attr": ["rw1c"], "rotate": -90}, {"name": "wr_err", "bits": 1, "attr": ["rw1c"], "rotate": -90}, {"bits": 28}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:4Reserved
3rw1c0x0wr_errRRAM write has an error. This could be a write integrity error, see STD_FAULT_STATUS. This is a synchronous error.
2rw1c0x0rd_errRRAM read has an error. This could be a reliability ECC error or integrity error encountered during a software issued controller read, see STD_FAULT_STATUS. See ERR_ADDR for exact address. This is a synchronous error.
1rw1c0x0mp_errRRAM access has encountered an access permission error. Please see ERR_ADDR for exact address. This is a synchronous error.
0rw1c0x0op_errSoftware has supplied an undefined operation. See CONTROL.OP for list of valid operations.

STD_FAULT_STATUS

This register tabulates standard fault status of the RRAM.

These represent errors that occur in the standard structures of the design. For example fsm integrity, counter integrity and tlul integrity.

  • Offset: 0xf4
  • Reset default: 0x0
  • Reset mask: 0x1fff

Fields

{"reg": [{"name": "reg_intg_err", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "lcmgr_err", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "lcmgr_intg_err", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "otp_err", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "otp_intg_err", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "phy_wr_intg_err", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "phy_fifo_err", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "phy_fsm_err", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "phy_cnt_err", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "phy_arb_err", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "ctrl_fsm_err", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "ctrl_cnt_err", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "ctrl_fifo_err", "bits": 1, "attr": ["ro"], "rotate": -90}, {"bits": 19}], "config": {"lanes": 1, "fontsize": 10, "vspace": 170}}
BitsTypeResetNameDescription
31:13Reserved
12ro0x0ctrl_fifo_errRRAM controller write fifo has encountered an error.
11ro0x0ctrl_cnt_errRRAM controller read/write has encountered a count error.
10ro0x0ctrl_fsm_errAny of the arbiter or rd/wr control FSMs have encountered a sparse encoding error.
9ro0x0phy_arb_errA RRAM phy arbiter has encountered an error.
8ro0x0phy_cnt_errA RRAM phy wr/read has encountered a count error.
7ro0x0phy_fsm_errA RRAM phy fsm has encountered a sparse encoding error.
6ro0x0phy_fifo_errA RRAM phy fifo has encountered a count error.
5ro0x0phy_wr_intg_errThe RRAM phy encountered a write data transmission integrity error.
4ro0x0otp_intg_errThe otp interface has encountered a transmission integrity error. This is an integrity error on the generated integrity during an OTP read.
3ro0x0otp_errThe otp interface has encountered a fatal error. The error is either an FSM sparse encoding error or a count error.
2ro0x0lcmgr_intg_errThe life cycle management interface has encountered a transmission integrity error. This is an integrity error on the generated integrity during a life cycle management interface read.
1ro0x0lcmgr_errThe life cycle management interface has encountered a fatal error. The error is either an FSM sparse encoding error or a count error.
0ro0x0reg_intg_errThe RRAM controller encountered a register integrity error.

FAULT_STATUS

This register tabulates customized fault status of the RRAM.

These are errors that are impossible to have been caused by software or unrecoverable in nature.

All errors except for multi-bit ECC errors (FAULT_STATUS.PHY_RELBL_ERR). Once set, they remain set until reset.

  • Offset: 0xf8
  • Reset default: 0x0
  • Reset mask: 0x3fff

Fields

{"reg": [{"name": "lcmgr_op_err", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "lcmgr_mp_err", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "lcmgr_rd_err", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "lcmgr_wr_err", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "otp_op_err", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "otp_mp_err", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "otp_rd_err", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "otp_wr_err", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "seed_err", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "phy_relbl_err", "bits": 1, "attr": ["rw0c"], "rotate": -90}, {"name": "phy_rd_intg_err", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "phy_rd_ctrl_err", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "spurious_done", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "host_gnt_err", "bits": 1, "attr": ["ro"], "rotate": -90}, {"bits": 18}], "config": {"lanes": 1, "fontsize": 10, "vspace": 170}}
BitsTypeResetName
31:14Reserved
13ro0x0host_gnt_err
12ro0x0spurious_done
11ro0x0phy_rd_ctrl_err
10ro0x0phy_rd_intg_err
9rw0c0x0phy_relbl_err
8ro0x0seed_err
7ro0x0otp_wr_err
6ro0x0otp_rd_err
5ro0x0otp_mp_err
4ro0x0otp_op_err
3ro0x0lcmgr_wr_err
2ro0x0lcmgr_rd_err
1ro0x0lcmgr_mp_err
0ro0x0lcmgr_op_err

FAULT_STATUS . host_gnt_err

A host transaction was granted with illegal properties.

FAULT_STATUS . spurious_done

The RRAM emitted an unexpected acknowledgement.

FAULT_STATUS . phy_rd_ctrl_err

The RRAM phy detected one of the following errors:

  • a mismatch of command request integrity and command response integrity.
  • a spurious valid.
  • a spurious rram read request.

FAULT_STATUS . phy_rd_intg_err

The RRAM phy encountered an integrity error. The shadow response was not identical to the original response.

FAULT_STATUS . phy_relbl_err

The RRAM macro encountered a reliability ECC error that cannot be corrected.

Note that this error bit can be cleared to allow firmware dealing with multi-bit ECC errors during firmware selection and verification. 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.

FAULT_STATUS . seed_err

The seed reading process encountered an unexpected error.

FAULT_STATUS . otp_wr_err

The RRAM OTP interface encountered a write error. This could be a write integrity error, see STD_FAULT_STATUS for more details.

FAULT_STATUS . otp_rd_err

The RRAM OTP interface encountered a read error. This could be a reliability ECC error or an integrity ECC error encountered during a read, see STD_FAULT_STATUS for more details.

FAULT_STATUS . otp_mp_err

The RRAM OTP interface encountered a memory permission error.

FAULT_STATUS . otp_op_err

The RRAM OTP interface has supplied an undefined operation. See CONTROL.OP for list of valid operations.

FAULT_STATUS . lcmgr_wr_err

The RRAM life cycle management interface encountered a write error. This could be a write integrity error, see STD_FAULT_STATUS for more details.

FAULT_STATUS . lcmgr_rd_err

The RRAM life cycle management interface encountered a read error. This could be a reliability ECC error or an integrity ECC error encountered during a read, see STD_FAULT_STATUS for more details.

FAULT_STATUS . lcmgr_mp_err

The RRAM life cycle management interface encountered a memory permission error.

FAULT_STATUS . lcmgr_op_err

The RRAM life cycle management interface has supplied an undefined operation. See CONTROL.OP for list of valid operations.

ERR_ADDR

Synchronous error address

  • Offset: 0xfc
  • Reset default: 0x0
  • Reset mask: 0x1fffff

Fields

{"reg": [{"name": "ERR_ADDR", "bits": 21, "attr": ["ro"], "rotate": 0}, {"bits": 11}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:21Reserved
20:0ro0x0ERR_ADDR

CORR_ERR_CNT

Count of correctable ECC errors

  • Offset: 0x100
  • Reset default: 0x0
  • Reset mask: 0xff

Fields

{"reg": [{"name": "val", "bits": 8, "attr": ["rw"], "rotate": 0}, {"bits": 24}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:8Reserved
7:0rw0x0valThis count will not wrap when saturated

CORR_ERR_LOC

Last address that was successfully corrected

  • Offset: 0x104
  • Reset default: 0x0
  • Reset mask: 0x11fffff

Fields

{"reg": [{"name": "addr", "bits": 21, "attr": ["ro"], "rotate": 0}, {"bits": 3}, {"name": "part", "bits": 1, "attr": ["ro"], "rotate": -90}, {"bits": 7}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:25Reserved
24ro0x0partLast successfully corrected partition
23:21Reserved
20:0ro0x0addrLast successfully corrected address

PHY_STATUS

RRAM Phy Status

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

Fields

{"reg": [{"name": "wr_busy", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "init_done", "bits": 1, "attr": ["ro"], "rotate": -90}, {"bits": 30}], "config": {"lanes": 1, "fontsize": 10, "vspace": 110}}
BitsTypeResetNameDescription
31:2Reserved
1ro0x0init_doneRRAM phy is initialized (including RRAM)
0ro0x0wr_busyRRAM phy is currently writing to RRAM

SCRATCH

RRAM Controller Scratch

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

Fields

{"reg": [{"name": "data", "bits": 32, "attr": ["rw"], "rotate": 0}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:0rw0x0dataRRAM controller scratch register

FIFO_LVL

Programmable depth where FIFOs should generate interrupts

  • Offset: 0x110
  • Reset default: 0xf0f
  • Reset mask: 0x1f1f

Fields

{"reg": [{"name": "WR", "bits": 5, "attr": ["rw"], "rotate": 0}, {"bits": 3}, {"name": "RD", "bits": 5, "attr": ["rw"], "rotate": 0}, {"bits": 19}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:13Reserved
12:8rw0xfRDWhen the read FIFO fills to this level, trigger an interrupt. Default value is set such that interrupt does not trigger at reset.
7:5Reserved
4:0rw0xfWRWhen the write FIFO drains to this level, trigger an interrupt. Default value is set such that interrupt does not trigger at reset.

FIFO_CLR

Clears RRAM controller FIFOs

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

Fields

{"reg": [{"name": "WR", "bits": 1, "attr": ["wo"], "rotate": -90}, {"name": "RD", "bits": 1, "attr": ["wo"], "rotate": -90}, {"bits": 30}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:2Reserved
1wo0x0RDThis will clear the content of the controller read fifo.
0wo0x0WRThis will clear the content of the controller write fifo.

CURR_FIFO_LVL

Current write and read fifo level

  • Offset: 0x118
  • Reset default: 0x0
  • Reset mask: 0x1f1f

Fields

{"reg": [{"name": "WR", "bits": 5, "attr": ["ro"], "rotate": 0}, {"bits": 3}, {"name": "RD", "bits": 5, "attr": ["ro"], "rotate": 0}, {"bits": 19}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:13Reserved
12:8ro0x0RDCurrent read fifo level.
7:5Reserved
4:0ro0x0WRCurrent write fifo level.

wr_fifo

RRAM write FIFO.

The FIFO is 4 entries of 4B words. This FIFO can only be programmed by software after a write operation has been initiated via the CONTROL register. This ensures accidental programming of the write FIFO cannot lock up the system.

  • Word Aligned Offset Range: 0x11cto0x11c
  • Size (words): 1
  • Access: wo
  • Byte writes are not supported.

rd_fifo

RRAM read FIFO.

The FIFO is 16 entries of 4B words.

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