修正看门狗0

This commit is contained in:
Ruige Lee
2025-06-05 10:02:58 +08:00
parent 09229187e5
commit 7d2079b223
2 changed files with 24 additions and 7 deletions

View File

@@ -414,11 +414,31 @@ trait ShinTopWatchDog{ this: ShinTopBase =>
wdtSMCnt(i) := 0.U wdtSMCnt(i) := 0.U
} }
assert( wdtSMCnt(i) <= interface.io.cReg.wdtTarCnt(i+1), "Assert Failed! wdtSMCnt is larger than wdtTarCnt, Special situation?" ) assert( wdtSMCnt(i) <= interface.io.cReg.wdtTarCnt(i+1), s"Assert Failed! wdtSMCnt($i) is larger than wdtTarCnt, Special situation?" )
interface.io.wdtTrigger(i+1) := wdtSMCnt(i) === interface.io.cReg.wdtTarCnt(i+1) interface.io.wdtTrigger(i+1) := wdtSMCnt(i) === interface.io.cReg.wdtTarCnt(i+1)
} }
interface.io.wdtTrigger(0) := slaveParser.io.isRecWdtTrigger
val isWdtRecEnable = RegInit(false.B)
val wdtRecCnt = Reg(UInt(32.W))
when( upCDRIn.io.axis.fire & upCDRIn.io.axis.bits.tlast ){
isWdtRecEnable := false.B
} .elsewhen( ~isWdtRecEnable & downCDROut.io.axis.fire & interface.io.cReg.wdtEnable.extract(0) ){
isWdtRecEnable := true.B
}
when( isWdtRecEnable & (wdtRecCnt < interface.io.cReg.wdtTarCnt(0)) ){
wdtRecCnt := wdtRecCnt + 1.U
} .elsewhen( ~isWdtRecEnable ){
wdtRecCnt := 0.U
}
assert( wdtRecCnt < interface.io.cReg.wdtTarCnt(0), "Assert Failed! wdtRecCnt is larger than wdtTarCnt, Special situation?" )
interface.io.wdtTrigger(0) := wdtRecCnt === interface.io.cReg.wdtTarCnt(0)
} }

View File

@@ -70,8 +70,6 @@ class SlaveParserIO extends Bundle{
val intHWTrig = Output(Vec(2, Bool())) val intHWTrig = Output(Vec(2, Bool()))
val intHWClr = Input (Vec(2, Bool())) val intHWClr = Input (Vec(2, Bool()))
val isRecWdtTrigger = Output(Bool())
} }
abstract class SlaveParserBase extends Module{ abstract class SlaveParserBase extends Module{
@@ -707,9 +705,8 @@ trait SlaveParserProbe{ this: SlaveParserBase =>
// val ProbeRecAim = 511.U // val ProbeRecAim = 511.U
val probeRecCnt = RegInit(0.U(32.W)) val probeRecCnt = RegInit(0.U(9.W))
val isWatchDogOverflow = probeRecCnt === io.cReg.wdtTarCnt(0) val isWatchDogOverflow = probeRecCnt.andR
io.isRecWdtTrigger := isWatchDogOverflow