-
Notifications
You must be signed in to change notification settings - Fork 813
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
[RACL] Create a unified error log output, error arbitration, and more #26184
Conversation
95474df
to
726e956
Compare
726e956
to
301a955
Compare
01bf173
to
4caebc0
Compare
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.
Thanks. This looks fine to me; just one question really about the arbitration but if that change is made I'm happy for it to be deferred.
4caebc0
to
ed668e3
Compare
acddf9d
to
cc74733
Compare
Introduced proposed change to PR lowRISC#26184; do NOT merge this commit. Signed-off-by: Robert Schilling <[email protected]> Signed-off-by: Adrian Lees <[email protected]>
cc74733
to
3c97493
Compare
f94be34
to
c85ca39
Compare
c85ca39
to
16822eb
Compare
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.
LGTM, thx @Razer6!
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.
Each top still has top_racl_pkg
because that allows IPs to reference RACL symbols in SV code without having to be IPgen'd, right?
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.
Exactly. That one carries the generic information that one IP needs, such as the struct definitions. There is one provider of the virtual core top_racl_pkg
in the top. That one is also use across multiple tops in a design (if used). When multiple tops come into play, each top needs to place its own unique definition into a uniquified package top_<top_name>_racl_pkg
. These can exist multiple times for multiple tops because of uniquification.
@Razer6: If you could rebase this PR and it passes CI, we should be able to merge this |
|
Yeah, I still need to think about a solution that now occurs with rebasing and in combination with this PR. So with this PR, we now arbitrate between different, possibly simultaneous, occurring incoming errors in racl_ctrl. This problem also arise now within the sram_ctrl IP itself, or any other IP that uses multiple RACL checks in parallel. In sram_ctrl, a RACL check happens in the reg_top and in the sram adapter. Those might occur in parallel, for example there are still outstanding transfers that target sran_ctrl's RAM + one register access. What we would need to do here is to arbitrate between all error sources inside and IP and return one error log. In case of more than one error, the error struct needs to include and @alees24 @andreaskurth What do you think about that? |
I suppose the simple solution is simply to track two The alternative thought that occurs is perhaps you could move the prim_arbiter_fixed and immediately-surrounding logic into a parameterized submodule that receives a N Let us suppose that the naming is
That's the more general solution, which does mean more churn, but perhaps it would be better to accept that at this stage, as part of this PR. I'd be happy enough with that, and it may actually provide a means of resolving any timing issues that result from the RACL wiring spanning the entire design, if an optional register stage delay can be introduced with a parameter. |
Signed-off-by: Robert Schilling <[email protected]>
16822eb
to
d812ea1
Compare
I also didn't want to introduce a non-scaling solution which does not scale very well. I instead went the route to introduce a |
1f78500
to
0dea6a2
Compare
Signed-off-by: Robert Schilling <[email protected]>
Signed-off-by: Robert Schilling <[email protected]>
Signed-off-by: Robert Schilling <[email protected]>
0dea6a2
to
792ab51
Compare
To support multiple tops in the hierarchy. Signed-off-by: Robert Schilling <[email protected]>
Signed-off-by: Robert Schilling <[email protected]>
Signed-off-by: Robert Schilling <[email protected]>
Signed-off-by: Robert Schilling <[email protected]>
342273b
to
0bbac6a
Compare
Signed-off-by: Robert Schilling <[email protected]>
0bbac6a
to
d0be10b
Compare
CHANGE AUTHORIZED: hw/ip/gpio/data/gpio.hjson |
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 ran the top-level uart smoketest with the new arbitration logic without issue. LGTM, thanks.
Just one observation going forwards; as RACL is added into other blocks, could you please add the port connections into the DUT instances in the block-level test benches and do a build test? A missing, unused output port in the instantiation is usually not a problem (except for Verilator test benches) but it's good to keep the instantiations and definitions in step.
CHANGE AUTHORIZED: hw/ip/gpio/data/gpio.hjson All these changes are related to RACL, which isn't fully stable yet. |
This PR improves and fixes multiple issues with RACL:
valid
bit to the error log struct. This change is passed through all RACL consumers and the tops are re-generated.top_racl_pkg.sv
into a top-specifictop_<topname>_racl_pkg.sv
. This file must be added per top, wich would not be possible if it is rendered in itstop_racl_pkg.sv
.