xref: /XiangShan/src/main/scala/xiangshan/backend/fu/wrapper/Alu.scala (revision 83ba63b34cf09b33c0a9e1b3203138e51af4491b)
1730cfbc0SXuan Hupackage xiangshan.backend.fu.wrapper
2730cfbc0SXuan Hu
3*83ba63b3SXuan Huimport org.chipsalliance.cde.config.Parameters
4730cfbc0SXuan Huimport chisel3._
578115a00SXuan Huimport xiangshan.backend.fu.{AluDataModule, PipedFuncUnit}
6730cfbc0SXuan Huimport xiangshan.backend.fu.FuConfig
7730cfbc0SXuan Hu
878115a00SXuan Huclass Alu(cfg: FuConfig)(implicit p: Parameters) extends PipedFuncUnit(cfg) {
9730cfbc0SXuan Hu  private val aluModule = Module(new AluDataModule)
10730cfbc0SXuan Hu
116a35d972SXuan Hu  private val flushed = io.in.bits.ctrl.robIdx.needFlush(io.flush)
12730cfbc0SXuan Hu
13730cfbc0SXuan Hu  io.out.valid := io.in.valid
14730cfbc0SXuan Hu  io.in.ready := io.out.ready
15730cfbc0SXuan Hu
16730cfbc0SXuan Hu  private val in = io.in.bits
17730cfbc0SXuan Hu  private val out = io.out.bits
18*83ba63b3SXuan Hu  aluModule.io.src.zip(in.data.src).foreach { case (sink, source) =>
19*83ba63b3SXuan Hu    sink := source
20*83ba63b3SXuan Hu  }
216a35d972SXuan Hu  aluModule.io.func := in.ctrl.fuOpType
226a35d972SXuan Hu  out.res.data := aluModule.io.result
23730cfbc0SXuan Hu}
24