Bundle.scala (80d2974b083ab30ee12d60853063f1c370505af3) Bundle.scala (28958354979421a6ba4dca0f2897d0ca0561c159)
1package xiangshan
2
3import chisel3._
4import chisel3.util._
5import bus.simplebus._
6import xiangshan.backend.brq.BrqPtr
7import xiangshan.backend.rename.FreeListPtr
8import xiangshan.frontend.PreDecodeInfo
9
10// Fetch FetchWidth x 32-bit insts from Icache
11class FetchPacket extends XSBundle {
1package xiangshan
2
3import chisel3._
4import chisel3.util._
5import bus.simplebus._
6import xiangshan.backend.brq.BrqPtr
7import xiangshan.backend.rename.FreeListPtr
8import xiangshan.frontend.PreDecodeInfo
9
10// Fetch FetchWidth x 32-bit insts from Icache
11class FetchPacket extends XSBundle {
12 val instrs = Vec(FetchWidth, UInt(32.W))
13 val mask = UInt((FetchWidth*2).W)
14 val pc = UInt(VAddrBits.W) // the pc of first inst in the fetch group
15 val pnpc = Vec(FetchWidth*2, UInt(VAddrBits.W))
16 val hist = Vec(FetchWidth*2, UInt(HistoryLength.W))
17 // val btbVictimWay = UInt(log2Up(BtbWays).W)
18 val predCtr = Vec(FetchWidth*2, UInt(2.W))
19 val btbHit = Vec(FetchWidth*2, Bool())
20 val tageMeta = Vec(FetchWidth*2, (new TageMeta))
21 val rasSp = UInt(log2Up(RasSize).W)
22 val rasTopCtr = UInt(8.W)
12 val instrs = Vec(PredictWidth, UInt(32.W))
13 val mask = UInt(PredictWidth.W)
14 val pc = UInt(VAddrBits.W)
15 val pnpc = Vec(PredictWidth, UInt(VAddrBits.W))
16 val brInfo = Vec(PredictWidth, (new BranchInfo))
17 val pd = Vec(PredictWidth, (new PreDecodeInfo))
23}
24
18}
19
25
26class ValidUndirectioned[T <: Data](gen: T) extends Bundle {
27 val valid = Bool()
28 val bits = gen.asInstanceOf[T]
29 override def cloneType = new ValidUndirectioned(gen).asInstanceOf[this.type]
30}
31
32object ValidUndirectioned {
33 def apply[T <: Data](gen: T) = {

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

67 def fromUInt(x: UInt) = x.asTypeOf(this)
68}
69
70class Predecode extends XSBundle {
71 val mask = UInt((FetchWidth*2).W)
72 val pd = Vec(FetchWidth*2, (new PreDecodeInfo))
73}
74
20class ValidUndirectioned[T <: Data](gen: T) extends Bundle {
21 val valid = Bool()
22 val bits = gen.asInstanceOf[T]
23 override def cloneType = new ValidUndirectioned(gen).asInstanceOf[this.type]
24}
25
26object ValidUndirectioned {
27 def apply[T <: Data](gen: T) = {

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

61 def fromUInt(x: UInt) = x.asTypeOf(this)
62}
63
64class Predecode extends XSBundle {
65 val mask = UInt((FetchWidth*2).W)
66 val pd = Vec(FetchWidth*2, (new PreDecodeInfo))
67}
68
75
76class BranchUpdateInfo extends XSBundle {
77 // from backend
78 val pnpc = UInt(VAddrBits.W)
79 val brTarget = UInt(VAddrBits.W)
80 val taken = Bool()
81 val fetchIdx = UInt(log2Up(FetchWidth*2).W)
82 val isMisPred = Bool()
83

--- 111 unchanged lines hidden ---
69class BranchUpdateInfo extends XSBundle {
70 // from backend
71 val pnpc = UInt(VAddrBits.W)
72 val brTarget = UInt(VAddrBits.W)
73 val taken = Bool()
74 val fetchIdx = UInt(log2Up(FetchWidth*2).W)
75 val isMisPred = Bool()
76

--- 111 unchanged lines hidden ---