修复上行子报文尾传递问题

This commit is contained in:
Ruige Lee
2025-06-25 15:25:53 +08:00
parent 8a0533738c
commit 12485fcfff
3 changed files with 24 additions and 4 deletions

View File

@@ -379,9 +379,28 @@ abstract class SlaveParserBase extends Module{
} }
} }
when( upSendGen.io.subMsgHeadReq.fire ){ //ready when( upSendGen.io.subMsgTailReq.fire ){
when( isUpSendPing ){
assert( isUpSubMsgTailValid(0) )
isUpSubMsgTailValid(0) := false.B
} .otherwise{
assert( isUpSubMsgTailValid(1) )
isUpSubMsgTailValid(1) := false.B
}
} .elsewhen( upRecParser.io.subMsgTailReq.fire ){
when( isUpRecPing ){
assert( ~isUpSubMsgTailValid(0) )
isUpSubMsgTailValid(0) := true.B
} .otherwise{
assert( ~isUpSubMsgTailValid(1) )
isUpSubMsgTailValid(1) := true.B
}
}
when( upSendGen.io.subMsgTailReq.fire ){ //ready
isUpSendPing := ~isUpSendPing isUpSendPing := ~isUpSendPing
}.elsewhen( upRecParser.io.subMsgHeadReq.fire ){ }.elsewhen( upRecParser.io.subMsgTailReq.fire ){
isUpRecPing := ~isUpRecPing isUpRecPing := ~isUpRecPing
} }
@@ -739,7 +758,7 @@ trait SlaveParserRW{ this: SlaveParserBase =>
)) ))
when( ~isUpRecPing ){ //req fire 后 已经反相 when( isUpRecPing ){
upRecFifo(0).io.enq.valid := upRecParser.io.data.valid upRecFifo(0).io.enq.valid := upRecParser.io.data.valid
upRecFifo(0).io.enq.bits := upRecFifo(0).io.enq.bits :=
Mux( Mux(

View File

@@ -108,6 +108,7 @@ class SlaveSendGen extends Module{
io.frameReq.ready := true.B io.frameReq.ready := true.B
io.subMsgHeadReq.ready := stateCurr =/= STATE_SUBMSG_HEADER & stateNext === STATE_SUBMSG_HEADER io.subMsgHeadReq.ready := stateCurr =/= STATE_SUBMSG_HEADER & stateNext === STATE_SUBMSG_HEADER
io.subMsgTailReq.ready := stateCurr =/= STATE_SUBMSG_TAIL & stateNext === STATE_SUBMSG_TAIL io.subMsgTailReq.ready := stateCurr =/= STATE_SUBMSG_TAIL & stateNext === STATE_SUBMSG_TAIL
assert( ~(io.subMsgTailReq.ready & ~io.subMsgTailReq.valid) )
stateNext := Mux1H(Seq( stateNext := Mux1H(Seq(

View File

@@ -238,7 +238,7 @@ ShinTop s_ShinTop_slv3(
initial begin initial begin
clock = 0; clock = 0;
clk8x = 0; clk8x = 0;
reset = 0; reset = 1;
_reset_deactive = 1'b0; _reset_deactive = 1'b0;