Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
aa0e546
[earlgrey_top,rtl] add rram_ctrl+rram_macro
gautschimi Feb 25, 2026
d46f3f7
[rram_ctrl,top] Autogen changes for RRAM integration
gautschimi Jun 18, 2026
111a060
[rram_ctrl,sec] Align countermeasures
gautschimi May 8, 2026
4c862ee
[earlgrey,rtl] route rram_test_analog to top
gautschimi Jul 29, 2026
a0dafca
[bkdr_loader,rram] support RRAM in backdoor loader
gautschimi Jul 23, 2026
45a6276
[rram_ctrl,utils] extend utils to generate rram image
gautschimi Mar 11, 2026
73cc5a5
[rram_ctrl,bzl] extend bazel rules to generate rram-image
gautschimi Mar 11, 2026
92c3703
[top,rtl] connect rram_ctrl to keymgr
gautschimi Jun 18, 2026
d8d494b
[top,rtl] autogen for rram_ctrl to keymgr
gautschimi Jun 18, 2026
bbed008
[top,sim,verilator] RRAM verilator support
gautschimi May 27, 2026
47a520e
[rom_ext,sw] rename section rom_ext_flash to rom_ext_nvm
gautschimi May 28, 2026
93085fe
[top,rtl] Connect rram_ctrl to otp_ctrl
gautschimi Jun 18, 2026
19105ab
[top,rtl] Autogen files for rram_ctrl to otp_ctrl
gautschimi Jun 18, 2026
f747d00
[CI,rram_ctrl,flash_ctrl] Disable chip_sw_flash_scrambling_smoketest
gautschimi Jun 18, 2026
e330c24
[rram_ctrl,sw] rram_ctrl dif functions
gautschimi Mar 11, 2026
47b63f8
[sw,flash,rram] Link RRAM image instead of flash image
gautschimi Jul 17, 2026
fd01447
[top, dv] fix various tests for RRAM
gautschimi Mar 20, 2026
fa4983c
[rram,sw] add rram_ctrl_testutils
gautschimi Jul 27, 2026
2769a8c
[rram_ctrl,sw] add RRAM support to nv_counter_testutils and nvm_testu…
gautschimi Jul 27, 2026
e8bbc6b
[rram_ctrl,sw] use nvm_testutils instead of dif_flash_ctrl
gautschimi Jul 27, 2026
d32239b
[rram_ctrl,sw] add RRAM error codes
gautschimi Jul 27, 2026
3ef5218
[rram_ctrl,sw] add silicon_creator RRAM driver
gautschimi Jul 27, 2026
dd826f1
[rram_ctrl,sw] add RRAM backend to nvm_ctrl
gautschimi Jul 27, 2026
58ba173
[rram_ctrl,bazel] add defines support to dual_cc_library
gautschimi Jul 27, 2026
78b019c
[rram_ctrl,sw] adopt 1-bank/2-slot NVM addressing for boot policy, ow…
gautschimi Jul 27, 2026
2da0a22
[rram_ctrl,sw] skip sec_mmio increment for always-emulated BootData p…
gautschimi Jul 27, 2026
dc2dc26
[rram_ctrl,sw] retarget EPMP/linker regions from eflash to rram
gautschimi Jul 27, 2026
0c27cea
[rram_ctrl,bazel] switch to default kind=rram, fix scramble_rram_vmem…
gautschimi Jul 27, 2026
cb591ea
[rram_ctrl,bootstrap,dv] parse 128-bit-word RRAM VMEM in backdoor boo…
gautschimi Jul 27, 2026
575b42d
[rram_ctrl,sw] coalesce PAGE_PROGRAM writes to NVM_PROG_PAGE_SIZE bou…
gautschimi Jul 27, 2026
e9776d0
[nvm_ctrl,sw] use nvm_ctrl in fi test
gautschimi Jul 28, 2026
49fac76
[nvm_ctrl,sw] use nvm_ctrl in pmp setup
gautschimi Jul 28, 2026
3d00a8c
[rom,sw] print mepc in crashdump
gautschimi Jul 28, 2026
165907d
[rom,sw] rename shutdown_flash_kill to shutdown_nvm_kill
gautschimi Jul 28, 2026
a50c928
[rram_ctrl,hw] grow to 10 memory-protection regions
gautschimi Jul 28, 2026
2f34516
[rram_ctrl,nvm_ctrl,sw] dedicate MP region 8 to emulated info pages
gautschimi Jul 28, 2026
0e446f4
[nvm_ctrl,sw] use nvm_ctrl for ROM_EXT manifest addressing and attest…
gautschimi Jul 28, 2026
09bd0f3
[rram_ctrl,sw] Allocate 4 pages for OwnerSlot0/1
gautschimi Jul 29, 2026
0aee831
[nvm_ctrl,rram_ctrl,sw] size DiceCerts/FactoryCerts correctly, move F…
gautschimi Jul 29, 2026
68f0c80
[ci,fpga] skip flash specific tests on CI
gautschimi Jul 29, 2026
8cb1fac
[nvm_testutils,sw] Initialize rram_ctrl during boot for sram execution.
gautschimi Jul 29, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions hw/ip/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,8 @@ filegroup(
"//hw/ip/prim_xilinx:rtl_files",
"//hw/ip/prim_xilinx_ultrascale:rtl_files",
"//hw/ip/rom_ctrl:rtl_files",
"//hw/ip/rram_ctrl:rtl_files",
"//hw/ip/rram_macro:rtl_files",
"//hw/ip/rv_dm:rtl_files",
"//hw/ip/rv_timer:rtl_files",
"//hw/ip/soc_dbg_ctrl:rtl_files",
Expand Down
2 changes: 1 addition & 1 deletion hw/ip/bkdr_loader/data/bkdr_loader.hjson
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@
{ name: "NumBkdrTgts",
desc: "Number of RAM Targets",
type: "int unsigned",
default: "13",
default: "15",
}
{ name: "MaxWordWidthDiv32",
desc: "Max bit width of a word / 32",
Expand Down
16 changes: 16 additions & 0 deletions hw/ip/bkdr_loader/doc/registers.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@
| bkdr_loader.[`TARGET_INFO_10`](#target_info) | 0x128 | 4 | ASCII 4-character string values (big endian) identifying each bkdr target memory. |
| bkdr_loader.[`TARGET_INFO_11`](#target_info) | 0x12c | 4 | ASCII 4-character string values (big endian) identifying each bkdr target memory. |
| bkdr_loader.[`TARGET_INFO_12`](#target_info) | 0x130 | 4 | ASCII 4-character string values (big endian) identifying each bkdr target memory. |
| bkdr_loader.[`TARGET_INFO_13`](#target_info) | 0x134 | 4 | ASCII 4-character string values (big endian) identifying each bkdr target memory. |
| bkdr_loader.[`TARGET_INFO_14`](#target_info) | 0x138 | 4 | ASCII 4-character string values (big endian) identifying each bkdr target memory. |
| bkdr_loader.[`WIDTH_INFO_0`](#width_info) | 0x200 | 4 | The SRAM word width of a given bkdr target memory. |
| bkdr_loader.[`WIDTH_INFO_1`](#width_info) | 0x204 | 4 | The SRAM word width of a given bkdr target memory. |
| bkdr_loader.[`WIDTH_INFO_2`](#width_info) | 0x208 | 4 | The SRAM word width of a given bkdr target memory. |
Expand All @@ -36,6 +38,8 @@
| bkdr_loader.[`WIDTH_INFO_10`](#width_info) | 0x228 | 4 | The SRAM word width of a given bkdr target memory. |
| bkdr_loader.[`WIDTH_INFO_11`](#width_info) | 0x22c | 4 | The SRAM word width of a given bkdr target memory. |
| bkdr_loader.[`WIDTH_INFO_12`](#width_info) | 0x230 | 4 | The SRAM word width of a given bkdr target memory. |
| bkdr_loader.[`WIDTH_INFO_13`](#width_info) | 0x234 | 4 | The SRAM word width of a given bkdr target memory. |
| bkdr_loader.[`WIDTH_INFO_14`](#width_info) | 0x238 | 4 | The SRAM word width of a given bkdr target memory. |
| bkdr_loader.[`DEPTH_INFO_0`](#depth_info) | 0x300 | 4 | The number of SRAM words of a given bkdr target memory. |
| bkdr_loader.[`DEPTH_INFO_1`](#depth_info) | 0x304 | 4 | The number of SRAM words of a given bkdr target memory. |
| bkdr_loader.[`DEPTH_INFO_2`](#depth_info) | 0x308 | 4 | The number of SRAM words of a given bkdr target memory. |
Expand All @@ -49,6 +53,8 @@
| bkdr_loader.[`DEPTH_INFO_10`](#depth_info) | 0x328 | 4 | The number of SRAM words of a given bkdr target memory. |
| bkdr_loader.[`DEPTH_INFO_11`](#depth_info) | 0x32c | 4 | The number of SRAM words of a given bkdr target memory. |
| bkdr_loader.[`DEPTH_INFO_12`](#depth_info) | 0x330 | 4 | The number of SRAM words of a given bkdr target memory. |
| bkdr_loader.[`DEPTH_INFO_13`](#depth_info) | 0x334 | 4 | The number of SRAM words of a given bkdr target memory. |
| bkdr_loader.[`DEPTH_INFO_14`](#depth_info) | 0x338 | 4 | The number of SRAM words of a given bkdr target memory. |
| bkdr_loader.[`READ_DATA_0`](#read_data) | 0x400 | 4 | Value to be read from the target memory at the current `INDEX`. If |
| bkdr_loader.[`READ_DATA_1`](#read_data) | 0x404 | 4 | Value to be read from the target memory at the current `INDEX`. If |
| bkdr_loader.[`READ_DATA_2`](#read_data) | 0x408 | 4 | Value to be read from the target memory at the current `INDEX`. If |
Expand Down Expand Up @@ -79,6 +85,8 @@
| bkdr_loader.[`HASH_LAST_LOADED_10`](#hash_last_loaded) | 0x728 | 4 | Non-reset register to store a hash digest of the memory file loaded most recently. |
| bkdr_loader.[`HASH_LAST_LOADED_11`](#hash_last_loaded) | 0x72c | 4 | Non-reset register to store a hash digest of the memory file loaded most recently. |
| bkdr_loader.[`HASH_LAST_LOADED_12`](#hash_last_loaded) | 0x730 | 4 | Non-reset register to store a hash digest of the memory file loaded most recently. |
| bkdr_loader.[`HASH_LAST_LOADED_13`](#hash_last_loaded) | 0x734 | 4 | Non-reset register to store a hash digest of the memory file loaded most recently. |
| bkdr_loader.[`HASH_LAST_LOADED_14`](#hash_last_loaded) | 0x738 | 4 | Non-reset register to store a hash digest of the memory file loaded most recently. |

## STATUS
Status register
Expand Down Expand Up @@ -228,6 +236,8 @@ ASCII 4-character string values (big endian) identifying each bkdr target memory
| TARGET_INFO_10 | 0x128 |
| TARGET_INFO_11 | 0x12c |
| TARGET_INFO_12 | 0x130 |
| TARGET_INFO_13 | 0x134 |
| TARGET_INFO_14 | 0x138 |


### Fields
Expand Down Expand Up @@ -262,6 +272,8 @@ The SRAM word width of a given bkdr target memory.
| WIDTH_INFO_10 | 0x228 |
| WIDTH_INFO_11 | 0x22c |
| WIDTH_INFO_12 | 0x230 |
| WIDTH_INFO_13 | 0x234 |
| WIDTH_INFO_14 | 0x238 |


### Fields
Expand Down Expand Up @@ -296,6 +308,8 @@ The number of SRAM words of a given bkdr target memory.
| DEPTH_INFO_10 | 0x328 |
| DEPTH_INFO_11 | 0x32c |
| DEPTH_INFO_12 | 0x330 |
| DEPTH_INFO_13 | 0x334 |
| DEPTH_INFO_14 | 0x338 |


### Fields
Expand Down Expand Up @@ -418,6 +432,8 @@ the same memory file is already loaded and a preload can be skipped.
| HASH_LAST_LOADED_10 | 0x728 |
| HASH_LAST_LOADED_11 | 0x72c |
| HASH_LAST_LOADED_12 | 0x730 |
| HASH_LAST_LOADED_13 | 0x734 |
| HASH_LAST_LOADED_14 | 0x738 |


### Fields
Expand Down
4 changes: 4 additions & 0 deletions hw/ip/bkdr_loader/rtl/bkdr_loader.svh
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@

`define BKDR_LOADER_CONNECT_REQS \
assign top_earlgrey.earlgrey_pd_aon.u_sram_ctrl_ret.u_prim_ram_1p_scr.u_prim_ram_1p_adv.gen_ram_inst[0].u_mem.bkdr_req = bkdr_req[bkdr_loader_pkg::BkdrAon]; \
assign top_earlgrey.earlgrey_pd_main.u_rram_macro.u_info_array.bkdr_req = bkdr_req[bkdr_loader_pkg::BkdrRramInfo]; \
assign top_earlgrey.earlgrey_pd_main.u_rram_macro.u_data_array.bkdr_req = bkdr_req[bkdr_loader_pkg::BkdrRramData]; \
assign top_earlgrey.earlgrey_pd_main.u_flash_ctrl.u_eflash.u_flash.gen_prim_flash_banks[1].u_prim_flash_bank.gen_info_types[2].u_info_mem.bkdr_req = bkdr_req[bkdr_loader_pkg::BkdrFlashB1I2]; \
assign top_earlgrey.earlgrey_pd_main.u_flash_ctrl.u_eflash.u_flash.gen_prim_flash_banks[1].u_prim_flash_bank.gen_info_types[1].u_info_mem.bkdr_req = bkdr_req[bkdr_loader_pkg::BkdrFlashB1I1]; \
assign top_earlgrey.earlgrey_pd_main.u_flash_ctrl.u_eflash.u_flash.gen_prim_flash_banks[1].u_prim_flash_bank.gen_info_types[0].u_info_mem.bkdr_req = bkdr_req[bkdr_loader_pkg::BkdrFlashB1I0]; \
Expand All @@ -22,6 +24,8 @@

`define BKDR_LOADER_CONNECT_RSPS \
assign bkdr_rsp[bkdr_loader_pkg::BkdrAon] = top_earlgrey.earlgrey_pd_aon.u_sram_ctrl_ret.u_prim_ram_1p_scr.u_prim_ram_1p_adv.gen_ram_inst[0].u_mem.bkdr_rsp; \
assign bkdr_rsp[bkdr_loader_pkg::BkdrRramInfo] = top_earlgrey.earlgrey_pd_main.u_rram_macro.u_info_array.bkdr_rsp; \
assign bkdr_rsp[bkdr_loader_pkg::BkdrRramData] = top_earlgrey.earlgrey_pd_main.u_rram_macro.u_data_array.bkdr_rsp; \
assign bkdr_rsp[bkdr_loader_pkg::BkdrFlashB1I2] = top_earlgrey.earlgrey_pd_main.u_flash_ctrl.u_eflash.u_flash.gen_prim_flash_banks[1].u_prim_flash_bank.gen_info_types[2].u_info_mem.bkdr_rsp; \
assign bkdr_rsp[bkdr_loader_pkg::BkdrFlashB1I1] = top_earlgrey.earlgrey_pd_main.u_flash_ctrl.u_eflash.u_flash.gen_prim_flash_banks[1].u_prim_flash_bank.gen_info_types[1].u_info_mem.bkdr_rsp; \
assign bkdr_rsp[bkdr_loader_pkg::BkdrFlashB1I0] = top_earlgrey.earlgrey_pd_main.u_flash_ctrl.u_eflash.u_flash.gen_prim_flash_banks[1].u_prim_flash_bank.gen_info_types[0].u_info_mem.bkdr_rsp; \
Expand Down
6 changes: 6 additions & 0 deletions hw/ip/bkdr_loader/rtl/bkdr_loader_pkg.sv
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@ package bkdr_loader_pkg;

// Target indices
typedef enum logic [TargetIdxWidth-1:0] {
BkdrRramInfo = 'd14,
BkdrRramData = 'd13,
BkdrAon = 'd12,
BkdrFlashB1I2 = 'd11,
BkdrFlashB1I1 = 'd10,
Expand All @@ -50,6 +52,8 @@ package bkdr_loader_pkg;

// Valid targets
localparam bkdr_idx_e BkdrValidTgts [NumBkdrTgts] = {
BkdrRramInfo,
BkdrRramData,
BkdrAon,
BkdrFlashB1I2,
BkdrFlashB1I1,
Expand All @@ -67,6 +71,8 @@ package bkdr_loader_pkg;

// Strings describing the targets (max, 4 chars)
localparam reg_t [NumBkdrTgts-1:0] BkdrTargets = {
"RRIN",
"RRDA",
"AON ",
"FI12",
"FI11",
Expand Down
Loading
Loading