1c6d43980SLemover/*************************************************************************************** 2c6d43980SLemover* Copyright (c) 2020-2021 Institute of Computing Technology, Chinese Academy of Sciences 3c6d43980SLemover* 4c6d43980SLemover* XiangShan is licensed under Mulan PSL v2. 5c6d43980SLemover* You can use this software according to the terms and conditions of the Mulan PSL v2. 6c6d43980SLemover* You may obtain a copy of Mulan PSL v2 at: 7c6d43980SLemover* http://license.coscl.org.cn/MulanPSL2 8c6d43980SLemover* 9c6d43980SLemover* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, 10c6d43980SLemover* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, 11c6d43980SLemover* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. 12c6d43980SLemover* 13c6d43980SLemover* See the Mulan PSL v2 for more details. 14c6d43980SLemover***************************************************************************************/ 15c6d43980SLemover 16718a511dSLinJiaweiimport os.Path 172102afb5SLinJiaweiimport mill._ 18718a511dSLinJiaweiimport scalalib._ 192905e463SZihao Yu 200332e41aSlinjiaweitrait CommonModule extends ScalaModule { 21718a511dSLinJiawei override def scalaVersion = "2.12.10" 220332e41aSlinjiawei 232102afb5SLinJiawei override def scalacOptions = Seq("-Xsource:2.11") 240332e41aSlinjiawei 25718a511dSLinJiawei private val macroParadise = ivy"org.scalamacros:::paradise:2.1.0" 260332e41aSlinjiawei 272102afb5SLinJiawei override def compileIvyDeps = Agg(macroParadise) 280332e41aSlinjiawei 292102afb5SLinJiawei override def scalacPluginIvyDeps = Agg(macroParadise) 302905e463SZihao Yu} 312905e463SZihao Yu 32718a511dSLinJiaweival chisel = Agg( 3396dd1a2cSYinan Xu ivy"edu.berkeley.cs::chisel3:3.4.3" 34718a511dSLinJiawei) 350332e41aSlinjiawei 36718a511dSLinJiaweiobject `api-config-chipsalliance` extends CommonModule { 37718a511dSLinJiawei override def millSourcePath = super.millSourcePath / "design" / "craft" 382102afb5SLinJiawei} 392102afb5SLinJiawei 40718a511dSLinJiaweiobject hardfloat extends SbtModule with CommonModule { 41718a511dSLinJiawei override def millSourcePath = os.pwd / "berkeley-hardfloat" 42718a511dSLinJiawei override def ivyDeps = super.ivyDeps() ++ chisel 432102afb5SLinJiawei} 442102afb5SLinJiawei 45718a511dSLinJiaweiobject `rocket-chip` extends SbtModule with CommonModule { 46718a511dSLinJiawei 47718a511dSLinJiawei override def ivyDeps = super.ivyDeps() ++ Agg( 48718a511dSLinJiawei ivy"${scalaOrganization()}:scala-reflect:${scalaVersion()}", 49718a511dSLinJiawei ivy"org.json4s::json4s-jackson:3.6.1" 50718a511dSLinJiawei ) ++ chisel 51718a511dSLinJiawei 52718a511dSLinJiawei object macros extends SbtModule with CommonModule 53718a511dSLinJiawei 54718a511dSLinJiawei override def moduleDeps = super.moduleDeps ++ Seq( 55718a511dSLinJiawei `api-config-chipsalliance`, macros, hardfloat 56718a511dSLinJiawei ) 57718a511dSLinJiawei 58718a511dSLinJiawei} 59718a511dSLinJiawei 60718a511dSLinJiaweiobject `block-inclusivecache-sifive` extends CommonModule { 61718a511dSLinJiawei override def ivyDeps = super.ivyDeps() ++ chisel 62718a511dSLinJiawei 63718a511dSLinJiawei override def millSourcePath = super.millSourcePath / 'design / 'craft / 'inclusivecache 64718a511dSLinJiawei 65718a511dSLinJiawei override def moduleDeps = super.moduleDeps ++ Seq(`rocket-chip`) 66718a511dSLinJiawei} 67718a511dSLinJiawei 68718a511dSLinJiaweiobject chiseltest extends CommonModule with SbtModule { 69718a511dSLinJiawei override def ivyDeps = super.ivyDeps() ++ Agg( 70718a511dSLinJiawei ivy"edu.berkeley.cs::treadle:1.3.0", 71718a511dSLinJiawei ivy"org.scalatest::scalatest:3.2.0", 72718a511dSLinJiawei ivy"com.lihaoyi::utest:0.7.4" 73718a511dSLinJiawei ) ++ chisel 74718a511dSLinJiawei object test extends Tests { 75718a511dSLinJiawei def ivyDeps = Agg(ivy"org.scalacheck::scalacheck:1.14.3") 76718a511dSLinJiawei def testFrameworks = Seq("org.scalatest.tools.Framework") 77718a511dSLinJiawei } 78718a511dSLinJiawei} 79718a511dSLinJiawei 80718a511dSLinJiawei 812102afb5SLinJiaweiobject XiangShan extends CommonModule with SbtModule { 822102afb5SLinJiawei override def millSourcePath = millOuterCtx.millSourcePath 83718a511dSLinJiawei 84*6f021e01SJiawei Lin override def forkArgs = Seq("-Xmx12G") 85718a511dSLinJiawei 86718a511dSLinJiawei override def ivyDeps = super.ivyDeps() ++ chisel 87c5f31b5bSLinJiawei override def moduleDeps = super.moduleDeps ++ Seq( 88718a511dSLinJiawei `rocket-chip`, 89718a511dSLinJiawei `block-inclusivecache-sifive`, 90718a511dSLinJiawei chiseltest 91c5f31b5bSLinJiawei ) 922905e463SZihao Yu 932905e463SZihao Yu object test extends Tests { 94*6f021e01SJiawei Lin 95*6f021e01SJiawei Lin override def forkArgs = Seq("-Xmx12G") 96*6f021e01SJiawei Lin 97718a511dSLinJiawei override def ivyDeps = super.ivyDeps() ++ Agg( 98718a511dSLinJiawei ivy"org.scalatest::scalatest:3.2.0" 996aea7ec5SLinJiawei ) 100718a511dSLinJiawei 1012102afb5SLinJiawei def testFrameworks = Seq( 1022102afb5SLinJiawei "org.scalatest.tools.Framework" 1032102afb5SLinJiawei ) 104718a511dSLinJiawei 10597f09b80Sljw def testOnly(args: String*) = T.command { 10697f09b80Sljw super.runMain("org.scalatest.tools.Runner", args: _*) 10797f09b80Sljw } 108fc85214eSLinJiawei } 109718a511dSLinJiawei 1102905e463SZihao Yu} 111