1c6d43980SLemover/*************************************************************************************** 2c6d43980SLemover* Copyright (c) 2020-2021 Institute of Computing Technology, Chinese Academy of Sciences 3f320e0f0SYinan 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._ 20*c21bff99SJiawei Linimport coursier.maven.MavenRepository 212905e463SZihao Yu 220332e41aSlinjiaweitrait CommonModule extends ScalaModule { 23718a511dSLinJiawei override def scalaVersion = "2.12.10" 240332e41aSlinjiawei 252102afb5SLinJiawei override def scalacOptions = Seq("-Xsource:2.11") 260332e41aSlinjiawei 27718a511dSLinJiawei private val macroParadise = ivy"org.scalamacros:::paradise:2.1.0" 280332e41aSlinjiawei 292102afb5SLinJiawei override def compileIvyDeps = Agg(macroParadise) 300332e41aSlinjiawei 312102afb5SLinJiawei override def scalacPluginIvyDeps = Agg(macroParadise) 32*c21bff99SJiawei Lin 33*c21bff99SJiawei Lin override def repositoriesTask = T.task { 34*c21bff99SJiawei Lin super.repositoriesTask() ++ Seq( 35*c21bff99SJiawei Lin MavenRepository("https://oss.sonatype.org/content/repositories/snapshots") 36*c21bff99SJiawei Lin ) 37*c21bff99SJiawei Lin } 38*c21bff99SJiawei Lin 392905e463SZihao Yu} 402905e463SZihao Yu 41718a511dSLinJiaweival chisel = Agg( 42*c21bff99SJiawei Lin ivy"edu.berkeley.cs::chisel3:3.5-SNAPSHOT" 43718a511dSLinJiawei) 440332e41aSlinjiawei 45718a511dSLinJiaweiobject `api-config-chipsalliance` extends CommonModule { 46718a511dSLinJiawei override def millSourcePath = super.millSourcePath / "design" / "craft" 472102afb5SLinJiawei} 482102afb5SLinJiawei 49718a511dSLinJiaweiobject hardfloat extends SbtModule with CommonModule { 50718a511dSLinJiawei override def millSourcePath = os.pwd / "berkeley-hardfloat" 51718a511dSLinJiawei override def ivyDeps = super.ivyDeps() ++ chisel 522102afb5SLinJiawei} 532102afb5SLinJiawei 54718a511dSLinJiaweiobject `rocket-chip` extends SbtModule with CommonModule { 55718a511dSLinJiawei 56718a511dSLinJiawei override def ivyDeps = super.ivyDeps() ++ Agg( 57718a511dSLinJiawei ivy"${scalaOrganization()}:scala-reflect:${scalaVersion()}", 58718a511dSLinJiawei ivy"org.json4s::json4s-jackson:3.6.1" 59718a511dSLinJiawei ) ++ chisel 60718a511dSLinJiawei 61718a511dSLinJiawei object macros extends SbtModule with CommonModule 62718a511dSLinJiawei 63718a511dSLinJiawei override def moduleDeps = super.moduleDeps ++ Seq( 64718a511dSLinJiawei `api-config-chipsalliance`, macros, hardfloat 65718a511dSLinJiawei ) 66718a511dSLinJiawei 67718a511dSLinJiawei} 68718a511dSLinJiawei 69718a511dSLinJiaweiobject `block-inclusivecache-sifive` extends CommonModule { 70718a511dSLinJiawei override def ivyDeps = super.ivyDeps() ++ chisel 71718a511dSLinJiawei 72718a511dSLinJiawei override def millSourcePath = super.millSourcePath / 'design / 'craft / 'inclusivecache 73718a511dSLinJiawei 74718a511dSLinJiawei override def moduleDeps = super.moduleDeps ++ Seq(`rocket-chip`) 75718a511dSLinJiawei} 76718a511dSLinJiawei 77718a511dSLinJiaweiobject chiseltest extends CommonModule with SbtModule { 78718a511dSLinJiawei override def ivyDeps = super.ivyDeps() ++ Agg( 79718a511dSLinJiawei ivy"edu.berkeley.cs::treadle:1.3.0", 80718a511dSLinJiawei ivy"org.scalatest::scalatest:3.2.0", 81718a511dSLinJiawei ivy"com.lihaoyi::utest:0.7.4" 82718a511dSLinJiawei ) ++ chisel 83718a511dSLinJiawei object test extends Tests { 84718a511dSLinJiawei def ivyDeps = Agg(ivy"org.scalacheck::scalacheck:1.14.3") 85718a511dSLinJiawei def testFrameworks = Seq("org.scalatest.tools.Framework") 86718a511dSLinJiawei } 87718a511dSLinJiawei} 88718a511dSLinJiawei 89a3e87608SWilliam Wangobject difftest extends SbtModule with CommonModule { 90a3e87608SWilliam Wang override def millSourcePath = os.pwd / "difftest" 91a3e87608SWilliam Wang override def ivyDeps = super.ivyDeps() ++ chisel 92a3e87608SWilliam Wang} 93718a511dSLinJiawei 942102afb5SLinJiaweiobject XiangShan extends CommonModule with SbtModule { 952102afb5SLinJiawei override def millSourcePath = millOuterCtx.millSourcePath 96718a511dSLinJiawei 978b8e745dSYikeZhou override def forkArgs = Seq("-Xmx64G", "-Xss256m") 98718a511dSLinJiawei 99718a511dSLinJiawei override def ivyDeps = super.ivyDeps() ++ chisel 100c5f31b5bSLinJiawei override def moduleDeps = super.moduleDeps ++ Seq( 101718a511dSLinJiawei `rocket-chip`, 102718a511dSLinJiawei `block-inclusivecache-sifive`, 103a3e87608SWilliam Wang chiseltest, 104a3e87608SWilliam Wang difftest 105c5f31b5bSLinJiawei ) 1062905e463SZihao Yu 1072905e463SZihao Yu object test extends Tests { 1086f021e01SJiawei Lin 1098b8e745dSYikeZhou override def forkArgs = Seq("-Xmx64G", "-Xss256m") 1106f021e01SJiawei Lin 111718a511dSLinJiawei override def ivyDeps = super.ivyDeps() ++ Agg( 112718a511dSLinJiawei ivy"org.scalatest::scalatest:3.2.0" 1136aea7ec5SLinJiawei ) 114718a511dSLinJiawei 1152102afb5SLinJiawei def testFrameworks = Seq( 1162102afb5SLinJiawei "org.scalatest.tools.Framework" 1172102afb5SLinJiawei ) 118fc85214eSLinJiawei } 119718a511dSLinJiawei 1202905e463SZihao Yu} 121