1package xiangshan.backend.fu.wrapper 2 3import chipsalliance.rocketchip.config.Parameters 4import chisel3._ 5import xiangshan.backend.fu.{FuConfig, FuncUnit, VsetModule} 6 7class VSetIVL(cfg: FuConfig)(implicit p: Parameters) extends FuncUnit(cfg) { 8 private val vsetModule = Module(new VsetModule) 9 10 private val flushed = io.in.bits.robIdx.needFlush(io.flush) 11 12 io.out.valid := io.in.valid 13 io.in.ready := io.out.ready 14 15 private val in = io.in.bits 16 private val out = io.out.bits 17 vsetModule.io.src0 := in.src(0) 18 vsetModule.io.src1 := in.src(1) 19 vsetModule.io.func := in.fuOpType 20 vsetModule.io.oldVConfig := 0.U 21 out.data := vsetModule.io.vl 22 connectNonPipedCtrlSingal 23} 24 25class VSetIVConfig(cfg: FuConfig)(implicit p: Parameters) extends FuncUnit(cfg) { 26 private val vsetModule = Module(new VsetModule) 27 28 private val flushed = io.in.bits.robIdx.needFlush(io.flush) 29 30 io.out.valid := io.in.valid 31 io.in.ready := io.out.ready 32 33 private val in = io.in.bits 34 private val out = io.out.bits 35 vsetModule.io.src0 := in.src(0) 36 vsetModule.io.src1 := in.src(1) 37 vsetModule.io.func := in.fuOpType 38 vsetModule.io.oldVConfig := 0.U 39 out.data := vsetModule.io.vconfig 40 connectNonPipedCtrlSingal 41} 42 43class VSetFVConfig(cfg: FuConfig)(implicit p: Parameters) extends FuncUnit(cfg) { 44 private val vsetModule = Module(new VsetModule) 45 46 private val flushed = io.in.bits.robIdx.needFlush(io.flush) 47 48 io.out.valid := io.in.valid 49 io.in.ready := io.out.ready 50 51 private val in = io.in.bits 52 private val out = io.out.bits 53 vsetModule.io.src0 := 0.U 54 vsetModule.io.src1 := in.src(1) 55 vsetModule.io.func := in.fuOpType 56 vsetModule.io.oldVConfig := in.src(0) 57 out.data := vsetModule.io.vconfig 58 connectNonPipedCtrlSingal 59}