perilus

git clone https://git.bradleygannon.com/perilus.git
Log | Files | Refs | Submodules | README

commit bab30f16e00b59bae6180491fb5bf5defe223709
parent 93c313d88156c339e9e92434bcaca2c2cda0c76d
Author: Bradley Gannon <bradley@bradleygannon.com>
Date:   Wed, 22 Jul 2026 18:48:20 -0400

Improve justfile

- Rename test-official to test-act
- Add staleness checks to chisel and verilate so builds get skipped if
  they're already up to date
- Also add force flag to both so the staleness checks can be overriden
- Add build-sim to as a dependency of test-act

Diffstat:
M.gitignore | 1+
Mjustfile | 65+++++++++++++++++++++++++++++++++++++++++------------------------
2 files changed, 42 insertions(+), 24 deletions(-)

diff --git a/.gitignore b/.gitignore @@ -9,6 +9,7 @@ .scala-build/ build/ filelist.f +generated/ project/metals.sbt project/project/ project/target/ diff --git a/justfile b/justfile @@ -1,42 +1,59 @@ -ci: fmt clean test doc +ci: fmt clean test-chisel doc -test: test-chisel test-official +test: test-chisel test-act test-chisel: sbt test -test-official: +test-act: build-sim cd riscv-arch-test && \ CONFIG_FILES=../tests/perilus/test_config.yaml \ WORKDIR=../tests \ make --jobs $(nproc) - # TODO run the tests in the simulator + cd tests && ./run.sh doc: typst compile -f svg doc/perilus.typ fmt: sbt scalafmtAll - cd sim && cargo fmt - -chisel: - sbt run - -verilate: - verilator --build --public-flat-rw --Mdir verilated --cc \ - generated/Perilus.sv \ - generated/Memory.sv \ - generated/RegisterFile.sv \ - generated/Alu.sv \ - generated/ControlUnit.sv \ - generated/ExtendUnit.sv \ - generated/AluDecoder.sv \ - generated/InstructionDecoder.sv \ - generated/registerFile_32x32.sv \ - generated/memory_1024x32.sv - -simulate: - cd sim && cargo run + cd sim && cargo fmt && cargo clippy + +[script] +[arg("force", long="force", value="1")] +chisel force='': + if [ -n "{{force}}" ] || [ $(find src/main/ -name "**.scala" -newer "generated/.timestamp" 2>&1 | wc -l) != 0 ]; then + sbt run + touch generated/.timestamp + else + echo "Chisel generated output appears to be up to date, skipping" + fi + +[script] +[arg("force", long="force", value="1")] +verilate force='': + if [ -n "{{force}}" ] || [ $(find generated/ -name "**.sv" -newer "verilated/.timestamp" 2>&1 | wc -l) != 0 ]; then + verilator --build --public-flat-rw --Mdir verilated --cc \ + generated/Perilus.sv \ + generated/Memory.sv \ + generated/RegisterFile.sv \ + generated/Alu.sv \ + generated/ControlUnit.sv \ + generated/ExtendUnit.sv \ + generated/AluDecoder.sv \ + generated/InstructionDecoder.sv \ + generated/registerFile_32x32.sv \ + generated/memory_1048576x32.sv + touch verilated/.timestamp + else + echo "Verilated output appears to be up to date, skipping" + fi + +build-sim: chisel verilate + cd sim && cargo build --release + +simulate: chisel verilate + cd sim && cargo run --release clean: sbt clean