Merge pull request #386 from davine47/add-mill
Add mill to compile and test VexRiscv
This commit is contained in:
commit
35e5f4cad8
|
@ -48,6 +48,8 @@ obj_dir
|
||||||
*.bin
|
*.bin
|
||||||
explor
|
explor
|
||||||
|
|
||||||
|
mill
|
||||||
|
|
||||||
simWorkspace/
|
simWorkspace/
|
||||||
tmp/
|
tmp/
|
||||||
/archive.tar.gz
|
/archive.tar.gz
|
||||||
|
|
63
README.md
63
README.md
|
@ -441,6 +441,69 @@ To run it :
|
||||||
sbt "test:runMain vexriscv.MuraxSim"
|
sbt "test:runMain vexriscv.MuraxSim"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Build all above with mill
|
||||||
|
|
||||||
|
Mill is a simple tool to build Scala/Java, also fits in off-line environment very well.
|
||||||
|
|
||||||
|
Github url is here: https://github.com/com-lihaoyi/mill
|
||||||
|
|
||||||
|
Document is here: https://mill-build.com/mill/Intro_to_Mill.html
|
||||||
|
|
||||||
|
Download executable mill:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
curl --fail -L -o mill https://github.com/com-lihaoyi/mill/releases/download/0.11.6/0.11.6-assembly
|
||||||
|
chmod +x mill
|
||||||
|
```
|
||||||
|
Using mill to generate the corresponding RTL as a `VexRiscv.v` file, run the following commands in the root directory of this repository:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
./mill VexRiscv.runMain vexriscv.demo.GenFull
|
||||||
|
```
|
||||||
|
or
|
||||||
|
|
||||||
|
```sh
|
||||||
|
./mill VexRiscv.runMain vexriscv.demo.GenSmallest
|
||||||
|
```
|
||||||
|
|
||||||
|
Using mill to run tests (need java, scala, verilator), do :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
export VEXRISCV_REGRESSION_SEED=42
|
||||||
|
export VEXRISCV_REGRESSION_TEST_ID=
|
||||||
|
./mill VexRiscv.test.testOnly vexriscv.TestIndividualFeatures
|
||||||
|
```
|
||||||
|
|
||||||
|
Using mill to generate the Briey SoC Hardware:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
./mill VexRiscv.runMain vexriscv.demo.Briey
|
||||||
|
```
|
||||||
|
|
||||||
|
Using mill to generate the Murax SoC Hardware:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# To generate the SoC without any content in the ram
|
||||||
|
./mill VexRiscv.runMain vexriscv.demo.Murax
|
||||||
|
|
||||||
|
# To generate the SoC with a demo program already in ram
|
||||||
|
./mill VexRiscv.runMain vexriscv.demo.MuraxWithRamInit
|
||||||
|
|
||||||
|
# This will generate the Murax RTL + run its testbench. You need Verilator 3.9xx installated.
|
||||||
|
./mill VexRiscv.test.runMain vexriscv.MuraxSim
|
||||||
|
```
|
||||||
|
|
||||||
|
Mill's IDE supports:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# Build Server Protocol (BSP)
|
||||||
|
./mill mill.bsp.BSP/install
|
||||||
|
|
||||||
|
# IntelliJ IDEA Support
|
||||||
|
./mill mill.idea.GenIdea/idea
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
## Running Linux
|
## Running Linux
|
||||||
|
|
||||||
A default configuration is located in `src/main/scala/vexriscv/demo/Linux.scala`.
|
A default configuration is located in `src/main/scala/vexriscv/demo/Linux.scala`.
|
||||||
|
|
|
@ -0,0 +1,28 @@
|
||||||
|
import mill._, scalalib._
|
||||||
|
|
||||||
|
val spinalVersion = "1.9.4"
|
||||||
|
|
||||||
|
object ivys {
|
||||||
|
val sv = "2.11.12"
|
||||||
|
val spinalCore = ivy"com.github.spinalhdl::spinalhdl-core:$spinalVersion"
|
||||||
|
val spinalLib = ivy"com.github.spinalhdl::spinalhdl-lib:$spinalVersion"
|
||||||
|
val spinalPlugin = ivy"com.github.spinalhdl::spinalhdl-idsl-plugin:$spinalVersion"
|
||||||
|
val scalatest = ivy"org.scalatest::scalatest:3.2.5"
|
||||||
|
val macroParadise = ivy"org.scalamacros:::paradise:2.1.1"
|
||||||
|
val yaml = ivy"org.yaml:snakeyaml:1.8"
|
||||||
|
}
|
||||||
|
|
||||||
|
trait Common extends ScalaModule {
|
||||||
|
override def scalaVersion = ivys.sv
|
||||||
|
override def scalacPluginIvyDeps = Agg(ivys.macroParadise, ivys.spinalPlugin)
|
||||||
|
override def ivyDeps = Agg(ivys.spinalCore, ivys.spinalLib, ivys.yaml, ivys.scalatest)
|
||||||
|
override def scalacOptions = Seq("-Xsource:2.11")
|
||||||
|
}
|
||||||
|
|
||||||
|
object VexRiscv extends Common with SbtModule{
|
||||||
|
override def millSourcePath = os.pwd
|
||||||
|
override def moduleDeps: Seq[JavaModule] = super.moduleDeps
|
||||||
|
|
||||||
|
object test extends SbtModuleTests with TestModule.ScalaTest
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue