提交 8f293481 编写于 作者: Z zhanglyGit 提交者: huxuan0307

fix: fix bugs in FMA and Rab

上级 3c33ec7f
...@@ -186,7 +186,7 @@ class FMA(cfg: FuConfig)(implicit p: Parameters) extends FPUSubModule(cfg) { ...@@ -186,7 +186,7 @@ class FMA(cfg: FuConfig)(implicit p: Parameters) extends FPUSubModule(cfg) {
val isFMA = mul_pipe.io.out.valid && mul_pipe.io.out.bits.ctrl.fpu.get.ren3 val isFMA = mul_pipe.io.out.valid && mul_pipe.io.out.bits.ctrl.fpu.get.ren3
// However, when sending instructions to add_pipe, we need to determine whether it's flushed. // However, when sending instructions to add_pipe, we need to determine whether it's flushed.
val mulFlushed = mul_pipe.io.out.bits.ctrl.robIdx.needFlush(io.flush) val mulFlushed = mul_pipe.io.out.bits.ctrl.robIdx.needFlush(io.flush)
val isFMAReg = RegNext(isFMA && !mulFlushed) val isFMAReg = isFMA && !mulFlushed
add_pipe.mulToAdd <> mul_pipe.toAdd add_pipe.mulToAdd <> mul_pipe.toAdd
......
...@@ -62,7 +62,7 @@ class RenameBuffer(size: Int)(implicit p: Parameters) extends XSModule with HasC ...@@ -62,7 +62,7 @@ class RenameBuffer(size: Int)(implicit p: Parameters) extends XSModule with HasC
val headPtrOHShift = CircularShift(headPtrOH) val headPtrOHShift = CircularShift(headPtrOH)
// may shift [0, CommitWidth] steps // may shift [0, CommitWidth] steps
val headPtrOHVec = VecInit.tabulate(CommitWidth + 1)(headPtrOHShift.left) val headPtrOHVec = VecInit.tabulate(CommitWidth + 1)(headPtrOHShift.left)
val headPtrOHVec2 = VecInit.tabulate(CommitWidth * MaxUopSize + 1)(headPtrOHShift.left) val headPtrOHVec2 = VecInit(Seq.tabulate(CommitWidth * MaxUopSize + 1)(_ % size).map(step => headPtrOHShift.left(step)))
val vcfgPtrOH = RegInit(1.U(size.W)) val vcfgPtrOH = RegInit(1.U(size.W))
val vcfgPtrOHShift = CircularShift(vcfgPtrOH) val vcfgPtrOHShift = CircularShift(vcfgPtrOH)
...@@ -72,7 +72,7 @@ class RenameBuffer(size: Int)(implicit p: Parameters) extends XSModule with HasC ...@@ -72,7 +72,7 @@ class RenameBuffer(size: Int)(implicit p: Parameters) extends XSModule with HasC
val diffPtrOH = RegInit(1.U(size.W)) val diffPtrOH = RegInit(1.U(size.W))
val diffPtrOHShift = CircularShift(diffPtrOH) val diffPtrOHShift = CircularShift(diffPtrOH)
// may shift [0, CommitWidth * MaxUopSize] steps // may shift [0, CommitWidth * MaxUopSize] steps
val diffPtrOHVec = VecInit.tabulate(CommitWidth * MaxUopSize + 1)(diffPtrOHShift.left) val diffPtrOHVec = VecInit(Seq.tabulate(CommitWidth * MaxUopSize + 1)(_ % size).map(step => diffPtrOHShift.left(step)))
val tailPtr = RegInit(RenameBufferPtr(false, 0)) val tailPtr = RegInit(RenameBufferPtr(false, 0))
val tailPtrOH = RegInit(1.U(size.W)) val tailPtrOH = RegInit(1.U(size.W))
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册