1package xiangshan 2 3import chisel3._ 4import chiseltest._ 5import chiseltest.{VerilatorBackendAnnotation, WriteVcdAnnotation} 6import chiseltest.simulator.{VerilatorCFlags, VerilatorFlags} 7import firrtl.AnnotationSeq 8import firrtl.stage.RunFirrtlTransformAnnotation 9import org.scalatest.flatspec._ 10import org.scalatest.matchers.should._ 11import top.{ArgParser, DefaultConfig} 12import xiangshan.backend.regfile.IntPregParams 13 14abstract class XSTester extends AnyFlatSpec with ChiselScalatestTester with Matchers with HasTestAnnos { 15 behavior of "XiangShan Module" 16 val defaultConfig = (new DefaultConfig) 17 implicit val config = defaultConfig.alterPartial({ 18 // Get XSCoreParams and pass it to the "small module" 19 case XSCoreParamsKey => defaultConfig(XSTileKey).head.copy( 20 // Example of how to change params 21 intPreg = IntPregParams( 22 numEntries = 64, 23 numRead = Some(14), 24 numWrite = Some(8), 25 ), 26 ) 27 }) 28} 29 30trait HasTestAnnos { 31 var testAnnos: AnnotationSeq = Seq() 32} 33 34trait DumpVCD { this: HasTestAnnos => 35 testAnnos = testAnnos :+ WriteVcdAnnotation 36} 37 38trait UseVerilatorBackend { this: HasTestAnnos => 39 testAnnos = testAnnos ++ Seq(VerilatorBackendAnnotation) 40}