xref: /XiangShan/src/test/scala/xiangshan/utils/GenPipeWithFlush.scala (revision 6ce1096467c77f9a13c9ea0e57b870cd1fb67270)
13a76b099SXuan Hupackage xiangshan.utils
23a76b099SXuan Hu
33a76b099SXuan Huimport chisel3.emitVerilog
43a76b099SXuan Huimport chisel3.util.ValidIO
53a76b099SXuan Huimport top.ArgParser
63a76b099SXuan Huimport utils.PipeWithFlush
73a76b099SXuan Huimport xiangshan.{Redirect, XSCoreParamsKey, XSTileKey}
83a76b099SXuan Huimport xiangshan.backend.Bundles.DynInst
93a76b099SXuan Hu
103a76b099SXuan Huobject GenPipeWithFlush extends App {
113a76b099SXuan Hu  println("Generating the VerilogPipeWithFlush hardware")
12*6ce10964SXuan Hu  val (config, firrtlOpts, firtoolOpts) = ArgParser.parse(args)
133a76b099SXuan Hu  val p = config.alterPartial({ case XSCoreParamsKey => config(XSTileKey).head })
143a76b099SXuan Hu
153a76b099SXuan Hu  emitVerilog(
163a76b099SXuan Hu    new PipeWithFlush[DynInst, ValidIO[Redirect]](
173a76b099SXuan Hu      new DynInst()(p),
183a76b099SXuan Hu      ValidIO(new Redirect()(p)),
193a76b099SXuan Hu      2,
20493a9370SHaojin Tang      (dynInst: DynInst, flush: ValidIO[Redirect], stage: Int) => dynInst.robIdx.needFlush(flush)
213a76b099SXuan Hu    ),
223a76b099SXuan Hu    Array("--target-dir", "build/vifu"))
233a76b099SXuan Hu}
24