Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
f3cd033
[fuse_ctrl, doc] Add register doc generation to partition script
andrea-caforio May 21, 2025
b5b3444
MICROSOFT AUTOMATED PIPELINE: Stamp 'lowrisc_fix_fuse_ctrl_doc' with …
andrea-caforio May 21, 2025
33b7f75
merged with main
ekarabu May 23, 2025
126bc8b
merged with main
ekarabu May 23, 2025
d9a7fe4
updated fuse map
ekarabu May 23, 2025
3b15112
removed an unused assertion
ekarabu May 23, 2025
1251491
Resolved Issue #439
ekarabu May 23, 2025
e9c5642
clarified FIPS zeroization flow
ekarabu May 23, 2025
7b9fce7
added details on optional fuses
ekarabu May 23, 2025
9a770e1
Resolved Issue #441
ekarabu May 23, 2025
fda7eff
Resolved issue #441 2
ekarabu May 23, 2025
3ec2497
fixed naming
ekarabu May 23, 2025
bc96efd
updated partition number in the doc
ekarabu May 23, 2025
29437f2
Merge branch 'main' into user/ekarabulut/otp_optional_items
ekarabu May 23, 2025
98ebd38
added owner PK hash
ekarabu May 23, 2025
d4e2131
[fuse_ctrl, test] Remove hardcoded addresses from tb services
andrea-caforio May 25, 2025
38f6bdc
[fuse_ctrl, rtl] Make pk hash vendor lock more generic
andrea-caforio May 27, 2025
e9d9963
MICROSOFT AUTOMATED PIPELINE: Stamp 'user/ekarabulut/otp_optional_ite…
andrea-caforio May 27, 2025
4bfb799
Resolved Issue #487
ekarabu May 27, 2025
0c4a59c
MICROSOFT AUTOMATED PIPELINE: Stamp 'user/ekarabulut/otp_optional_ite…
ekarabu May 27, 2025
f2cfeb4
Resolved #463
ekarabu May 28, 2025
9b72d28
Merge branch 'user/ekarabulut/otp_optional_items' of ssh://github.com…
ekarabu May 28, 2025
cce9b92
MICROSOFT AUTOMATED PIPELINE: Stamp 'user/ekarabulut/otp_optional_ite…
ekarabu May 29, 2025
a46ebbd
merged main
ekarabu May 30, 2025
c3ce1c0
extended scan path excl list
ekarabu May 30, 2025
a99d1c6
MICROSOFT AUTOMATED PIPELINE: Stamp 'user/ekarabulut/otp_optional_ite…
ekarabu May 30, 2025
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: 1 addition & 1 deletion .github/workflow_metadata/pr_hash
Original file line number Diff line number Diff line change
@@ -1 +1 @@
22e8401b4c673ddab48e2a37f4423c0425fa46b3e0fb88b02f8c1522e872d19157098cffe9a6e002fb2ec8ab2e213477
59a63108140a7ba97ded657f1ff05432ad458b0a422ab618939bb8f2a15228499bdaae78ebc24c3b5ef130d2e1af5e1d
2 changes: 1 addition & 1 deletion .github/workflow_metadata/pr_timestamp
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1748560868
1748638783
12 changes: 5 additions & 7 deletions docs/CaliptraSSHardwareSpecification.md
Original file line number Diff line number Diff line change
Expand Up @@ -396,7 +396,7 @@ FUSE controller is an RTL module that is responsible for programming and reading

## Partition Details

The Fuse Controller supports a total of **13 partitions** (See [Fuse Controller's Fuse Partition Map](../src/fuse_ctrl/doc/otp_ctrl_mmap.md)). Secret FUSE partitions are prefixed with the word "Secret" and are associated with specific Life Cycle (LC) states, such as "MANUF" or "PROD." This naming convention indicates the LC state required to provision each partition.
The Fuse Controller is configured a total of **16 partitions** (See [Fuse Controller's Fuse Partition Map](../src/fuse_ctrl/doc/otp_ctrl_mmap.md)), while it can support different number of partitions based on SoC product requirements. Secret FUSE partitions are prefixed with the word "Secret" and are associated with specific Life Cycle (LC) states, such as "MANUF" or "PROD." This naming convention indicates the LC state required to provision each partition.

### Key Characteristics of Secret Partitions:
1. **Programming Access:**
Expand Down Expand Up @@ -492,19 +492,17 @@ Zeroization occurs under the following conditions:

2. **Transient Condition (Before Cold Reset):**
- The **`cptra_ss_FIPS_ZEROIZATION_PPD_i`** GPIO pin must be **asserted high**.
- The **`ss_soc_MCU_ROM_zeroization_mask_reg`** must also be set.
- MCU ROM support is needed.

### Zeroization Process

1. A new input port, `cptra_ss_FIPS_ZEROIZATION_PPD_i`, is introduced in the Caliptra Subsystem.
1. A new input port, `cptra_ss_FIPS_ZEROIZATION_PPD_i`, is introduced in the Caliptra Subsystem. SoC integrator needs to connect this signal to MCI generic input wires (see [MCI Generic Input Allocation](./CaliptraSSIntegrationSpecification.md#mci-integration-requirements)).
2. When this signal is asserted, it triggers preemptive zeroization of secret FUSEs before the SCRAP state transition.
3. The **MCU ROM** samples `cptra_ss_FIPS_ZEROIZATION_PPD_i` by reading the corresponding register storing its value.
4. If `cptra_ss_FIPS_ZEROIZATION_PPD_i == HIGH`, the MCU ROM executes the following sequence:
1. Writes `32'hFFFF_FFFF` to the `ss_soc_MCU_ROM_zeroization_mask_reg` register of **MCI**.
2. Creates a **Life Cycle Controller (LCC) transition request** to switch to the **SCRAP** state.
4. If `cptra_ss_FIPS_ZEROIZATION_PPD_i == HIGH`, the MCU ROM executes a **Life Cycle Controller (LCC) transition request** to switch to the **SCRAP** state.

- **Note:** The LCC state transition to SCRAP is completed **only after a cold reset**.
- **Note:** The `ss_soc_MCU_ROM_zeroization_mask_reg` register can be set only by MCU ROM that prohibits run-time firmware to update this register.


### Cold Reset and Final Zeroization

Expand Down
68 changes: 40 additions & 28 deletions docs/CaliptraSSIntegrationSpecification.md

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion src/fuse_ctrl/coverage/fuse_ctrl_cov_if.sv
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ interface fuse_ctrl_cov_if
covergroup fuse_ctrl_fuses_cg @(posedge clk_i);
option.per_instance = 1;
// SECRET_TEST_UNLOCK_PARTITION
CptraCoreManufDebugUnlockToken_cp: coverpoint `FC_MEM[CptraCoreManufDebugUnlockTokenOffset/2] { bins Fuse = { [1:$] }; }
CptraCoreManufDebugUnlockToken_cp: coverpoint `FC_MEM[CptraSsManufDebugUnlockTokenOffset/2] { bins Fuse = { [1:$] }; }
SecretTestUnlockPartitionDigest_cp: coverpoint `FC_MEM[SwTestUnlockPartitionDigestOffset/2] { bins Fuse = { [1:$] }; }
// SECRET_MANUF_PARTITION
CptraCoreUdsSeed_cp: coverpoint `FC_MEM[CptraCoreUdsSeedOffset/2] { bins Fuse = { [1:$] }; }
Expand Down
Loading