1*718a511dSLinJiaweiimport os.Path 22102afb5SLinJiaweiimport mill._ 32102afb5SLinJiaweiimport mill.modules.Util 4917276a0SJiuyang liuimport $ivy.`com.lihaoyi::mill-contrib-buildinfo:$MILL_VERSION` 5917276a0SJiuyang liuimport $ivy.`com.lihaoyi::mill-contrib-bsp:$MILL_VERSION` 6917276a0SJiuyang liuimport mill.contrib.buildinfo.BuildInfo 7*718a511dSLinJiaweiimport scalalib._ 8*718a511dSLinJiaweiimport coursier.maven.MavenRepository 92905e463SZihao Yu 10*718a511dSLinJiaweiobject CustomZincWorkerModule extends ZincWorkerModule { 11*718a511dSLinJiawei def repositories() = super.repositories ++ Seq( 12*718a511dSLinJiawei MavenRepository("https://maven.aliyun.com/repository/public"), 13*718a511dSLinJiawei MavenRepository("https://maven.aliyun.com/repository/apache-snapshots") 14*718a511dSLinJiawei ) 152905e463SZihao Yu} 162905e463SZihao Yu 170332e41aSlinjiaweitrait CommonModule extends ScalaModule { 18*718a511dSLinJiawei override def scalaVersion = "2.12.10" 190332e41aSlinjiawei 202102afb5SLinJiawei override def scalacOptions = Seq("-Xsource:2.11") 210332e41aSlinjiawei 22*718a511dSLinJiawei override def zincWorker = CustomZincWorkerModule 230332e41aSlinjiawei 24*718a511dSLinJiawei private val macroParadise = ivy"org.scalamacros:::paradise:2.1.0" 250332e41aSlinjiawei 262102afb5SLinJiawei override def compileIvyDeps = Agg(macroParadise) 270332e41aSlinjiawei 282102afb5SLinJiawei override def scalacPluginIvyDeps = Agg(macroParadise) 292905e463SZihao Yu} 302905e463SZihao Yu 31*718a511dSLinJiaweival chisel = Agg( 32*718a511dSLinJiawei ivy"edu.berkeley.cs::chisel3:3.4.0" 33*718a511dSLinJiawei) 340332e41aSlinjiawei 35*718a511dSLinJiaweiobject `api-config-chipsalliance` extends CommonModule { 36*718a511dSLinJiawei override def millSourcePath = super.millSourcePath / "design" / "craft" 372102afb5SLinJiawei} 382102afb5SLinJiawei 39*718a511dSLinJiaweiobject hardfloat extends SbtModule with CommonModule { 40*718a511dSLinJiawei override def millSourcePath = os.pwd / "berkeley-hardfloat" 41*718a511dSLinJiawei override def ivyDeps = super.ivyDeps() ++ chisel 422102afb5SLinJiawei} 432102afb5SLinJiawei 44*718a511dSLinJiaweiobject `rocket-chip` extends SbtModule with CommonModule { 45*718a511dSLinJiawei 46*718a511dSLinJiawei override def ivyDeps = super.ivyDeps() ++ Agg( 47*718a511dSLinJiawei ivy"${scalaOrganization()}:scala-reflect:${scalaVersion()}", 48*718a511dSLinJiawei ivy"org.json4s::json4s-jackson:3.6.1" 49*718a511dSLinJiawei ) ++ chisel 50*718a511dSLinJiawei 51*718a511dSLinJiawei object macros extends SbtModule with CommonModule 52*718a511dSLinJiawei 53*718a511dSLinJiawei override def moduleDeps = super.moduleDeps ++ Seq( 54*718a511dSLinJiawei `api-config-chipsalliance`, macros, hardfloat 55*718a511dSLinJiawei ) 56*718a511dSLinJiawei 57*718a511dSLinJiawei} 58*718a511dSLinJiawei 59*718a511dSLinJiaweiobject `block-inclusivecache-sifive` extends CommonModule { 60*718a511dSLinJiawei override def ivyDeps = super.ivyDeps() ++ chisel 61*718a511dSLinJiawei 62*718a511dSLinJiawei override def millSourcePath = super.millSourcePath / 'design / 'craft / 'inclusivecache 63*718a511dSLinJiawei 64*718a511dSLinJiawei override def moduleDeps = super.moduleDeps ++ Seq(`rocket-chip`) 65*718a511dSLinJiawei} 66*718a511dSLinJiawei 67*718a511dSLinJiaweiobject chiseltest extends CommonModule with SbtModule { 68*718a511dSLinJiawei override def ivyDeps = super.ivyDeps() ++ Agg( 69*718a511dSLinJiawei ivy"edu.berkeley.cs::treadle:1.3.0", 70*718a511dSLinJiawei ivy"org.scalatest::scalatest:3.2.0", 71*718a511dSLinJiawei ivy"com.lihaoyi::utest:0.7.4" 72*718a511dSLinJiawei ) ++ chisel 73*718a511dSLinJiawei object test extends Tests { 74*718a511dSLinJiawei def ivyDeps = Agg(ivy"org.scalacheck::scalacheck:1.14.3") 75*718a511dSLinJiawei def testFrameworks = Seq("org.scalatest.tools.Framework") 76*718a511dSLinJiawei } 77*718a511dSLinJiawei} 78*718a511dSLinJiawei 79*718a511dSLinJiawei 802102afb5SLinJiaweiobject XiangShan extends CommonModule with SbtModule { 812102afb5SLinJiawei override def millSourcePath = millOuterCtx.millSourcePath 82*718a511dSLinJiawei 832102afb5SLinJiawei override def forkArgs = Seq("-Xmx10G") 84*718a511dSLinJiawei 85*718a511dSLinJiawei override def ivyDeps = super.ivyDeps() ++ chisel 86c5f31b5bSLinJiawei override def moduleDeps = super.moduleDeps ++ Seq( 87*718a511dSLinJiawei `rocket-chip`, 88*718a511dSLinJiawei `block-inclusivecache-sifive`, 89*718a511dSLinJiawei chiseltest 90c5f31b5bSLinJiawei ) 912905e463SZihao Yu 922905e463SZihao Yu object test extends Tests { 93*718a511dSLinJiawei override def ivyDeps = super.ivyDeps() ++ Agg( 94*718a511dSLinJiawei ivy"org.scalatest::scalatest:3.2.0" 956aea7ec5SLinJiawei ) 96*718a511dSLinJiawei 972102afb5SLinJiawei def testFrameworks = Seq( 982102afb5SLinJiawei "org.scalatest.tools.Framework" 992102afb5SLinJiawei ) 100*718a511dSLinJiawei 10197f09b80Sljw def testOnly(args: String*) = T.command { 10297f09b80Sljw super.runMain("org.scalatest.tools.Runner", args: _*) 10397f09b80Sljw } 104fc85214eSLinJiawei } 105*718a511dSLinJiawei 1062905e463SZihao Yu}