xref: /XiangShan/build.sc (revision f320e0f01bd645f0a3045a8a740e60dd770734a9)
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