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} 7*20e09ab1Shappy-lximport xiangshan.cache.{DCacheBundle, HasDCacheParameters} 88a00ff56SXuan Huimport xiangshan.backend.fu.FuType 9*20e09ab1Shappy-lximport utility.MemReqSource 10*20e09ab1Shappy-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{ 29da3bf434SMaxpicca-Li val globalID = UInt(XLEN.W) 30da3bf434SMaxpicca-Li val robIdx = UInt(log2Ceil(RobSize).W) 31da3bf434SMaxpicca-Li val instType = FuType() 32da3bf434SMaxpicca-Li val exceptType = UInt(ExceptionVec.ExceptionVecSize.W) 33da3bf434SMaxpicca-Li val ivaddr = UInt(VAddrBits.W) 34da3bf434SMaxpicca-Li val dvaddr = UInt(VAddrBits.W) // the l/s access address 35da3bf434SMaxpicca-Li val dpaddr = UInt(VAddrBits.W) // need the physical address when the TLB is valid 36da3bf434SMaxpicca-Li val tlbLatency = UInt(XLEN.W) // original requirements is L1toL2TlbLatency 37da3bf434SMaxpicca-Li val accessLatency = UInt(XLEN.W) // RS out time --> write back time 38da3bf434SMaxpicca-Li val executeLatency = UInt(XLEN.W) 39da3bf434SMaxpicca-Li val issueLatency = UInt(XLEN.W) 40da3bf434SMaxpicca-Li val lsInfo = new DebugLsInfo 41da3bf434SMaxpicca-Li val mdpInfo = new DebugMdpInfo 42da3bf434SMaxpicca-Li val issueTime = UInt(XLEN.W) 43da3bf434SMaxpicca-Li val writebackTime = UInt(XLEN.W) 44da3bf434SMaxpicca-Li} 450d32f713Shappy-lx 460d32f713Shappy-lxclass LoadInfoEntry(implicit p: Parameters) extends XSBundle{ 470d32f713Shappy-lx val pc = UInt(VAddrBits.W) 480d32f713Shappy-lx val vaddr = UInt(VAddrBits.W) 490d32f713Shappy-lx val paddr = UInt(PAddrBits.W) 500d32f713Shappy-lx val cacheMiss = Bool() 510d32f713Shappy-lx val tlbQueryLatency = UInt(64.W) 520d32f713Shappy-lx val exeLatency = UInt(64.W) 530d32f713Shappy-lx} 54*20e09ab1Shappy-lx 55*20e09ab1Shappy-lxclass StreamPFTraceInEntry(implicit p: Parameters) extends XSBundle with HasL1PrefetchHelper{ 56*20e09ab1Shappy-lx val TriggerPC = UInt(VAddrBits.W) 57*20e09ab1Shappy-lx val TriggerVaddr = UInt(VAddrBits.W) 58*20e09ab1Shappy-lx val PFVaddr = UInt(VAddrBits.W) 59*20e09ab1Shappy-lx val PFSink = UInt(SINK_BITS.W) 60*20e09ab1Shappy-lx} 61*20e09ab1Shappy-lx 62*20e09ab1Shappy-lxclass StreamTrainTraceEntry(implicit p: Parameters) extends XSBundle with HasDCacheParameters{ 63*20e09ab1Shappy-lx val Type = UInt(MemReqSource.reqSourceBits.W) 64*20e09ab1Shappy-lx val OldAddr = UInt(VAddrBits.W) 65*20e09ab1Shappy-lx val CurAddr = UInt(VAddrBits.W) 66*20e09ab1Shappy-lx val Offset = UInt(32.W) 67*20e09ab1Shappy-lx val Score = UInt(32.W) 68*20e09ab1Shappy-lx val Miss = Bool() 69*20e09ab1Shappy-lx} 70*20e09ab1Shappy-lx 71*20e09ab1Shappy-lxclass StreamPFTraceOutEntry(implicit p: Parameters) extends XSBundle with HasL1PrefetchHelper{ 72*20e09ab1Shappy-lx val PFVaddr = UInt(VAddrBits.W) 73*20e09ab1Shappy-lx val PFSink = UInt(SINK_BITS.W) 74*20e09ab1Shappy-lx}