151981c77SbugGeneratorpackage xiangshan 251981c77SbugGenerator 351981c77SbugGeneratorimport chisel3._ 451981c77SbugGeneratorimport chisel3.stage._ 551981c77SbugGeneratorimport chiseltest._ 651981c77SbugGeneratorimport chiseltest.ChiselScalatestTester 751981c77SbugGeneratorimport chiseltest.VerilatorBackendAnnotation 851981c77SbugGeneratorimport chiseltest.simulator.{VerilatorFlags, VerilatorCFlags} 9876196b7SMaxpicca-Liimport freechips.rocketchip.util.HasRocketChipStageUtils 1051981c77SbugGeneratorimport org.scalatest.flatspec.AnyFlatSpec 1151981c77SbugGeneratorimport org.scalatest.matchers.must.Matchers 1251981c77SbugGeneratorimport firrtl.stage.RunFirrtlTransformAnnotation 1351981c77SbugGeneratorimport xstransforms.PrintModuleName 1451981c77SbugGeneratorimport firrtl.options.TargetDirAnnotation 1551981c77SbugGeneratorimport top.ArgParser 16876196b7SMaxpicca-Liimport utility.FileRegisters 1751981c77SbugGeneratorimport xiangshan.backend.decode.DecodeUnit 1851981c77SbugGenerator 1951981c77SbugGeneratorobject DecodeMain extends App with HasRocketChipStageUtils { 2051981c77SbugGenerator override def main(args: Array[String]): Unit = { 21*b665b650STang Haojin val (config, firrtlOpts, firrtlComplier, firtoolOpts) = ArgParser.parse(args) 2251981c77SbugGenerator // //val soc = DisableMonitors(p => LazyModule(new XSTop()(p)))(config) 2351981c77SbugGenerator // If Complex Params are needed, wrap it with a Top Module to do dirty works, 2451981c77SbugGenerator // and use "chisel3.aop.Select.collectDeep[ModuleWanted](WrapperModule){case a: ModuleWanted => a}.head.Params" 2551981c77SbugGenerator val defaultConfig = config.alterPartial({ 2651981c77SbugGenerator // Get XSCoreParams and pass it to the "small module" 2751981c77SbugGenerator case XSCoreParamsKey => config(XSTileKey).head.copy( 2851981c77SbugGenerator // Example of how to change params 2951981c77SbugGenerator IssQueSize = 12 3051981c77SbugGenerator ) 3151981c77SbugGenerator }) 3251981c77SbugGenerator (new ChiselStage).execute(args, Seq( 3351981c77SbugGenerator ChiselGeneratorAnnotation(() => new DecodeUnit()(defaultConfig) 3451981c77SbugGenerator ))) 3551981c77SbugGenerator// // Generate files when compiling. Used by ChiselDB. 36876196b7SMaxpicca-Li// FileRegisters.write("./build") 3751981c77SbugGenerator } 3851981c77SbugGenerator} 3951981c77SbugGenerator 4051981c77SbugGeneratorclass DecodeUnitTest extends XSTester { 4151981c77SbugGenerator behavior of "DecodeUnit" 4251981c77SbugGenerator it should "pass" in { 4351981c77SbugGenerator test(new DecodeUnit()(config)).withAnnotations(Seq( 4451981c77SbugGenerator VerilatorBackendAnnotation, 4551981c77SbugGenerator VerilatorFlags(Seq()), 4651981c77SbugGenerator WriteVcdAnnotation, 4751981c77SbugGenerator TargetDirAnnotation("./build"), 4851981c77SbugGenerator RunFirrtlTransformAnnotation(new PrintModuleName) 4951981c77SbugGenerator )){ dut => 5051981c77SbugGenerator dut.clock.step(10) 5151981c77SbugGenerator } 5251981c77SbugGenerator } 5351981c77SbugGenerator}