Bump BSV-RVFI-DII and refactor to support new parcel-based interface

This means FetchStage should now behave in the same way with RVFI-DII as
with an I-Cache. A Dii_Parcel_Id is fed alongside PC everywhere relevant
and follows very similar logic, but, importantly it's just extra state
on the side, it doesn't affect what we do with the branch predictor and
parcel combining/instruction decoding logic.
This commit is contained in:
Jessica Clarke
2020-07-21 13:24:39 +01:00
parent 7d98946103
commit 0516db5e8d
13 changed files with 247 additions and 184 deletions

View File

@@ -270,10 +270,7 @@ module mkCore#(CoreId coreId)(Core);
// bridge that can insert instructions.
`ifdef RVFI_DII
Toooba_RVFI_DII_Bridge_IFC rvfi_bridge <- mkTooobaRVFIDIIBridge;
mkConnection(rvfi_bridge.dii, fetchStage.dii);
rule rl_passLastId;
fetchStage.lastTraceId(rvfi_bridge.lastId);
endrule
mkConnection(rvfi_bridge.dii, fetchStage.diiIfc);
`endif
// back end
@@ -399,7 +396,7 @@ module mkCore#(CoreId coreId)(Core);
epochManager.incrementEpoch;
fetchStage.redirect(new_pc
`ifdef RVFI_DII
, inst_tag.diid + 1
, inst_tag.dii_next_pid
`endif
);
globalSpecUpdate.incorrectSpec(False, spec_tag, inst_tag);

View File

@@ -43,7 +43,7 @@ import Trace_Data2 :: *;
`endif
`ifdef RVFI_DII
import Types :: *;
import ProcTypes :: *;
`endif
`ifdef DEBUG_WEDGE