[rtl] Split data and ECC of the register file#2364
Open
nasahlpa wants to merge 4 commits intolowRISC:masterfrom
Open
[rtl] Split data and ECC of the register file#2364nasahlpa wants to merge 4 commits intolowRISC:masterfrom
nasahlpa wants to merge 4 commits intolowRISC:masterfrom
Conversation
e138d32 to
410556d
Compare
Contributor
|
If I understand correctly, I've looked at some of this change already (where it looked good to me). The only differences since what I've already seen seem to be
That looks really sensible to me, but doesn't this leave |
As we are switching to a redundancy based fault injection mitigation approach for the register file in the following commits, remove the `WrenCheck` and `RdataMuxCheck` countermeasures from the register file. Signed-off-by: Pascal Nasahl <nasahlpa@lowrisc.org>
Until now, a single instance of the register file containing 32-bit
data words and 7-bit ECC tags was used. While the input of the
register file was driven by the main core, the output of the
register file was distributed to the main and the shadow core.
In this commit, we are splitting up the data and ECC parts into two
different register file instances:
- (1) This instance is driven by the main core and only operates on
the 32-bit data words. The outputs (32-bit data words) are
forwarded to the main and the shadow core.
- (2) This instance is driven by the shadow core and only operates
on the 7-bit ECC words. The 7-bit ECC output is combined with
the delayed 32-bit data output of the (1) RF instance. The
shadow core uses ECC checkers to check if data and ECC (a)
match and (b) are not manipulated using FI.
This helps us to save around 6 kGE of area.
Signed-off-by: Pascal Nasahl <nasahlpa@lowrisc.org>
Due to the new register file split architecture, adapt the DV test accordingly. Target the address of either the main or shadow core register file. Check if we see an ECC error that is generated by the shadow core. Signed-off-by: Pascal Nasahl <nasahlpa@lowrisc.org>
Fix the port name and wait LockstepOffset cycles before reading the alert. Signed-off-by: Pascal Nasahl <nasahlpa@lowrisc.org>
410556d to
b0e833e
Compare
Member
Author
|
Thanks for the review, Rupert!
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Until now, a single instance of the register file containing 32-bit data words and 7-bit ECC tags was used. While the input of the register file was driven by the main core, the output of the register file was distributed to the main and the shadow core.
In this PR, we are splitting up the data and ECC parts into two different register file instances:
This helps us to save around 6 kGE of area.