1ffc9de54Swakafa/*************************************************************************************** 2ffc9de54Swakafa * Copyright (c) 2020-2021 Institute of Computing Technology, Chinese Academy of Sciences 3ffc9de54Swakafa * Copyright (c) 2020-2021 Peng Cheng Laboratory 4ffc9de54Swakafa * 5ffc9de54Swakafa * XiangShan is licensed under Mulan PSL v2. 6ffc9de54Swakafa * You can use this software according to the terms and conditions of the Mulan PSL v2. 7ffc9de54Swakafa * You may obtain a copy of Mulan PSL v2 at: 8ffc9de54Swakafa * http://license.coscl.org.cn/MulanPSL2 9ffc9de54Swakafa * 10ffc9de54Swakafa * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, 11ffc9de54Swakafa * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, 12ffc9de54Swakafa * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. 13ffc9de54Swakafa * 14ffc9de54Swakafa * See the Mulan PSL v2 for more details. 15ffc9de54Swakafa ***************************************************************************************/ 16ffc9de54Swakafa 17289fc2f9SLinJiaweipackage xiangshan.mem.prefetch 18289fc2f9SLinJiawei 19289fc2f9SLinJiaweiimport chisel3._ 20289fc2f9SLinJiaweiimport chisel3.util._ 21289fc2f9SLinJiaweiimport chipsalliance.rocketchip.config.Parameters 22ffc9de54Swakafaimport utility.MemReqSource 23289fc2f9SLinJiaweiimport xiangshan._ 24289fc2f9SLinJiaweiimport xiangshan.cache.mmu.TlbRequestIO 25*0d32f713Shappy-lximport xiangshan.mem.{LdPrefetchTrainBundle, StPrefetchTrainBundle, L1PrefetchReq} 26*0d32f713Shappy-lx 27*0d32f713Shappy-lxclass L2PrefetchReq(implicit p: Parameters) extends XSBundle { 28*0d32f713Shappy-lx val addr = UInt(PAddrBits.W) 29*0d32f713Shappy-lx val source = UInt(MemReqSource.reqSourceBits.W) 30*0d32f713Shappy-lx} 31289fc2f9SLinJiawei 32289fc2f9SLinJiaweiclass PrefetcherIO()(implicit p: Parameters) extends XSBundle { 333af6aa6eSWilliam Wang val ld_in = Flipped(Vec(exuParameters.LduCnt, ValidIO(new LdPrefetchTrainBundle()))) 34*0d32f713Shappy-lx val st_in = Flipped(Vec(exuParameters.StuCnt, ValidIO(new StPrefetchTrainBundle()))) 35289fc2f9SLinJiawei val tlb_req = new TlbRequestIO(nRespDups = 2) 36967327d8SLinJiawei val l1_req = DecoupledIO(new L1PrefetchReq()) 37*0d32f713Shappy-lx val l2_req = ValidIO(new L2PrefetchReq()) 38*0d32f713Shappy-lx val l3_req = ValidIO(UInt(PAddrBits.W)) // TODO: l3 pf source 3985de5caeSLinJiawei val enable = Input(Bool()) 40289fc2f9SLinJiawei} 41289fc2f9SLinJiawei 42*0d32f713Shappy-lxclass PrefetchReqBundle()(implicit p: Parameters) extends XSBundle { 43*0d32f713Shappy-lx val vaddr = UInt(VAddrBits.W) 44*0d32f713Shappy-lx val paddr = UInt(PAddrBits.W) 45*0d32f713Shappy-lx val pc = UInt(VAddrBits.W) 46*0d32f713Shappy-lx} 47*0d32f713Shappy-lx 48289fc2f9SLinJiaweitrait PrefetcherParams 49289fc2f9SLinJiawei 50289fc2f9SLinJiaweiabstract class BasePrefecher()(implicit p: Parameters) extends XSModule { 51289fc2f9SLinJiawei val io = IO(new PrefetcherIO()) 52*0d32f713Shappy-lx 53*0d32f713Shappy-lx io.l3_req.valid := false.B 54*0d32f713Shappy-lx io.l3_req.bits := DontCare 55289fc2f9SLinJiawei}