xref: /XiangShan/src/main/scala/xiangshan/backend/fu/fpu/FpPipedFuncUnit.scala (revision 39be24bce97876599cf209a1e8a822f27651258c)
1517544cdSsinsanctionpackage xiangshan.backend.fu.fpu
2517544cdSsinsanction
3517544cdSsinsanctionimport org.chipsalliance.cde.config.Parameters
4517544cdSsinsanctionimport chisel3._
5517544cdSsinsanctionimport chisel3.util._
6517544cdSsinsanctionimport xiangshan._
7517544cdSsinsanctionimport xiangshan.backend.fu.{FuConfig, FuncUnit, HasPipelineReg}
8517544cdSsinsanction
9517544cdSsinsanctiontrait FpFuncUnitAlias { this: FuncUnit =>
10517544cdSsinsanction  protected val inCtrl  = io.in.bits.ctrl
11517544cdSsinsanction  protected val inData  = io.in.bits.data
12*39be24bcSxiaofeibao  protected val fp_fmt  = inCtrl.fpu.get.fmt
13517544cdSsinsanction
14517544cdSsinsanction  protected val frm     = io.frm.getOrElse(0.U(3.W))
15517544cdSsinsanction  protected val instRm  = inCtrl.fpu.getOrElse(0.U.asTypeOf(new FPUCtrlSignals)).rm
16517544cdSsinsanction  protected val rm      = Mux(instRm =/= "b111".U, instRm, frm)
17517544cdSsinsanction
18517544cdSsinsanction  protected val fuOpType  = inCtrl.fuOpType
19517544cdSsinsanction}
20517544cdSsinsanction
21517544cdSsinsanctionclass FpPipedFuncUnit(cfg: FuConfig)(implicit p: Parameters) extends FuncUnit(cfg)
22517544cdSsinsanction  with HasPipelineReg
23517544cdSsinsanction  with FpFuncUnitAlias
24517544cdSsinsanction{
25517544cdSsinsanction  protected val outCtrl     = ctrlVec.last
26517544cdSsinsanction  protected val outData     = dataVec.last
27517544cdSsinsanction
28517544cdSsinsanction  override def latency: Int = cfg.latency.latencyVal.get
29517544cdSsinsanction
30517544cdSsinsanction}
31