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