New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Parameterized SECURE features #498
Parameterized SECURE features #498
Conversation
Signed-off-by: Halfdan Bechmann Dolva <halfdan.bechmann@silabs.com>
Additional info:The changes required in the controller for cv32e40x equivalence are the following:
|
rtl/cv32e40s_data_obi_interface.sv
Outdated
@@ -85,8 +85,13 @@ module cv32e40s_data_obi_interface import cv32e40s_pkg::*; | |||
|
|||
always_comb begin | |||
resp_o = m_c_obi_data_if.resp_payload; | |||
resp_o.integrity_err = rvalidpar_err_resp || gntpar_err_resp || rchk_err_resp; | |||
resp_o.integrity = integrity_resp; | |||
if (SECURE) begin |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can we use scope names here (is that possible without generate)?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As in passing the parameter through the hierarchy?
That should be equivalent both with and without a generate.
rtl/cv32e40s_i_decoder.sv
Outdated
if (instr_rdata_i[14:12] == 3'b001) begin // CSRRW | ||
if ((instr_rdata_i[19:15] == 5'b0)) begin | ||
// rs1 is zero, flag instruction as illegal | ||
if (SECURE) begin |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can we use scope names here (is that possible without generate)?
rtl/cv32e40s_instr_obi_interface.sv
Outdated
@@ -87,8 +87,13 @@ module cv32e40s_instr_obi_interface import cv32e40s_pkg::*; | |||
|
|||
always_comb begin | |||
resp_o = m_c_obi_instr_if.resp_payload; | |||
resp_o.integrity_err = rvalidpar_err_resp || gntpar_err_resp || rchk_err_resp; | |||
resp_o.integrity = integrity_resp; | |||
if (SECURE) begin |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can we use scope names here (is that possible without generate)?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I mean: if (SECURE) begin : some_name
No need to add parameters, just sensible names for introduced scopes
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I added names to these ifs, but they won't be visible in formal/sim tools as they are just part of the combinatorial logic in the always blocks.
Signed-off-by: Halfdan Bechmann Dolva <halfdan.bechmann@silabs.com>
LEC clean with SECURE=1.
With SECURE=0 and some (to be analyzed) changes in the controller and hacked marchid, this is also LEC clean against the equivalent configuration of CV32E40X.