提交 015fbae3 编写于 作者: Y Yinan Xu

dispatch1: set valid when redirect

上级 b140365d
......@@ -92,7 +92,7 @@ class Dispatch1 extends XSModule{
val all_recv = recv_vector.reduce((x, y) => x && y).asBool()
for (i <- 0 until RenameWidth) {
io.toRoq(i).bits <> io.fromRename(i).bits
io.toRoq(i).valid := io.fromRename(i).valid && !roqIndexRegValid(i) && !cancelled(i)
io.toRoq(i).valid := io.fromRename(i).valid && !roqIndexRegValid(i)// && !cancelled(i)
XSDebug(io.toRoq(i).fire(), "pc 0x%x receives nroq %d\n", io.fromRename(i).bits.cf.pc, io.roqIdxs(i))
if (i > 0) {
XSWarn(io.toRoq(i).fire() && !io.toRoq(i - 1).ready && io.toRoq(i - 1).valid,
......
......@@ -153,7 +153,7 @@ class Roq(implicit val p: XSConfig) extends XSModule {
// when redirect, walk back roq entries
when(io.brqRedirect.valid){
state := s_walk
ringBufferWalkExtended := ringBufferHeadExtended - 1.U
ringBufferWalkExtended := ringBufferHeadExtended - 1.U + PopCount(firedDispatch)
ringBufferWalkTarget := io.brqRedirect.bits.roqIdx
ringBufferHeadExtended := io.brqRedirect.bits.roqIdx + 1.U
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册