xref: /XiangShan/src/main/scala/top/Generator.scala (revision 5931ace35325a644a12f8ea27830a2de7489e7e7)
1cc358710SLinJiawei/***************************************************************************************
2cc358710SLinJiawei* Copyright (c) 2020-2021 Institute of Computing Technology, Chinese Academy of Sciences
3cc358710SLinJiawei* Copyright (c) 2020-2021 Peng Cheng Laboratory
4cc358710SLinJiawei*
5cc358710SLinJiawei* XiangShan is licensed under Mulan PSL v2.
6cc358710SLinJiawei* You can use this software according to the terms and conditions of the Mulan PSL v2.
7cc358710SLinJiawei* You may obtain a copy of Mulan PSL v2 at:
8cc358710SLinJiawei*          http://license.coscl.org.cn/MulanPSL2
9cc358710SLinJiawei*
10cc358710SLinJiawei* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11cc358710SLinJiawei* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12cc358710SLinJiawei* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
13cc358710SLinJiawei*
14cc358710SLinJiawei* See the Mulan PSL v2 for more details.
15cc358710SLinJiawei***************************************************************************************/
16cc358710SLinJiawei
17cc358710SLinJiaweipackage top
18cc358710SLinJiawei
1951e45dbbSTang Haojinimport circt.stage._
2051e45dbbSTang Haojinimport chisel3.stage.ChiselGeneratorAnnotation
21da50abf9STang Haojinimport xiangshan.types.RunFirrtlTransformAnnotation
22*5931ace3STang Haojinimport xiangshan.transforms._
23cc358710SLinJiawei
24cc358710SLinJiaweiobject Generator {
2551e45dbbSTang Haojin  def execute(args: Array[String], mod: => chisel3.RawModule, firtoolOpts: Array[String]) = {
26084afb77STang Haojin    val annotations = chisel3.BuildInfo.version match {
2751e45dbbSTang Haojin      case "3.6.0" => Seq(
28cc358710SLinJiawei        RunFirrtlTransformAnnotation(new PrintControl),
297f37d55fSTang Haojin        RunFirrtlTransformAnnotation(new PrintModuleName)
3051e45dbbSTang Haojin      )
31084afb77STang Haojin      case _ => Seq(CIRCTTargetAnnotation(CIRCTTarget.Verilog)) ++ firtoolOpts.map(FirtoolOption.apply)
32cc358710SLinJiawei    }
33cc358710SLinJiawei
3451e45dbbSTang Haojin    (new XiangShanStage).execute(args, ChiselGeneratorAnnotation(mod _) +: annotations)
3551e45dbbSTang Haojin  }
36cc358710SLinJiawei}
37