xref: /XiangShan/src/test/scala/xiangshan/backend/fu/VsetModuleMain.scala (revision a32c56f428c85705bf274a3011ddbec711d929d9)
1*a32c56f4SXuan Hupackage xiangshan.backend.fu
2*a32c56f4SXuan Hu
3*a32c56f4SXuan Huimport chisel3._
4*a32c56f4SXuan Huimport chiseltest.{ChiselScalatestTester, _}
5*a32c56f4SXuan Huimport org.scalatest.flatspec.AnyFlatSpec
6*a32c56f4SXuan Huimport org.scalatest.matchers.must.Matchers
7*a32c56f4SXuan Huimport top.DefaultConfig
8*a32c56f4SXuan Huimport xiangshan.backend.fu.vector.Bundles.{VLmul, VSew}
9*a32c56f4SXuan Huimport xiangshan.{VSETOpType, XSCoreParameters, XSCoreParamsKey, XSTileKey}
10*a32c56f4SXuan Hu
11*a32c56f4SXuan Huclass VsetModuleMain extends AnyFlatSpec with ChiselScalatestTester with Matchers {
12*a32c56f4SXuan Hu
13*a32c56f4SXuan Hu  val defaultConfig = (new DefaultConfig).alterPartial({
14*a32c56f4SXuan Hu    case XSCoreParamsKey => XSCoreParameters()
15*a32c56f4SXuan Hu  })
16*a32c56f4SXuan Hu
17*a32c56f4SXuan Hu  def F = false.B
18*a32c56f4SXuan Hu
19*a32c56f4SXuan Hu  def T = true.B
20*a32c56f4SXuan Hu
21*a32c56f4SXuan Hu  private val (ill, vta, vma, vsew, vlmul) = (F, F, F, VSew.e8, VLmul.m8)
22*a32c56f4SXuan Hu  private val avl = 30.U
23*a32c56f4SXuan Hu
24*a32c56f4SXuan Hu  println("Test started!")
25*a32c56f4SXuan Hu
26*a32c56f4SXuan Hu  behavior of "VsetModule"
27*a32c56f4SXuan Hu  it should "run" in {
28*a32c56f4SXuan Hu    test(new VsetModule()(defaultConfig)) { m: VsetModule =>
29*a32c56f4SXuan Hu      m.io.in.func.poke(VSETOpType.uvsetvcfg_xi)
30*a32c56f4SXuan Hu      m.io.in.avl.poke(avl)
31*a32c56f4SXuan Hu      m.io.in.vtype.illegal.poke(ill)
32*a32c56f4SXuan Hu      m.io.in.vtype.vta.poke(vta)
33*a32c56f4SXuan Hu      m.io.in.vtype.vma.poke(vma)
34*a32c56f4SXuan Hu      m.io.in.vtype.vsew.poke(vsew)
35*a32c56f4SXuan Hu      m.io.in.vtype.vlmul.poke(vlmul)
36*a32c56f4SXuan Hu      m.io.in.oldVl.poke(0)
37*a32c56f4SXuan Hu      m.io.out.vconfig.vtype.illegal.expect(false.B)
38*a32c56f4SXuan Hu      m.io.out.vconfig.vtype.vta.expect(vta)
39*a32c56f4SXuan Hu      m.io.out.vconfig.vtype.vma.expect(vma)
40*a32c56f4SXuan Hu      m.io.out.vconfig.vtype.vsew.expect(vsew)
41*a32c56f4SXuan Hu      m.io.out.vconfig.vtype.vlmul.expect(vlmul)
42*a32c56f4SXuan Hu      m.io.out.vconfig.vl.expect((32).U)
43*a32c56f4SXuan Hu
44*a32c56f4SXuan Hu      println(s"log2Vlmax : ${m.io.testOut.log2Vlmax.peek().litValue}")
45*a32c56f4SXuan Hu      println(s"vlmax : ${m.io.testOut.vlmax.peek().litValue} ")
46*a32c56f4SXuan Hu      println(s"vta: ${m.io.out.vconfig.vtype.vta.peek().litToBoolean} ")
47*a32c56f4SXuan Hu      println(s"vma: ${m.io.out.vconfig.vtype.vma.peek().litToBoolean} ")
48*a32c56f4SXuan Hu      println(s"vsew: ${m.io.out.vconfig.vtype.vsew.peek().litValue} ")
49*a32c56f4SXuan Hu      println(s"vlmul: ${m.io.out.vconfig.vtype.vlmul.peek().litValue} ")
50*a32c56f4SXuan Hu    }
51*a32c56f4SXuan Hu  }
52*a32c56f4SXuan Hu}
53