12102afb5SLinJiaweiimport os.Path 22102afb5SLinJiaweiimport mill._ 32102afb5SLinJiaweiimport mill.modules.Util 42102afb5SLinJiaweiimport scalalib._ 52905e463SZihao Yuimport coursier.maven.MavenRepository 62905e463SZihao Yu 72905e463SZihao Yuobject CustomZincWorkerModule extends ZincWorkerModule { 8106f2817SLinJiawei def repositories() = super.repositories ++ Seq( 90332e41aSlinjiawei MavenRepository("https://maven.aliyun.com/repository/public"), 100332e41aSlinjiawei MavenRepository("https://maven.aliyun.com/repository/apache-snapshots") 112905e463SZihao Yu ) 122905e463SZihao Yu} 132905e463SZihao Yu 140332e41aSlinjiaweitrait CommonModule extends ScalaModule { 152102afb5SLinJiawei override def scalaVersion = "2.12.10" 160332e41aSlinjiawei 172102afb5SLinJiawei override def scalacOptions = Seq("-Xsource:2.11") 180332e41aSlinjiawei 192102afb5SLinJiawei override def zincWorker = CustomZincWorkerModule 200332e41aSlinjiawei 212102afb5SLinJiawei private val macroParadise = ivy"org.scalamacros:::paradise:2.1.0" 220332e41aSlinjiawei 232102afb5SLinJiawei override def compileIvyDeps = Agg(macroParadise) 240332e41aSlinjiawei 252102afb5SLinJiawei override def scalacPluginIvyDeps = Agg(macroParadise) 262905e463SZihao Yu} 272905e463SZihao Yu 28*c5f31b5bSLinJiaweival chisel = Agg( 29106f2817SLinJiawei ivy"edu.berkeley.cs::chisel3:3.4.0" 300332e41aSlinjiawei) 310332e41aSlinjiawei 32bf3210b9Slinjiaweiobject `rocket-chip` extends SbtModule with CommonModule { 33bf3210b9Slinjiawei 342102afb5SLinJiawei override def ivyDeps = super.ivyDeps() ++ Agg( 352102afb5SLinJiawei ivy"${scalaOrganization()}:scala-reflect:${scalaVersion()}", 362102afb5SLinJiawei ivy"org.json4s::json4s-jackson:3.6.1" 37*c5f31b5bSLinJiawei ) ++ chisel 382102afb5SLinJiawei 392102afb5SLinJiawei 402102afb5SLinJiawei object `api-config-chipsalliance` extends CommonModule { 412102afb5SLinJiawei override def millSourcePath = super.millSourcePath / 'design / 'craft 422102afb5SLinJiawei } 432102afb5SLinJiawei 442102afb5SLinJiawei object macros extends SbtModule with CommonModule 452102afb5SLinJiawei 462102afb5SLinJiawei object hardfloat extends SbtModule with CommonModule { 47*c5f31b5bSLinJiawei override def ivyDeps = super.ivyDeps() ++ chisel 482102afb5SLinJiawei } 492102afb5SLinJiawei 502102afb5SLinJiawei override def moduleDeps = super.moduleDeps ++ Seq( 510332e41aSlinjiawei `api-config-chipsalliance`, macros, hardfloat 522102afb5SLinJiawei ) 532102afb5SLinJiawei 542102afb5SLinJiawei} 552102afb5SLinJiawei 56bf3210b9Slinjiaweiobject `block-inclusivecache-sifive` extends CommonModule { 57*c5f31b5bSLinJiawei override def ivyDeps = super.ivyDeps() ++ chisel 58bf3210b9Slinjiawei 59bf3210b9Slinjiawei override def millSourcePath = super.millSourcePath / 'design / 'craft / 'inclusivecache 60bf3210b9Slinjiawei 61bf3210b9Slinjiawei override def moduleDeps = super.moduleDeps ++ Seq(`rocket-chip`) 62bf3210b9Slinjiawei} 63bf3210b9Slinjiawei 64*c5f31b5bSLinJiaweiobject chiseltest extends CommonModule with SbtModule { 65*c5f31b5bSLinJiawei override def ivyDeps = super.ivyDeps() ++ Agg( 66*c5f31b5bSLinJiawei ivy"edu.berkeley.cs::treadle:1.3.0", 67*c5f31b5bSLinJiawei ivy"org.scalatest::scalatest:3.0.8", 68*c5f31b5bSLinJiawei ivy"com.lihaoyi::utest:0.7.4" 69*c5f31b5bSLinJiawei ) ++ chisel 70*c5f31b5bSLinJiawei object test extends Tests { 71*c5f31b5bSLinJiawei def ivyDeps = Agg(ivy"org.scalacheck::scalacheck:1.14.3") 72*c5f31b5bSLinJiawei def testFrameworks = Seq("org.scalatest.tools.Framework") 73*c5f31b5bSLinJiawei } 74*c5f31b5bSLinJiawei} 75*c5f31b5bSLinJiawei 76bf3210b9Slinjiawei 772102afb5SLinJiaweiobject XiangShan extends CommonModule with SbtModule { 782102afb5SLinJiawei override def millSourcePath = millOuterCtx.millSourcePath 790332e41aSlinjiawei 802102afb5SLinJiawei override def forkArgs = Seq("-Xmx10G") 810332e41aSlinjiawei 822102afb5SLinJiawei override def ivyDeps = super.ivyDeps() ++ Agg( 83106f2817SLinJiawei ivy"edu.berkeley.cs::chisel3:3.4.0-RC3" 842905e463SZihao Yu ) 850332e41aSlinjiawei 86*c5f31b5bSLinJiawei override def moduleDeps = super.moduleDeps ++ Seq( 87*c5f31b5bSLinJiawei `rocket-chip`, 88*c5f31b5bSLinJiawei `block-inclusivecache-sifive`, 89*c5f31b5bSLinJiawei chiseltest 90*c5f31b5bSLinJiawei ) 912905e463SZihao Yu 922905e463SZihao Yu object test extends Tests { 932102afb5SLinJiawei override def ivyDeps = super.ivyDeps() ++ Agg( 946aea7ec5SLinJiawei ivy"org.scalatest::scalatest:3.0.4", 952209d540SLinJiawei ivy"edu.berkeley.cs::chisel-iotesters:1.2+", 966aea7ec5SLinJiawei ) 972102afb5SLinJiawei 982102afb5SLinJiawei def testFrameworks = Seq( 992102afb5SLinJiawei "org.scalatest.tools.Framework" 1002102afb5SLinJiawei ) 1012102afb5SLinJiawei 102fc85214eSLinJiawei def testOnly(args: String*) = T.command { 103fc85214eSLinJiawei super.runMain("org.scalatest.tools.Runner", args: _*) 104fc85214eSLinJiawei } 1052905e463SZihao Yu } 1062905e463SZihao Yu 1072905e463SZihao Yu} 1082905e463SZihao Yu 109