Fix undefined signals on instr_req_o #531
Open
+4
−4
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.
Fixes this issue: #530
Arrays/buffers in cv32e40s_obi_integrity_fifo.sv and cv32e40s_lsu_response_filter.sv did not have proper bound checking (two bit index with a default buffer size of three, meaning that in cases of 2'b11 an undefined signal would occur).
Specifically, the LSU response filter only checked increments, not decrements, and the integrity FIFO did not ever check bounds.
As discussed, this resulted in X's appearing on the instr_req_o and instr_reqpar_o lines, among others. This occurred frequently during fuzz testing.
My fix uses logic similar to the increment bound checking in the LSU response filter on the other three cases (LSU response filter decrement, integrity FIFO increment, and integrity FIFO decrement).