You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[rom_ctrl,doc] Update docs for drop of second S&P layer
This second S&P layer was removed in commit 803d9ae. Update the
documentation to describe the design properly.
While updating the block diagram, I also sort out the legends for the
rdata paths.
In the programmer's guide, I change the text so that it's
true (talking about scrambled addresses as opposed to scrambled data),
but the behaviour seen by the programmer does not change.
Signed-off-by: Rupert Swarbrick <[email protected]>
`AlertAsyncOn` | True | True | This is passed to the single `prim_alert_sender` instance and causes it to generate synchronization logic to support alert rx and tx being on different clocks.
63
-
`RndCnstRomNonce` | `RND_CNST_SCR_NONCE` (define) | `top_earlgrey_rnd_cnst_pkg::RndCnstRomCtrlScrNonce`| Compile-time random default constant for scrambling nonce (used in `prim_prince` block and the two S&P blocks).
63
+
`RndCnstRomNonce` | `RND_CNST_SCR_NONCE` (define) | `top_earlgrey_rnd_cnst_pkg::RndCnstRomCtrlScrNonce`| Compile-time random default constant for scrambling nonce (used in `prim_prince` block and the S&P block).
64
64
`RndCnstRomKey` | `RND_CNST_SCR_KEY` (define) | `top_earlgrey_rnd_cnst_pkg::RndCnstRomCtrlScrKey` | 128-bit compile-time random default constant for scrambling key (used in `prim_prince` block).
65
65
`MemSizeRom` | 64kB | 32kB | The size of the ROM itself
Copy file name to clipboardExpand all lines: hw/ip/rom_ctrl/doc/programmers_guide.md
+2-2Lines changed: 2 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -9,8 +9,8 @@ The [`FATAL_ALERT_CAUSE`](registers.md#fatal_alert_cause) register might change
9
9
10
10
To get the computed ROM digest, software can read [`DIGEST_0`](registers.md#digest) through [`DIGEST_7`](registers.md#digest).
11
11
The ROM also contains an expected ROM digest.
12
-
Unlike the rest of the contents of ROM, this isn't scrambled.
13
-
As such, software can't read it through the standard ROM interface (which would try to unscramble it again, resulting in rubbish data that would cause a failed ECC check).
12
+
Unlike the rest of the contents of ROM, the address of this digest isn't scrambled.
13
+
As such, software can't read it through the standard ROM interface (since the address isn't very predictable).
14
14
In case software needs access to this value, it can be read at [`EXP_DIGEST_0`](registers.md#exp_digest) through [`EXP_DIGEST_7`](registers.md#exp_digest).
Copy file name to clipboardExpand all lines: hw/ip/rom_ctrl/doc/theory_of_operation.md
+7-8Lines changed: 7 additions & 8 deletions
Original file line number
Diff line number
Diff line change
@@ -16,16 +16,16 @@ It runs exactly once, and releases the green multiplexer when it is done.
16
16
## ROM access when chip is in operation
17
17
18
18
Once the chip has booted, ROM accesses are requested over the system TL-UL bus.
19
-
These come in through the TL-UL SRAM adapter (top-left of block diagram).
19
+
These arrive through the TL-UL SRAM adapter (top-left of block diagram).
20
20
In normal operation, the green multiplexer will give access to these TL reads.
21
-
The address is scrambled at the first substitution-permutation network (marked S&P in the diagram).
21
+
The address is scrambled by a substitution-permutation network (marked S&P in the diagram).
22
22
23
23
In parallel with the ROM access, a reduced `prim_prince` primitive (7 rounds with latency 1; equivalent to the cipher used for SRAM) computes a 39-bit truncated keystream for the block.
24
-
On the following cycle, the scrambled data from ROM goes through a substitution-permutation network and is then XOR'd with the keystream.
24
+
On the following cycle, the data returned from ROM is XOR'd with the keystream.
25
25
This scheme is the same as that used by the [SRAM controller](../../sram_ctrl/README.md), but is much simplified because the ROM doesn't have to deal with writes, byte accesses or key changes.
26
26
27
-
The output from the XOR is the unscrambled 32-bit data, plus seven ECC bits.
28
-
This data is passed straight through the TL-UL SRAM adapter; the ECC bits are used as a signal integrity check by the system bus.
27
+
The output from the XOR has a 32-bit data word plus seven ECC bits.
28
+
This data word is passed straight through the TL-UL SRAM adapter; the ECC bits are used as a signal integrity check by the system bus.
29
29
30
30
The following diagram shows the timing of the different signals.
31
31
The time from the `req` output from the `tlul_adapter_sram` to the response that appears on its `rvalid` input is one cycle.
@@ -40,9 +40,9 @@ The unscrambled ROM data for (logical) address 12 is denoted `d12`.
0 commit comments