Update DebugPlugin.scala

Add readback of the hardware breakpoint values.
A new parameter is added to the plugin to switch readback on and off.
This commit is contained in:
B.Lang 2021-11-11 12:12:23 +01:00 committed by GitHub
parent acf14385d8
commit 411d946a58
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 12 additions and 1 deletions

View File

@ -176,7 +176,7 @@ case class DebugExtensionIo() extends Bundle with IMasterSlave{
} }
} }
class DebugPlugin(var debugClockDomain : ClockDomain, hardwareBreakpointCount : Int = 0) extends Plugin[VexRiscv] { class DebugPlugin(var debugClockDomain : ClockDomain, hardwareBreakpointCount : Int = 0, BreakpointReadback : Boolean = false) extends Plugin[VexRiscv] {
var io : DebugExtensionIo = null var io : DebugExtensionIo = null
val injectionAsks = ArrayBuffer[(Stage, Bool)]() val injectionAsks = ArrayBuffer[(Stage, Bool)]()
@ -248,6 +248,17 @@ class DebugPlugin(var debugClockDomain : ClockDomain, hardwareBreakpointCount :
io.bus.rsp.data(3) := haltedByBreak io.bus.rsp.data(3) := haltedByBreak
io.bus.rsp.data(4) := stepIt io.bus.rsp.data(4) := stepIt
} }
if (BreakpointReadback) {
switch(RegNext(io.bus.cmd.address(7 downto 2))) {
for(i <- 0 until hardwareBreakpointCount){
is(0x10 + i){
io.bus.rsp.data(31 downto 1) := hardwareBreakpoints(i).pc.asBits
io.bus.rsp.data(0) := hardwareBreakpoints(i).valid
}
}
}
}
injectionPort.valid := False injectionPort.valid := False
injectionPort.payload := io.bus.cmd.data injectionPort.payload := io.bus.cmd.data