1import os.Path 2import mill._ 3import scalalib._ 4 5trait CommonModule extends ScalaModule { 6 override def scalaVersion = "2.12.10" 7 8 override def scalacOptions = Seq("-Xsource:2.11") 9 10 private val macroParadise = ivy"org.scalamacros:::paradise:2.1.0" 11 12 override def compileIvyDeps = Agg(macroParadise) 13 14 override def scalacPluginIvyDeps = Agg(macroParadise) 15} 16 17val chisel = Agg( 18 ivy"edu.berkeley.cs::chisel3:3.4.3" 19) 20 21object `api-config-chipsalliance` extends CommonModule { 22 override def millSourcePath = super.millSourcePath / "design" / "craft" 23} 24 25object hardfloat extends SbtModule with CommonModule { 26 override def millSourcePath = os.pwd / "berkeley-hardfloat" 27 override def ivyDeps = super.ivyDeps() ++ chisel 28} 29 30object `rocket-chip` extends SbtModule with CommonModule { 31 32 override def ivyDeps = super.ivyDeps() ++ Agg( 33 ivy"${scalaOrganization()}:scala-reflect:${scalaVersion()}", 34 ivy"org.json4s::json4s-jackson:3.6.1" 35 ) ++ chisel 36 37 object macros extends SbtModule with CommonModule 38 39 override def moduleDeps = super.moduleDeps ++ Seq( 40 `api-config-chipsalliance`, macros, hardfloat 41 ) 42 43} 44 45object `block-inclusivecache-sifive` extends CommonModule { 46 override def ivyDeps = super.ivyDeps() ++ chisel 47 48 override def millSourcePath = super.millSourcePath / 'design / 'craft / 'inclusivecache 49 50 override def moduleDeps = super.moduleDeps ++ Seq(`rocket-chip`) 51} 52 53object chiseltest extends CommonModule with SbtModule { 54 override def ivyDeps = super.ivyDeps() ++ Agg( 55 ivy"edu.berkeley.cs::treadle:1.3.0", 56 ivy"org.scalatest::scalatest:3.2.0", 57 ivy"com.lihaoyi::utest:0.7.4" 58 ) ++ chisel 59 object test extends Tests { 60 def ivyDeps = Agg(ivy"org.scalacheck::scalacheck:1.14.3") 61 def testFrameworks = Seq("org.scalatest.tools.Framework") 62 } 63} 64 65 66object XiangShan extends CommonModule with SbtModule { 67 override def millSourcePath = millOuterCtx.millSourcePath 68 69 override def forkArgs = Seq("-Xmx10G") 70 71 override def ivyDeps = super.ivyDeps() ++ chisel 72 override def moduleDeps = super.moduleDeps ++ Seq( 73 `rocket-chip`, 74 `block-inclusivecache-sifive`, 75 chiseltest 76 ) 77 78 object test extends Tests { 79 override def ivyDeps = super.ivyDeps() ++ Agg( 80 ivy"org.scalatest::scalatest:3.2.0" 81 ) 82 83 def testFrameworks = Seq( 84 "org.scalatest.tools.Framework" 85 ) 86 87 def testOnly(args: String*) = T.command { 88 super.runMain("org.scalatest.tools.Runner", args: _*) 89 } 90 } 91 92} 93