xref: /XiangShan/src/main/scala/xiangshan/DbEntry.scala (revision 248b9a04893bb9d411c7dff38e57b4ef6c6dd3fd)
1da3bf434SMaxpicca-Lipackage xiangshan
2da3bf434SMaxpicca-Li
38891a219SYinan Xuimport org.chipsalliance.cde.config.Parameters
4da3bf434SMaxpicca-Liimport chisel3._
5da3bf434SMaxpicca-Liimport chisel3.util.log2Ceil
624519898SXuan Huimport xiangshan.backend.ctrlblock.{DebugLsInfo, DebugMdpInfo}
720e09ab1Shappy-lximport xiangshan.cache.{DCacheBundle, HasDCacheParameters}
88a00ff56SXuan Huimport xiangshan.backend.fu.FuType
920e09ab1Shappy-lximport utility.MemReqSource
1020e09ab1Shappy-lximport xiangshan.mem.prefetch.HasL1PrefetchHelper
11da3bf434SMaxpicca-Li
12da3bf434SMaxpicca-Li/** Mem */
13da3bf434SMaxpicca-Liclass LoadMissEntry(implicit p: Parameters) extends DCacheBundle {
14da3bf434SMaxpicca-Li  val timeCnt = UInt(XLEN.W)
15da3bf434SMaxpicca-Li  val robIdx = UInt(log2Ceil(RobSize).W)
16da3bf434SMaxpicca-Li  val paddr = UInt(PAddrBits.W)
17da3bf434SMaxpicca-Li  val vaddr = UInt(VAddrBits.W)
18da3bf434SMaxpicca-Li  // 1:first hit, 2:first miss, 3:second miss
19da3bf434SMaxpicca-Li  val missState = UInt(3.W)
20da3bf434SMaxpicca-Li}
21da3bf434SMaxpicca-Li
2204665835SMaxpicca-Liclass LoadAccessEntry(implicit p: Parameters) extends LoadMissEntry{
2304665835SMaxpicca-Li  val pred_way_num = UInt(XLEN.W)
2404665835SMaxpicca-Li  val dm_way_num = UInt(XLEN.W)
2504665835SMaxpicca-Li  val real_way_num = UInt(XLEN.W)
2604665835SMaxpicca-Li}
2704665835SMaxpicca-Li
28da3bf434SMaxpicca-Liclass InstInfoEntry(implicit p: Parameters) extends XSBundle{
29*248b9a04SYanqin Li  /*
30*248b9a04SYanqin Li   * The annotated signals are discarded in New Backend.
31*248b9a04SYanqin Li   * But it can be used as a signal reference for instinfo
32*248b9a04SYanqin Li   */
33da3bf434SMaxpicca-Li  val robIdx = UInt(log2Ceil(RobSize).W)
34*248b9a04SYanqin Li  // val globalID = UInt(XLEN.W)
35*248b9a04SYanqin Li  // val instType = FuType()
36*248b9a04SYanqin Li  // val mdpInfo = new DebugMdpInfo
37*248b9a04SYanqin Li  // val ivaddr = UInt(VAddrBits.W)
38da3bf434SMaxpicca-Li  val dvaddr = UInt(VAddrBits.W) // the l/s access address
39da3bf434SMaxpicca-Li  val dpaddr = UInt(VAddrBits.W) // need the physical address when the TLB is valid
40da3bf434SMaxpicca-Li  val issueTime = UInt(XLEN.W)
41da3bf434SMaxpicca-Li  val writebackTime = UInt(XLEN.W)
42*248b9a04SYanqin Li  val dispatchLatency = UInt(XLEN.W)
43*248b9a04SYanqin Li  val enqRsLatency = UInt(XLEN.W)
44*248b9a04SYanqin Li  val selectLatency = UInt(XLEN.W)
45*248b9a04SYanqin Li  val issueLatency = UInt(XLEN.W)
46*248b9a04SYanqin Li  val executeLatency = UInt(XLEN.W)
47*248b9a04SYanqin Li  val rsFuLatency = UInt(XLEN.W)
48*248b9a04SYanqin Li  // val commitLatency = UInt(XLEN.W) // can not record when writing back
49*248b9a04SYanqin Li  val tlbLatency = UInt(XLEN.W)  // original requirements is L1toL2TlbLatency
50*248b9a04SYanqin Li  val lsInfo = new DebugLsInfo
51*248b9a04SYanqin Li  val exceptType = UInt(ExceptionVec.ExceptionVecSize.W)
52da3bf434SMaxpicca-Li}
530d32f713Shappy-lx
540d32f713Shappy-lxclass LoadInfoEntry(implicit p: Parameters) extends XSBundle{
550d32f713Shappy-lx  val pc = UInt(VAddrBits.W)
560d32f713Shappy-lx  val vaddr = UInt(VAddrBits.W)
570d32f713Shappy-lx  val paddr = UInt(PAddrBits.W)
580d32f713Shappy-lx  val cacheMiss = Bool()
590d32f713Shappy-lx  val tlbQueryLatency = UInt(64.W)
600d32f713Shappy-lx  val exeLatency = UInt(64.W)
610d32f713Shappy-lx}
6220e09ab1Shappy-lx
6320e09ab1Shappy-lxclass StreamPFTraceInEntry(implicit p: Parameters) extends XSBundle with HasL1PrefetchHelper{
6420e09ab1Shappy-lx  val TriggerPC = UInt(VAddrBits.W)
6520e09ab1Shappy-lx  val TriggerVaddr = UInt(VAddrBits.W)
6620e09ab1Shappy-lx  val PFVaddr = UInt(VAddrBits.W)
6720e09ab1Shappy-lx  val PFSink = UInt(SINK_BITS.W)
6820e09ab1Shappy-lx}
6920e09ab1Shappy-lx
7020e09ab1Shappy-lxclass StreamTrainTraceEntry(implicit p: Parameters) extends XSBundle with HasDCacheParameters{
7120e09ab1Shappy-lx  val Type = UInt(MemReqSource.reqSourceBits.W)
7220e09ab1Shappy-lx  val OldAddr = UInt(VAddrBits.W)
7320e09ab1Shappy-lx  val CurAddr = UInt(VAddrBits.W)
7420e09ab1Shappy-lx  val Offset = UInt(32.W)
7520e09ab1Shappy-lx  val Score = UInt(32.W)
7620e09ab1Shappy-lx  val Miss = Bool()
7720e09ab1Shappy-lx}
7820e09ab1Shappy-lx
7920e09ab1Shappy-lxclass StreamPFTraceOutEntry(implicit p: Parameters) extends XSBundle with HasL1PrefetchHelper{
8020e09ab1Shappy-lx  val PFVaddr = UInt(VAddrBits.W)
8120e09ab1Shappy-lx  val PFSink = UInt(SINK_BITS.W)
8220e09ab1Shappy-lx}