initial ci commit
This commit is contained in:
22
.circleci/build-toolchains.sh
Executable file
22
.circleci/build-toolchains.sh
Executable file
@@ -0,0 +1,22 @@
|
||||
#!/bin/bash
|
||||
|
||||
# create the riscv tools binaries from riscv-boom/boom-template with rocket-chip hash given by riscv-boom
|
||||
|
||||
# turn echo on and error on earliest command
|
||||
set -ex
|
||||
|
||||
if [ ! -d "$HOME/esp-tools-install" ]; then
|
||||
|
||||
cd $HOME/
|
||||
|
||||
# init all submodules including the tools
|
||||
./project/scripts/build-toolchains.sh esp-tools
|
||||
fi
|
||||
|
||||
if [ ! -d "$HOME/riscv-tools-install" ]; then
|
||||
|
||||
cd $HOME/
|
||||
|
||||
# init all submodules including the tools
|
||||
./project/scripts/build-toolchains.sh riscv-tools
|
||||
fi
|
||||
18
.circleci/build-verilator.sh
Executable file
18
.circleci/build-verilator.sh
Executable file
@@ -0,0 +1,18 @@
|
||||
#!/bin/bash
|
||||
|
||||
# build verilator and init submodules with rocket-chip hash given by riscv-boom
|
||||
|
||||
# turn echo on and error on earliest command
|
||||
set -ex
|
||||
|
||||
cd $HOME/project
|
||||
|
||||
# init all submodules (according to what boom-template wants)
|
||||
./scripts/init-submodules-no-riscv-tools.sh
|
||||
|
||||
cd sims/verisim
|
||||
|
||||
if [ ! -d "$HOME/project/sims/verisim/verilator" ]; then
|
||||
# make boom-template verilator version
|
||||
make verilator_install
|
||||
fi
|
||||
154
.circleci/config.yml
Normal file
154
.circleci/config.yml
Normal file
@@ -0,0 +1,154 @@
|
||||
# CircleCI Configuration File
|
||||
|
||||
# version of circleci
|
||||
version: 2
|
||||
|
||||
# set of jobs to run
|
||||
jobs:
|
||||
install-toolchains:
|
||||
docker:
|
||||
- image: riscvboom/riscvboom-images:0.0.5
|
||||
environment:
|
||||
JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit
|
||||
TERM: dumb
|
||||
|
||||
steps:
|
||||
# Checkout the code
|
||||
- checkout
|
||||
|
||||
- run:
|
||||
name: Create hash of toolchains
|
||||
command: |
|
||||
.circleci/create-hash.sh
|
||||
|
||||
- restore_cache:
|
||||
keys:
|
||||
- riscv-tools-installed-v1-{{ checksum "../riscv-tools.hash" }}
|
||||
|
||||
- restore_cache:
|
||||
keys:
|
||||
- esp-tools-installed-v1-{{ checksum "../esp-tools.hash" }}
|
||||
|
||||
- run:
|
||||
name: Building toolchains
|
||||
command: |
|
||||
.circleci/build-toolchains.sh
|
||||
no_output_timeout: 120m
|
||||
|
||||
- save_cache:
|
||||
key: riscv-tools-installed-v1-{{ checksum "../riscv-tools.hash" }}
|
||||
paths:
|
||||
- "/home/riscvuser/riscv-tools-install"
|
||||
|
||||
- save_cache:
|
||||
key: esp-tools-installed-v1-{{ checksum "../esp-tools.hash" }}
|
||||
paths:
|
||||
- "/home/riscvuser/esp-tools-install"
|
||||
|
||||
install-verilator:
|
||||
docker:
|
||||
- image: riscvboom/riscvboom-images:0.0.5
|
||||
environment:
|
||||
JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit
|
||||
TERM: dumb
|
||||
|
||||
steps:
|
||||
# Checkout the code
|
||||
- checkout
|
||||
|
||||
- restore_cache:
|
||||
keys:
|
||||
- verilator-installed-v1-{{ checksum "sims/verisim/verilator.mk" }}
|
||||
|
||||
- run:
|
||||
name: Build Verilator
|
||||
command: |
|
||||
.circleci/build-verilator.sh
|
||||
no_output_timeout: 120m
|
||||
|
||||
- save_cache:
|
||||
key: verilator-installed-v1-{{ checksum "sims/verisim/verilator.mk" }}
|
||||
paths:
|
||||
- "/home/riscvuser/project/sims/verisim/verilator"
|
||||
|
||||
prepare-example:
|
||||
docker:
|
||||
- image: riscvboom/riscvboom-images:0.0.5
|
||||
environment:
|
||||
JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit
|
||||
TERM: dumb
|
||||
|
||||
steps:
|
||||
# Checkout the code
|
||||
- checkout
|
||||
|
||||
- restore_cache:
|
||||
keys:
|
||||
- verilator-installed-v1-{{ checksum "sims/verisim/verilator.mk" }}
|
||||
|
||||
- run:
|
||||
name: Building BoomConfig using Verilator
|
||||
command: .circleci/do-rtl-build.sh example
|
||||
no_output_timeout: 120m
|
||||
|
||||
- save_cache:
|
||||
key: example-{{ .Branch }}-{{ .Revision }}
|
||||
paths:
|
||||
- "/home/riscvuser/project/sims/verisim"
|
||||
|
||||
example-run-benchmark-tests:
|
||||
docker:
|
||||
- image: riscvboom/riscvboom-images:0.0.5
|
||||
environment:
|
||||
JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit
|
||||
TERM: dumb
|
||||
|
||||
steps:
|
||||
# Checkout the code
|
||||
- checkout
|
||||
|
||||
- run:
|
||||
name: Create hash of toolchains
|
||||
command: |
|
||||
.circleci/create-hash.sh
|
||||
|
||||
- restore_cache:
|
||||
keys:
|
||||
- riscv-tools-installed-v1-{{ checksum "../riscv-tools.hash" }}
|
||||
|
||||
- restore_cache:
|
||||
keys:
|
||||
- esp-tools-installed-v1-{{ checksum "../esp-tools.hash" }}
|
||||
|
||||
- restore_cache:
|
||||
keys:
|
||||
- example-{{ .Branch }}-{{ .Revision }}
|
||||
|
||||
- run:
|
||||
name: Run example benchmark tests
|
||||
command: make run-bmark-tests -C sims/verisim SUB_PROJECT=example
|
||||
|
||||
# Order and dependencies of jobs to run
|
||||
workflows:
|
||||
version: 2
|
||||
build-and-test-boom-configs:
|
||||
jobs:
|
||||
# Make the toolchain
|
||||
- install-toolchains
|
||||
|
||||
# Build verilator
|
||||
- install-verilator:
|
||||
requires:
|
||||
- install-toolchains
|
||||
|
||||
# Prepare the verilator builds
|
||||
- prepare-example:
|
||||
requires:
|
||||
- install-verilator
|
||||
|
||||
# Run the respective tests
|
||||
|
||||
# Run the example tests
|
||||
- example-run-benchmark-tests:
|
||||
requires:
|
||||
- prepare-example
|
||||
17
.circleci/create-hash.sh
Executable file
17
.circleci/create-hash.sh
Executable file
@@ -0,0 +1,17 @@
|
||||
#!/bin/bash
|
||||
|
||||
# get the hash of riscv-tools
|
||||
|
||||
# turn echo on and error on earliest command
|
||||
set -ex
|
||||
|
||||
# enter bhd repo
|
||||
cd $HOME/project
|
||||
|
||||
# get the version of riscv-tools from the git submodule hash
|
||||
git submodule status | grep "riscv-tools" | awk '{print$1}' | grep -o "[[:alnum:]]*" >> $HOME/riscv-tools.hash
|
||||
git submodule status | grep "esp-tools" | awk '{print$1}' | grep -o "[[:alnum:]]*" >> $HOME/esp-tools.hash
|
||||
|
||||
echo "Hashfile for riscv-tools and esp-tools created in $HOME"
|
||||
echo "Contents: riscv-tools:$(cat $HOME/riscv-tools.hash)"
|
||||
echo "Contents: esp-tools:$(cat $HOME/esp-tools.hash)"
|
||||
13
.circleci/do-rtl-build.sh
Executable file
13
.circleci/do-rtl-build.sh
Executable file
@@ -0,0 +1,13 @@
|
||||
#!/bin/bash
|
||||
|
||||
# create the different verilator builds of BOOM based on arg
|
||||
|
||||
# turn echo on and error on earliest command
|
||||
set -ex
|
||||
|
||||
# this file assumes cache is updated correctly
|
||||
|
||||
# enter the verisim directory and build the specific config
|
||||
cd $HOME/project/sims/verisim
|
||||
make clean
|
||||
make SUB_PROJECT=$1 JAVA_ARGS="-Xmx2G -Xss8M"
|
||||
Reference in New Issue
Block a user