efuse_shadow_regs
Mirror sensed fuse bits in a shadow file and serve the MAP APB window under lock controls.
After reset it issues one fuse READ command covering the whole shadow file, stores the streamed response words, then serves APB reads/writes through the access control. CLASS1_SHADOW_RANGES places words in separately named storage for scan exclusion; SECRET_SHADOW_RANGES selects the words that secure_tm_i zeroes on the hardware output. TOKEN_MATCH_CODE and the RMA token match inputs gate lifecycle-state transitions. fuse_sense_done_o marks initial sense complete for token processing; locked_field_access_interrupt_o reports locked-field APB hits.
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
FUSE_MAP_REG_MAP_BASE_ADDR | int unsigned | 32'h0 | Base address of the MAP window; not used in this module, which decodes window offsets. |
SHADOW_REG_BITS | int unsigned | 24576 | Shadow register file size in bits. |
SHADOW_REG_BYTES | int unsigned | SHADOW_REG_BITS / 8 | Shadow register file size in bytes. |
SHADOW_REG_WORD_WIDTH | int unsigned | 32 | Shadow word width in bits. |
EFUSE_FIELDS | int unsigned | 1 | eFuse field-map entry count. |
REG_ADDR_WIDTH | int unsigned | 12 | Width of the MAP window byte offset on apb_req_paddr_i. |
HAS_LC_STATE | bit | 1'b0 | Set for SEP: keeps the lifecycle state, differentially encoded, in shadow word ShadowIdxLcState and applies token-gated lifecycle transitions; clear for SMC. |
CLASS1_SHADOW_RANGES | efuse_pkg::shadow_word_range_map_t | '0 | Class-1 shadow word ranges, stored in the separately named *_n0_scan array; the lifecycle-state word is always written there, so it must be covered when HAS_LC_STATE is set. |
SECRET_SHADOW_RANGES | efuse_pkg::shadow_word_range_map_t | '0 | Secret shadow ranges masked under secure_tm. |
TOKEN_MATCH_CODE | logic [5:0] | 6'b010101 | Token-match code that permits the RMA lifecycle-state transitions. |
LcStateWidth | int unsigned | efuse_pkg::LcStateRawWidth | Lifecycle-state field width; fixed by the encoding in efuse_pkg. |
NumShadowWords | int unsigned | SHADOW_REG_BITS / SHADOW_REG_WORD_WIDTH | Shadow file word count. |
ShadowEfuseWidth | int unsigned | $clog2(NumShadowWords) | Shadow word index width. |
Ports
| Name | Direction | Type | Description |
|---|---|---|---|
clk_i | input | logic | System clock. |
rst_ni | input | logic | Active-low asynchronous reset; its release starts fuse sensing. |
test_en_i | input | logic | DFT test enable; not used in this module. |
security_disable_i | input | logic | Security disable, active-high; stops loading from the fuses and opens APB access to the shadow file before sensing completes. |
secure_tm_i | input | logic | Secure test mode, active-high; zeroes the secret words on shadow_efuse_o and adds the secure-test-mode lock to write checks. |
efuse_field_map_i | input | efuse_pkg::rule_t [EFUSE_FIELDS-1:0] | Per-field byte ranges, lock indices, and software lock bits for the access control. |
apb_req_paddr_i | input | logic [REG_ADDR_WIDTH-1:0] | Byte offset within the MAP window. |
apb_req_pprot_i | input | logic [2:0] | APB protection attributes. |
apb_req_psel_i | input | logic | APB select for the MAP window. |
apb_req_penable_i | input | logic | APB access phase. |
apb_req_pwrite_i | input | logic | APB transfer direction, high for a write. |
apb_req_pwdata_i | input | logic [31:0] | Write data; set-only fields OR it into the stored bits. |
apb_req_pstrb_i | input | logic [3:0] | Byte lane enables for the write. |
apb_resp_o | output | efuse_apb_resp_t | APB response; errors with 0xBADCAB1E before fuse sensing completes or beyond the shadow file, and returns 0xBADCAB1E without an error for a locked access. |
fuse_sense_done_o | output | logic | Set once the sense read has returned a response for every shadow word, errored or not; held until reset. |
shadow_efuse_o | output | efuse_map_t | Shadow eFuse map, with the secret words zeroed while secure test mode is active. |
rma_chiplet_token_match_i | input | logic [5:0] | RMA chiplet token-match code; a match permits setting lifecycle-state bit 2 once bit 1 is set. |
rma_sip_token_match_i | input | logic [5:0] | RMA SiP token-match code; a match permits setting lifecycle-state bit 1. |
fuse_command_req_o | output | fuse_command_req_t | Registered sense command: one READ from bit address 0 for every shadow word; valid stays high once issued. |
fuse_command_resp_i | input | fuse_command_resp_t | Streamed sense responses; each valid response advances the shadow index, and one without an error status is stored there. |
is_write_locked_o | output | logic | High while an APB write is blocked by a lock. |
is_write_setup_only_o | output | logic | High when the APB address falls in a set-only field. |
is_lc_state_access_o | output | logic | High when the APB address falls in the lifecycle-state field. |
is_read_locked_o | output | logic | High when the APB address falls in a read-locked field. |
locked_field_access_interrupt_o | output | logic | High during an APB access to the MAP window that a lock blocks. |