Rob.scala (db0002463cde5824cd40d03b15a00b3d933b9133) Rob.scala (bd5909d0fbe65a8baf96c66f093f9e3cbde8b75e)
1/***************************************************************************************
2* Copyright (c) 2020-2021 Institute of Computing Technology, Chinese Academy of Sciences
3* Copyright (c) 2020-2021 Peng Cheng Laboratory
4*
5* XiangShan is licensed under Mulan PSL v2.
6* You can use this software according to the terms and conditions of the Mulan PSL v2.
7* You may obtain a copy of Mulan PSL v2 at:
8* http://license.coscl.org.cn/MulanPSL2

--- 43 unchanged lines hidden (view full) ---

52 val io = IO(new Bundle() {
53 val hartId = Input(UInt(hartIdLen.W))
54 val redirect = Input(Valid(new Redirect))
55 val enq = new RobEnqIO
56 val flushOut = ValidIO(new Redirect)
57 val exception = ValidIO(new ExceptionInfo)
58 // exu + brq
59 val writeback: MixedVec[ValidIO[ExuOutput]] = Flipped(params.genWrite2CtrlBundles)
1/***************************************************************************************
2* Copyright (c) 2020-2021 Institute of Computing Technology, Chinese Academy of Sciences
3* Copyright (c) 2020-2021 Peng Cheng Laboratory
4*
5* XiangShan is licensed under Mulan PSL v2.
6* You can use this software according to the terms and conditions of the Mulan PSL v2.
7* You may obtain a copy of Mulan PSL v2 at:
8* http://license.coscl.org.cn/MulanPSL2

--- 43 unchanged lines hidden (view full) ---

52 val io = IO(new Bundle() {
53 val hartId = Input(UInt(hartIdLen.W))
54 val redirect = Input(Valid(new Redirect))
55 val enq = new RobEnqIO
56 val flushOut = ValidIO(new Redirect)
57 val exception = ValidIO(new ExceptionInfo)
58 // exu + brq
59 val writeback: MixedVec[ValidIO[ExuOutput]] = Flipped(params.genWrite2CtrlBundles)
60 val exuWriteback: MixedVec[ValidIO[ExuOutput]] = Flipped(params.genWrite2CtrlBundles)
60 val writebackNums = Flipped(Vec(writeback.size - params.StdCnt, ValidIO(UInt(writeback.size.U.getWidth.W))))
61 val writebackNeedFlush = Input(Vec(params.allExuParams.filter(_.needExceptionGen).length, Bool()))
62 val commits = Output(new RobCommitIO)
63 val rabCommits = Output(new RabCommitIO)
64 val diffCommits = if (backendParams.debugEn) Some(Output(new DiffCommitIO)) else None
65 val isVsetFlushPipe = Output(Bool())
66 val lsq = new RobLsqIO
67 val robDeqPtr = Output(new RobPtr)

--- 26 unchanged lines hidden (view full) ---

94 val debugTopDown = new Bundle {
95 val toCore = new RobCoreTopDownIO
96 val toDispatch = new RobDispatchTopDownIO
97 val robHeadLqIdx = Valid(new LqPtr)
98 }
99 val debugRolling = new RobDebugRollingIO
100 })
101
61 val writebackNums = Flipped(Vec(writeback.size - params.StdCnt, ValidIO(UInt(writeback.size.U.getWidth.W))))
62 val writebackNeedFlush = Input(Vec(params.allExuParams.filter(_.needExceptionGen).length, Bool()))
63 val commits = Output(new RobCommitIO)
64 val rabCommits = Output(new RabCommitIO)
65 val diffCommits = if (backendParams.debugEn) Some(Output(new DiffCommitIO)) else None
66 val isVsetFlushPipe = Output(Bool())
67 val lsq = new RobLsqIO
68 val robDeqPtr = Output(new RobPtr)

--- 26 unchanged lines hidden (view full) ---

95 val debugTopDown = new Bundle {
96 val toCore = new RobCoreTopDownIO
97 val toDispatch = new RobDispatchTopDownIO
98 val robHeadLqIdx = Valid(new LqPtr)
99 }
100 val debugRolling = new RobDebugRollingIO
101 })
102
102 val exuWBs: Seq[ValidIO[ExuOutput]] = io.writeback.filter(!_.bits.params.hasStdFu).toSeq
103 val stdWBs: Seq[ValidIO[ExuOutput]] = io.writeback.filter(_.bits.params.hasStdFu).toSeq
104 val fflagsWBs = io.writeback.filter(x => x.bits.fflags.nonEmpty).toSeq
103 val exuWBs: Seq[ValidIO[ExuOutput]] = io.exuWriteback.filter(!_.bits.params.hasStdFu).toSeq
104 val stdWBs: Seq[ValidIO[ExuOutput]] = io.exuWriteback.filter(_.bits.params.hasStdFu).toSeq
105 val fflagsWBs = io.exuWriteback.filter(x => x.bits.fflags.nonEmpty).toSeq
105 val exceptionWBs = io.writeback.filter(x => x.bits.exceptionVec.nonEmpty).toSeq
106 val redirectWBs = io.writeback.filter(x => x.bits.redirect.nonEmpty).toSeq
106 val exceptionWBs = io.writeback.filter(x => x.bits.exceptionVec.nonEmpty).toSeq
107 val redirectWBs = io.writeback.filter(x => x.bits.redirect.nonEmpty).toSeq
107 val vxsatWBs = io.writeback.filter(x => x.bits.vxsat.nonEmpty).toSeq
108 val vxsatWBs = io.exuWriteback.filter(x => x.bits.vxsat.nonEmpty).toSeq
108
109 val numExuWbPorts = exuWBs.length
110 val numStdWbPorts = stdWBs.length
111 val bankAddrWidth = log2Up(CommitWidth)
112
113 println(s"Rob: size $RobSize, numExuWbPorts: $numExuWbPorts, numStdWbPorts: $numStdWbPorts, commitwidth: $CommitWidth")
114
115 val rab = Module(new RenameBuffer(RabSize))

--- 1294 unchanged lines hidden ---
109
110 val numExuWbPorts = exuWBs.length
111 val numStdWbPorts = stdWBs.length
112 val bankAddrWidth = log2Up(CommitWidth)
113
114 println(s"Rob: size $RobSize, numExuWbPorts: $numExuWbPorts, numStdWbPorts: $numStdWbPorts, commitwidth: $CommitWidth")
115
116 val rab = Module(new RenameBuffer(RabSize))

--- 1294 unchanged lines hidden ---