diff --git a/src/main/scala/xiangshan/backend/MemBlock.scala b/src/main/scala/xiangshan/backend/MemBlock.scala index 16d3711b47..e3a3327128 100644 --- a/src/main/scala/xiangshan/backend/MemBlock.scala +++ b/src/main/scala/xiangshan/backend/MemBlock.scala @@ -1417,8 +1417,9 @@ class MemBlockImp(outer: MemBlock) extends LazyModuleImp(outer) if (env.EnableDifftest) { sbuffer.io.vecDifftestInfo .zipWithIndex.map{ case (sbufferPort, index) => if (index == 0) { - sbufferPort.valid := Mux(vSegmentFlag, vSegmentUnit.io.vecDifftestInfo.valid, lsq.io.sbufferVecDifftestInfo(0).valid) - sbufferPort.bits := Mux(vSegmentFlag, vSegmentUnit.io.vecDifftestInfo.bits, lsq.io.sbufferVecDifftestInfo(0).bits) + val vSegmentDifftestValid = vSegmentFlag && vSegmentUnit.io.vecDifftestInfo.valid + sbufferPort.valid := Mux(vSegmentDifftestValid, vSegmentUnit.io.vecDifftestInfo.valid, lsq.io.sbufferVecDifftestInfo(0).valid) + sbufferPort.bits := Mux(vSegmentDifftestValid, vSegmentUnit.io.vecDifftestInfo.bits, lsq.io.sbufferVecDifftestInfo(0).bits) vSegmentUnit.io.vecDifftestInfo.ready := sbufferPort.ready lsq.io.sbufferVecDifftestInfo(0).ready := sbufferPort.ready diff --git a/src/main/scala/xiangshan/mem/vector/VSegmentUnit.scala b/src/main/scala/xiangshan/mem/vector/VSegmentUnit.scala index 69cca4404a..ac1d2817b6 100644 --- a/src/main/scala/xiangshan/mem/vector/VSegmentUnit.scala +++ b/src/main/scala/xiangshan/mem/vector/VSegmentUnit.scala @@ -521,7 +521,7 @@ class VSegmentUnit (implicit p: Parameters) extends VLSUModule Option(s"VSegmentUnitPipelineConnect") ) - io.vecDifftestInfo.valid := state === s_send_data && segmentActive + io.vecDifftestInfo.valid := io.sbuffer.valid io.vecDifftestInfo.bits := uopq(deqPtr.value).uop /**