xref: /XiangShan/src/main/scala/xiangshan/mem/prefetch/BasePrefecher.scala (revision 6810d1e8e7c0789e9f50ee6bdd52010b8ce506ef)
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._
218891a219SYinan Xuimport org.chipsalliance.cde.config.Parameters
22ffc9de54Swakafaimport utility.MemReqSource
23289fc2f9SLinJiaweiimport xiangshan._
24289fc2f9SLinJiaweiimport xiangshan.cache.mmu.TlbRequestIO
250d32f713Shappy-lximport xiangshan.mem.{LdPrefetchTrainBundle, StPrefetchTrainBundle, L1PrefetchReq}
26*6810d1e8Ssfencevmaimport xiangshan.backend._
270d32f713Shappy-lx
280d32f713Shappy-lxclass L2PrefetchReq(implicit p: Parameters) extends XSBundle {
290d32f713Shappy-lx  val addr = UInt(PAddrBits.W)
300d32f713Shappy-lx  val source = UInt(MemReqSource.reqSourceBits.W)
310d32f713Shappy-lx}
32289fc2f9SLinJiawei
33289fc2f9SLinJiaweiclass PrefetcherIO()(implicit p: Parameters) extends XSBundle {
34*6810d1e8Ssfencevma  val ld_in = Flipped(Vec(backendParams.LduCnt + backendParams.HyuCnt, ValidIO(new LdPrefetchTrainBundle())))
35*6810d1e8Ssfencevma  val st_in = Flipped(Vec(backendParams.StaCnt + backendParams.HyuCnt, ValidIO(new StPrefetchTrainBundle())))
36289fc2f9SLinJiawei  val tlb_req = new TlbRequestIO(nRespDups = 2)
37967327d8SLinJiawei  val l1_req = DecoupledIO(new L1PrefetchReq())
380d32f713Shappy-lx  val l2_req = ValidIO(new L2PrefetchReq())
390d32f713Shappy-lx  val l3_req = ValidIO(UInt(PAddrBits.W)) // TODO: l3 pf source
4085de5caeSLinJiawei  val enable = Input(Bool())
41289fc2f9SLinJiawei}
42289fc2f9SLinJiawei
430d32f713Shappy-lxclass PrefetchReqBundle()(implicit p: Parameters) extends XSBundle {
440d32f713Shappy-lx  val vaddr = UInt(VAddrBits.W)
450d32f713Shappy-lx  val paddr = UInt(PAddrBits.W)
460d32f713Shappy-lx  val pc    = UInt(VAddrBits.W)
470d32f713Shappy-lx}
480d32f713Shappy-lx
49289fc2f9SLinJiaweitrait PrefetcherParams
50289fc2f9SLinJiawei
51289fc2f9SLinJiaweiabstract class BasePrefecher()(implicit p: Parameters) extends XSModule {
52289fc2f9SLinJiawei  val io = IO(new PrefetcherIO())
530d32f713Shappy-lx
540d32f713Shappy-lx  io.l3_req.valid := false.B
550d32f713Shappy-lx  io.l3_req.bits  := DontCare
56289fc2f9SLinJiawei}