1c6d43980SLemover/*************************************************************************************** 2c6d43980SLemover* Copyright (c) 2020-2021 Institute of Computing Technology, Chinese Academy of Sciences 3*f320e0f0SYinan Xu* Copyright (c) 2020-2021 Peng Cheng Laboratory 4c6d43980SLemover* 5c6d43980SLemover* XiangShan is licensed under Mulan PSL v2. 6c6d43980SLemover* You can use this software according to the terms and conditions of the Mulan PSL v2. 7c6d43980SLemover* You may obtain a copy of Mulan PSL v2 at: 8c6d43980SLemover* http://license.coscl.org.cn/MulanPSL2 9c6d43980SLemover* 10c6d43980SLemover* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, 11c6d43980SLemover* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, 12c6d43980SLemover* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. 13c6d43980SLemover* 14c6d43980SLemover* See the Mulan PSL v2 for more details. 15c6d43980SLemover***************************************************************************************/ 16c6d43980SLemover 17718a511dSLinJiaweiimport os.Path 182102afb5SLinJiaweiimport mill._ 19718a511dSLinJiaweiimport scalalib._ 202905e463SZihao Yu 210332e41aSlinjiaweitrait CommonModule extends ScalaModule { 22718a511dSLinJiawei override def scalaVersion = "2.12.10" 230332e41aSlinjiawei 242102afb5SLinJiawei override def scalacOptions = Seq("-Xsource:2.11") 250332e41aSlinjiawei 26718a511dSLinJiawei private val macroParadise = ivy"org.scalamacros:::paradise:2.1.0" 270332e41aSlinjiawei 282102afb5SLinJiawei override def compileIvyDeps = Agg(macroParadise) 290332e41aSlinjiawei 302102afb5SLinJiawei override def scalacPluginIvyDeps = Agg(macroParadise) 312905e463SZihao Yu} 322905e463SZihao Yu 33718a511dSLinJiaweival chisel = Agg( 3496dd1a2cSYinan Xu ivy"edu.berkeley.cs::chisel3:3.4.3" 35718a511dSLinJiawei) 360332e41aSlinjiawei 37718a511dSLinJiaweiobject `api-config-chipsalliance` extends CommonModule { 38718a511dSLinJiawei override def millSourcePath = super.millSourcePath / "design" / "craft" 392102afb5SLinJiawei} 402102afb5SLinJiawei 41718a511dSLinJiaweiobject hardfloat extends SbtModule with CommonModule { 42718a511dSLinJiawei override def millSourcePath = os.pwd / "berkeley-hardfloat" 43718a511dSLinJiawei override def ivyDeps = super.ivyDeps() ++ chisel 442102afb5SLinJiawei} 452102afb5SLinJiawei 46718a511dSLinJiaweiobject `rocket-chip` extends SbtModule with CommonModule { 47718a511dSLinJiawei 48718a511dSLinJiawei override def ivyDeps = super.ivyDeps() ++ Agg( 49718a511dSLinJiawei ivy"${scalaOrganization()}:scala-reflect:${scalaVersion()}", 50718a511dSLinJiawei ivy"org.json4s::json4s-jackson:3.6.1" 51718a511dSLinJiawei ) ++ chisel 52718a511dSLinJiawei 53718a511dSLinJiawei object macros extends SbtModule with CommonModule 54718a511dSLinJiawei 55718a511dSLinJiawei override def moduleDeps = super.moduleDeps ++ Seq( 56718a511dSLinJiawei `api-config-chipsalliance`, macros, hardfloat 57718a511dSLinJiawei ) 58718a511dSLinJiawei 59718a511dSLinJiawei} 60718a511dSLinJiawei 61718a511dSLinJiaweiobject `block-inclusivecache-sifive` extends CommonModule { 62718a511dSLinJiawei override def ivyDeps = super.ivyDeps() ++ chisel 63718a511dSLinJiawei 64718a511dSLinJiawei override def millSourcePath = super.millSourcePath / 'design / 'craft / 'inclusivecache 65718a511dSLinJiawei 66718a511dSLinJiawei override def moduleDeps = super.moduleDeps ++ Seq(`rocket-chip`) 67718a511dSLinJiawei} 68718a511dSLinJiawei 69718a511dSLinJiaweiobject chiseltest extends CommonModule with SbtModule { 70718a511dSLinJiawei override def ivyDeps = super.ivyDeps() ++ Agg( 71718a511dSLinJiawei ivy"edu.berkeley.cs::treadle:1.3.0", 72718a511dSLinJiawei ivy"org.scalatest::scalatest:3.2.0", 73718a511dSLinJiawei ivy"com.lihaoyi::utest:0.7.4" 74718a511dSLinJiawei ) ++ chisel 75718a511dSLinJiawei object test extends Tests { 76718a511dSLinJiawei def ivyDeps = Agg(ivy"org.scalacheck::scalacheck:1.14.3") 77718a511dSLinJiawei def testFrameworks = Seq("org.scalatest.tools.Framework") 78718a511dSLinJiawei } 79718a511dSLinJiawei} 80718a511dSLinJiawei 81718a511dSLinJiawei 822102afb5SLinJiaweiobject XiangShan extends CommonModule with SbtModule { 832102afb5SLinJiawei override def millSourcePath = millOuterCtx.millSourcePath 84718a511dSLinJiawei 8595a542e1SYinan Xu override def forkArgs = Seq("-Xmx64G") 86718a511dSLinJiawei 87718a511dSLinJiawei override def ivyDeps = super.ivyDeps() ++ chisel 88c5f31b5bSLinJiawei override def moduleDeps = super.moduleDeps ++ Seq( 89718a511dSLinJiawei `rocket-chip`, 90718a511dSLinJiawei `block-inclusivecache-sifive`, 91718a511dSLinJiawei chiseltest 92c5f31b5bSLinJiawei ) 932905e463SZihao Yu 942905e463SZihao Yu object test extends Tests { 956f021e01SJiawei Lin 9695a542e1SYinan Xu override def forkArgs = Seq("-Xmx64G") 976f021e01SJiawei Lin 98718a511dSLinJiawei override def ivyDeps = super.ivyDeps() ++ Agg( 99718a511dSLinJiawei ivy"org.scalatest::scalatest:3.2.0" 1006aea7ec5SLinJiawei ) 101718a511dSLinJiawei 1022102afb5SLinJiawei def testFrameworks = Seq( 1032102afb5SLinJiawei "org.scalatest.tools.Framework" 1042102afb5SLinJiawei ) 105fc85214eSLinJiawei } 106718a511dSLinJiawei 1072905e463SZihao Yu} 108