xref: /XiangShan/src/main/scala/xiangshan/backend/fu/wrapper/Alu.scala (revision 83ba63b34cf09b33c0a9e1b3203138e51af4491b)
1package xiangshan.backend.fu.wrapper
2
3import org.chipsalliance.cde.config.Parameters
4import chisel3._
5import xiangshan.backend.fu.{AluDataModule, PipedFuncUnit}
6import xiangshan.backend.fu.FuConfig
7
8class Alu(cfg: FuConfig)(implicit p: Parameters) extends PipedFuncUnit(cfg) {
9  private val aluModule = Module(new AluDataModule)
10
11  private val flushed = io.in.bits.ctrl.robIdx.needFlush(io.flush)
12
13  io.out.valid := io.in.valid
14  io.in.ready := io.out.ready
15
16  private val in = io.in.bits
17  private val out = io.out.bits
18  aluModule.io.src.zip(in.data.src).foreach { case (sink, source) =>
19    sink := source
20  }
21  aluModule.io.func := in.ctrl.fuOpType
22  out.res.data := aluModule.io.result
23}
24