1/*************************************************************************************** 2* Copyright (c) 2020-2021 Institute of Computing Technology, Chinese Academy of Sciences 3* Copyright (c) 2020-2021 Peng Cheng Laboratory 4* 5* XiangShan is licensed under Mulan PSL v2. 6* You can use this software according to the terms and conditions of the Mulan PSL v2. 7* You may obtain a copy of Mulan PSL v2 at: 8* http://license.coscl.org.cn/MulanPSL2 9* 10* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, 11* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, 12* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. 13* 14* See the Mulan PSL v2 for more details. 15***************************************************************************************/ 16 17import os.Path 18import mill._ 19import scalalib._ 20 21trait CommonModule extends ScalaModule { 22 override def scalaVersion = "2.12.10" 23 24 override def scalacOptions = Seq("-Xsource:2.11") 25 26 private val macroParadise = ivy"org.scalamacros:::paradise:2.1.0" 27 28 override def compileIvyDeps = Agg(macroParadise) 29 30 override def scalacPluginIvyDeps = Agg(macroParadise) 31} 32 33val chisel = Agg( 34 ivy"edu.berkeley.cs::chisel3:3.4.3" 35) 36 37object `api-config-chipsalliance` extends CommonModule { 38 override def millSourcePath = super.millSourcePath / "design" / "craft" 39} 40 41object hardfloat extends SbtModule with CommonModule { 42 override def millSourcePath = os.pwd / "berkeley-hardfloat" 43 override def ivyDeps = super.ivyDeps() ++ chisel 44} 45 46object `rocket-chip` extends SbtModule with CommonModule { 47 48 override def ivyDeps = super.ivyDeps() ++ Agg( 49 ivy"${scalaOrganization()}:scala-reflect:${scalaVersion()}", 50 ivy"org.json4s::json4s-jackson:3.6.1" 51 ) ++ chisel 52 53 object macros extends SbtModule with CommonModule 54 55 override def moduleDeps = super.moduleDeps ++ Seq( 56 `api-config-chipsalliance`, macros, hardfloat 57 ) 58 59} 60 61object `block-inclusivecache-sifive` extends CommonModule { 62 override def ivyDeps = super.ivyDeps() ++ chisel 63 64 override def millSourcePath = super.millSourcePath / 'design / 'craft / 'inclusivecache 65 66 override def moduleDeps = super.moduleDeps ++ Seq(`rocket-chip`) 67} 68 69object chiseltest extends CommonModule with SbtModule { 70 override def ivyDeps = super.ivyDeps() ++ Agg( 71 ivy"edu.berkeley.cs::treadle:1.3.0", 72 ivy"org.scalatest::scalatest:3.2.0", 73 ivy"com.lihaoyi::utest:0.7.4" 74 ) ++ chisel 75 object test extends Tests { 76 def ivyDeps = Agg(ivy"org.scalacheck::scalacheck:1.14.3") 77 def testFrameworks = Seq("org.scalatest.tools.Framework") 78 } 79} 80 81 82object XiangShan extends CommonModule with SbtModule { 83 override def millSourcePath = millOuterCtx.millSourcePath 84 85 override def forkArgs = Seq("-Xmx64G") 86 87 override def ivyDeps = super.ivyDeps() ++ chisel 88 override def moduleDeps = super.moduleDeps ++ Seq( 89 `rocket-chip`, 90 `block-inclusivecache-sifive`, 91 chiseltest 92 ) 93 94 object test extends Tests { 95 96 override def forkArgs = Seq("-Xmx64G") 97 98 override def ivyDeps = super.ivyDeps() ++ Agg( 99 ivy"org.scalatest::scalatest:3.2.0" 100 ) 101 102 def testFrameworks = Seq( 103 "org.scalatest.tools.Framework" 104 ) 105 } 106 107} 108