xref: /XiangShan/src/test/scala/cache/WpuTest.scala (revision 0466583513e4c1ddbbb566b866b8963635acb20f)
1*04665835SMaxpicca-Lipackage cache
2*04665835SMaxpicca-Li
3*04665835SMaxpicca-Liimport chisel3._
4*04665835SMaxpicca-Liimport chiseltest._
5*04665835SMaxpicca-Liimport org.scalatest.flatspec.AnyFlatSpec
6*04665835SMaxpicca-Liimport top.DefaultConfig
7*04665835SMaxpicca-Liimport xiangshan.cache.wpu.DCacheWpuWrapper
8*04665835SMaxpicca-Liimport xiangshan.{XSCoreParamsKey, XSTileKey}
9*04665835SMaxpicca-Li
10*04665835SMaxpicca-Liclass WpuBasicTest extends AnyFlatSpec with ChiselScalatestTester {
11*04665835SMaxpicca-Li  behavior of "DCacheWPU"
12*04665835SMaxpicca-Li  it should ("run") in {
13*04665835SMaxpicca-Li    val defaultConfig = (new DefaultConfig)
14*04665835SMaxpicca-Li    implicit val config = defaultConfig.alterPartial({
15*04665835SMaxpicca-Li      case XSCoreParamsKey => defaultConfig(XSTileKey).head.copy()
16*04665835SMaxpicca-Li    })
17*04665835SMaxpicca-Li    println("========== Test the correctness of syntactic and datapath ==========")
18*04665835SMaxpicca-Li    test(new DCacheWpuWrapper()) { c =>
19*04665835SMaxpicca-Li      println("========== in test ==========")
20*04665835SMaxpicca-Li      // s0
21*04665835SMaxpicca-Li      c.io.req(0).bits.vaddr.poke(0.U)
22*04665835SMaxpicca-Li      c.io.req(0).bits.replayCarry.valid.poke(false.B)
23*04665835SMaxpicca-Li      c.io.req(0).bits.replayCarry.real_way_en.poke(0.U)
24*04665835SMaxpicca-Li      c.io.req(0).valid.poke(true.B)
25*04665835SMaxpicca-Li      c.clock.step()
26*04665835SMaxpicca-Li      // s1
27*04665835SMaxpicca-Li      c.io.lookup_upd(0).valid.poke(true.B)
28*04665835SMaxpicca-Li      c.io.lookup_upd(0).bits.s1_real_way_en.poke("b00010000".U)
29*04665835SMaxpicca-Li      c.io.req(0).bits.vaddr.poke(0.U)
30*04665835SMaxpicca-Li      c.io.req(0).bits.replayCarry.valid.poke(false.B)
31*04665835SMaxpicca-Li      c.io.req(0).bits.replayCarry.real_way_en.poke(0.U)
32*04665835SMaxpicca-Li      c.io.req(0).valid.poke(true.B)
33*04665835SMaxpicca-Li      println("output value1 : " + c.io.resp(0).bits.s0_pred_way_en.peek().litValue)
34*04665835SMaxpicca-Li      c.clock.step()
35*04665835SMaxpicca-Li      println("output value2 : " + c.io.resp(0).bits.s0_pred_way_en.peek().litValue)
36*04665835SMaxpicca-Li    }
37*04665835SMaxpicca-Li    println("========== end test ==========")
38*04665835SMaxpicca-Li  }
39*04665835SMaxpicca-Li
40*04665835SMaxpicca-Li}
41