[cheriot,rtl] Add TRVK filter to Ibex sources - #2455
Conversation
This commit updates the vendored ibex to `thommythomaso/ibex-tbenz-pub`. This has to be updated to point to `lowrisc/ibex` as soon as lowRISC/ibex#2455 and lowRISC/ibex#2456 are merged. Signed-off-by: Thomas Benz <tbenz@lowrisc.org>
This commit updates the vendored ibex to `thommythomaso/ibex-tbenz-pub`. This has to be updated to point to `lowrisc/ibex` as soon as lowRISC/ibex#2455 and lowRISC/ibex#2456 are merged. Signed-off-by: Thomas Benz <tbenz@lowrisc.org>
6e28f03 to
588c2d9
Compare
|
All contributors have signed the CLA ✍️ ✅ |
|
I have read the CLA Document. By submitting this pull request comment, I am hereby confirming my acceptance of the terms of the CLA Document and my agreement to be legally bound by its terms. |
49af40a to
c4ad698
Compare
marnovandermaas
left a comment
There was a problem hiding this comment.
I've left a few comments on this, mainly to make the code more clear. Do we have any tests for this load filter? We should include at least a smoke test before merging this.
I have a smoke test in OpenTitan of the entire CHERIoT subsystem. I would suggest to not add a dedicated test for just the filter here, especially as we are planning to merge the core soon which then will use and verify the filter. |
SamuelRiedel
left a comment
There was a problem hiding this comment.
Thanks for this Thomas! Just a few very minor nits.
andreaskurth
left a comment
There was a problem hiding this comment.
Thanks @thommythomaso, nice to see the TRVK land!I checked the CHERIoT-specific parts against the v1.0 spec and the Sail model and they match.
My remaining comments are almost entirely around integration, verification and documentation rather than the logic itself. At the current stage, many items can be deferred for follow-up in tracking issues, but those issues need to be created now and referenced here.
Three items that don't attach to a line:
Verification. Nothing in CI currently compiles this module: it isn't instantiated anywhere, so Verilator only parses it and never elaborates it, and there is no testbench. I understand the smoke test lives in OpenTitan and that the core PR will exercise the filter, but the memory subsystem RFC commits to a block-level test for the TRVK specifically. Please create a tracking issue and reference it here.
Documentation. There is nothing under doc/03_reference/. It would help integrators to have the port protocol (OBI plus the tag sideband), the revocation bitmap addressing convention, the placement requirements (lockstep domain, arbitration on the bitmap port, heap_base_addr_i being static and 8-byte aligned), and the expected handling of revbm_data_intg_error_o / revbm_device_error_o written down somewhere. Please create a tracking issue and reference it here.
PR description. Could you please add one? Both commit bodies are empty as well. A pointer to the RFCs and a note that the module is deliberately not instantiated yet would make this much easier to understand later.
The `stream_fork` and `stream_join` modules are used in some CHERIoT memory IPs. Signed-off-by: Thomas Benz <tbenz@lowrisc.org>
a819b93 to
1640ed8
Compare
Signed-off-by: Thomas Benz <tbenz@lowrisc.org>
1640ed8 to
cd5c2d4
Compare
This PR introduces the temporal revocation (TRVK) filter to the Ibex sources without integrating it yet. The integration of the TRVK into Ibex is done in #2456.
The TRVK filter is constructed and integrated into Ibex according to the OpenTitan CHERIoT MEmory Subsystem RFC.
Ibex's documentation has yet to be updated by a follow-up PR. An issue #2464 regarding this has been opened.
The verification of TRVK will be done together with the CHERIoT-capable Ibex core. We keep track of this in issue #2466.