Fix BranchPlugin.jumpInterface priority to avoid conflicts with other instructions on DYNAMIC_TARGET missprediction

This commit is contained in:
Dolu1990 2020-03-28 14:36:02 +01:00
parent b3215e8beb
commit 2dac7dae32
2 changed files with 5 additions and 2 deletions

View File

@ -139,7 +139,10 @@ class BranchPlugin(earlyBranch : Boolean,
}
val pcManagerService = pipeline.service(classOf[JumpService])
jumpInterface = pcManagerService.createJumpInterface(branchStage)
//Priority -1, as DYNAMIC_TARGET misspredicted on non branch instruction should lose against other instructions
//legitim branches, as MRET for instance
jumpInterface = pcManagerService.createJumpInterface(branchStage, priority = -10)
if (catchAddressMisalignedForReal) {

View File

@ -716,7 +716,7 @@ class TestIndividualFeatures extends MultithreadedFunSuite {
//Test RTL
val debug = true
val stdCmd = (s"make run REGRESSION_PATH=../../src/test/cpp/regression VEXRISCV_FILE=VexRiscv.v WITH_USER_IO=no REDO=10 TRACE=${if(debug) "yes" else "no"} TRACE_START=1000000000000l STOP_ON_ERROR=no FLOW_INFO=no STOP_ON_ERROR=no DHRYSTONE=yes COREMARK=${coremarkRegression} THREAD_COUNT=1 ") + s" SEED=${testSeed} "
val stdCmd = (s"make run REGRESSION_PATH=../../src/test/cpp/regression VEXRISCV_FILE=VexRiscv.v WITH_USER_IO=no REDO=10 TRACE=${if(debug) "yes" else "no"} TRACE_START=1000000000000l FLOW_INFO=no STOP_ON_ERROR=no DHRYSTONE=yes COREMARK=${coremarkRegression} THREAD_COUNT=1 ") + s" SEED=${testSeed} "
val testCmd = stdCmd + (positionsToApply).map(_.testParam).mkString(" ")
println(testCmd)
val str = doCmd(testCmd)