Merge pull request #999 from ucb-bar/dev-use-github-actions-plus-circle-ci
Add support for GitHub Actions
This commit is contained in:
@@ -6,7 +6,7 @@ version: 2.1
|
||||
parameters:
|
||||
tools-cache-version:
|
||||
type: string
|
||||
default: "v12"
|
||||
default: "v13"
|
||||
|
||||
# default execution env.s
|
||||
executors:
|
||||
|
||||
126
.github/README.md
vendored
Normal file
126
.github/README.md
vendored
Normal file
@@ -0,0 +1,126 @@
|
||||
Chipyard Continuous Integration (CI)
|
||||
===========
|
||||
|
||||
Website: https://gihub.com/gh/ucb-bar/chipyard/actions
|
||||
|
||||
GitHub Actions Brief Explanation
|
||||
---------------------------
|
||||
|
||||
CI is executed by Github Actions (GA). GA is controlled by `.yml` files in the `.github/workflows/` directory.
|
||||
In our case, we have just one workflow named `chipyard-run-tests.yml`.
|
||||
It defines a number of `jobs` within it that do particular tasks.
|
||||
All jobs in the workflow must pass for the CI run to be successful.
|
||||
In general, a job is run in parallel with others unless it depends on some other job.
|
||||
The dependency of one job on the completion of another is specified via the `needs` field.
|
||||
|
||||
For example:
|
||||
```yaml
|
||||
prepare-chipyard-cores:
|
||||
name: prepare-chipyard-cores
|
||||
needs: [make-keys, setup-complete]
|
||||
```
|
||||
This specifies that the `prepare-chipyard-cores` job needs the both the `make-keys` and the `setup-complete` steps to
|
||||
be completed before it can run.
|
||||
|
||||
Chipyard runs its CI using a docker image created from `dockerfiles/Dockerfile`.
|
||||
See its [README](../dockerfiles/README.md) for more details.
|
||||
|
||||
Finally, within each job's `steps:` section, the steps are run sequentially and state persists throughout a job.
|
||||
So when you run something like `checkout` the next step has the checked out code.
|
||||
|
||||
[Composite Actions](https://docs.github.com/en/actions/creating-actions) (CA) allow for limited subroutine like code re-use within GA.
|
||||
We use both community created and our own Composite Actions in our CI process. CA capabilities are changing rapidly.
|
||||
Nesting of composite actions was only recently unveiled. There is a lot of room for more code reuse, in particular
|
||||
we specify things over and over like docker image tag and checkout commands.
|
||||
|
||||
One use of CA: our process relies on caching to avoid running time-consuming and intensive tasks more often than necessary.
|
||||
|
||||
The following is an example of using the cache@v2 composite action. A step `uses: actions/cache@v2` which take as parameters the
|
||||
path that contains the data to be cached and a key. Paths can have multiple targets.
|
||||
The following step can look at the result of the cache operation, if there was cache miss, then we run the command that
|
||||
will generate the data to be cached. The caching of the generated data is implicit.
|
||||
>Note: GA cache documentation suggests using the yml level `if: steps.cache-primes.outputs.cache-hit != 'true'` to
|
||||
> determine whether to run the data generation command.
|
||||
> At the time of this writing the if construct has a bug and will not run correctly within a composite action. The use
|
||||
> of a bash based if is a [hack found on stackoverflow](https://stackoverflow.com/questions/65473359/github-action-unable-to-add-if-condition-in-steps)
|
||||
```yaml
|
||||
- uses: actions/cache@v2
|
||||
id: rtl-build-id
|
||||
with:
|
||||
path: |
|
||||
sims/verilator
|
||||
sims/firesim/sim
|
||||
generators/gemmini/software/gemmini-rocc-tests
|
||||
key: ${{ inputs.group-key }}-${{ github.ref }}-${{ github.sha }}
|
||||
- name: run rtl build script if not cached
|
||||
run: |
|
||||
if [[ "${{ steps.rtl-build-id.outputs.cache-hit }}" != 'true' ]]; then
|
||||
echo "Cache miss on ${{ inputs.group-key }}-${{ github.ref }}-${{ github.sha }}"
|
||||
./.github/scripts/${{ inputs.build-script }} ${{ inputs.group-key }} ${{ inputs.build-type }}
|
||||
else
|
||||
echo "cache hit do not prepare rtl"
|
||||
fi
|
||||
shell: bash
|
||||
```
|
||||
|
||||
Our own composite actions are defined in the `.github/actions/<ActionName>/action.yml`
|
||||
|
||||
.github/scripts directory
|
||||
-------------------
|
||||
|
||||
This directory contains most the collateral for the Chipyard CI to work.
|
||||
The following is included in `.github/scripts/: directory
|
||||
|
||||
`build-toolchains.sh` # build either riscv-tools or esp-tools
|
||||
`create-hash.sh` # create hashes of riscv-tools/esp-tools to use as hash keys
|
||||
`remote-do-rtl-build.sh` # use verilator to build a sim executable (remotely)
|
||||
`defaults.sh` # default variables used
|
||||
`check-commit.sh` # check that submodule commits are valid
|
||||
`build-extra-tests.sh` # build default chipyard tests located in tests/
|
||||
`clean-old-files.sh` # clean up build server files
|
||||
`do-fpga-rtl-build.sh` # similar to `do-rtl-build` but using fpga/
|
||||
`remote-install-verilator.sh` # install verilator on build server
|
||||
`remote-run-firesim-scala-tests.sh` # run firesim scala tests
|
||||
`run-tests.sh # run tests for a specific set of designs
|
||||
|
||||
How things are set up for Chipyard
|
||||
---------------------------------
|
||||
|
||||
The steps for CI to run are as follows.
|
||||
1. Build the toolchains in parallel (note: `esp-tools` is currently not used in the run).
|
||||
The docker image sets up the `PATH` and `RISCV` variable so that `riscv-tools` is the default (currently the `env.sh` script that is created at tool build is unused).
|
||||
2. Create the simulator binary.
|
||||
This requires the `riscv-tools` for `fesvr` and `verilator` to be able to build the binary.
|
||||
This stores all collateral for the tests (srcs, generated-srcs, sim binary, etc) to run "out of the gate" in the next job (make needs everything or else it will run again).
|
||||
3. Finally, run the desired tests.
|
||||
|
||||
Other CI Setup
|
||||
--------------
|
||||
|
||||
To get the CI to work correctly you need to create the following GH Repository Secrets
|
||||
|
||||
| Secret | Value |
|
||||
| -------| ------------- |
|
||||
| BUILDSERVER | the hostname of the remote build server (likely be a millennium machine) |
|
||||
| BUILDUSER | the login to use on the build server |
|
||||
| BUILDDIR | the directory to use on the build server |
|
||||
| SERVERKEY | a private key to access the build server |
|
||||
|
||||
The main workflow also constructs and places in the environment a SERVER and a work directyory on that server env using the above secrets.
|
||||
The SERVER is constructed like this:
|
||||
```bash
|
||||
SERVER = ${{ secrets.BUILDUSER }}@${{ secrets.BUILDSERVER }}
|
||||
```
|
||||
|
||||
Additionally, you need to add under the "PERMISSIONS" "SSH Permissions" section a private key that is on the build server that you are using.
|
||||
After adding a private key, it will show a fingerprint that should be added under the jobs that need to be run.
|
||||
|
||||
Note: On the remote server you need to have the `*.pub` key file added to the `authorized_keys` file.
|
||||
|
||||
Notes on CIRCLE CI
|
||||
------------------
|
||||
This code is heavily based on the origin [CircleCI]() work. There a quite a few differences
|
||||
- CCI supports workflow level variables, in GA we must define things like `BUILDSERVER: ${{ secrets.BUILDSERVER }}` in every job
|
||||
- CCI allows a much larger cache. The entire CY directory with toolchains and RTL could be cached, with GA there is a 5Gb total cache limit
|
||||
- GA support more parallel jobs 20 vs 4
|
||||
- GA seems to allow much longer run times
|
||||
8
.github/actions/job-end/action.yml
vendored
Normal file
8
.github/actions/job-end/action.yml
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
name: job-end
|
||||
description: "Save a job status"
|
||||
|
||||
runs:
|
||||
using: "composite"
|
||||
steps:
|
||||
- run: echo "success" > run_result
|
||||
shell: bash
|
||||
19
.github/actions/job-start/action.yml
vendored
Normal file
19
.github/actions/job-start/action.yml
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
name: job-start
|
||||
description: "Setup a job status"
|
||||
outputs:
|
||||
run_result:
|
||||
value: ${{ steps.run_result.outputs.run_result }}
|
||||
|
||||
runs:
|
||||
using: "composite"
|
||||
steps:
|
||||
- name: Restore the previous run result
|
||||
uses: actions/cache@v2
|
||||
with:
|
||||
path: run_result
|
||||
key: ${{ github.run_id }}-${{ github.job }}
|
||||
restore-keys: ${{ github.run_id }}-${{ github.job }}
|
||||
- name: Set run_result to default or use cached value
|
||||
id: run_result
|
||||
run: echo "::set-output name=run_result::$(cat run_result 2>/dev/null || echo 'default')"
|
||||
shell: bash
|
||||
40
.github/actions/prepare-rtl/action.yml
vendored
Normal file
40
.github/actions/prepare-rtl/action.yml
vendored
Normal file
@@ -0,0 +1,40 @@
|
||||
name: prepare-rtl
|
||||
description: 'Builds RTL based on parameters, caches the entire chipyard root dir when done'
|
||||
|
||||
inputs:
|
||||
group-key:
|
||||
description: group key
|
||||
required: true
|
||||
build-script:
|
||||
description: rtl build script to use
|
||||
required: false
|
||||
default: "remote-do-rtl-build.sh"
|
||||
build-type:
|
||||
description: type of build
|
||||
required: false
|
||||
default: "sim"
|
||||
|
||||
runs:
|
||||
using: "composite"
|
||||
steps:
|
||||
- name: Build RISC-V toolchains
|
||||
uses: ./.github/actions/toolchain-build
|
||||
|
||||
- uses: actions/cache@v2
|
||||
id: rtl-build-id
|
||||
with:
|
||||
path: |
|
||||
sims/verilator
|
||||
sims/firesim/sim
|
||||
generators/gemmini/software/gemmini-rocc-tests
|
||||
key: ${{ inputs.group-key }}-${{ github.ref }}-${{ github.sha }}
|
||||
|
||||
- name: Run RTL build if not cached
|
||||
run: |
|
||||
if [[ "${{ steps.rtl-build-id.outputs.cache-hit }}" != 'true' ]]; then
|
||||
echo "Cache miss on ${{ inputs.group-key }}-${{ github.ref }}-${{ github.sha }}"
|
||||
./.github/scripts/${{ inputs.build-script }} ${{ inputs.group-key }} ${{ inputs.build-type }}
|
||||
else
|
||||
echo "Cache hit do not rebuild RTL for ${{ inputs.group-key }}"
|
||||
fi
|
||||
shell: bash
|
||||
31
.github/actions/run-tests/action.yml
vendored
Normal file
31
.github/actions/run-tests/action.yml
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
name: run-tests
|
||||
description: 'Runs tests according to input parameters'
|
||||
|
||||
inputs:
|
||||
group-key:
|
||||
description: group key
|
||||
required: true
|
||||
project-key:
|
||||
description: project key
|
||||
required: true
|
||||
run-script:
|
||||
description: rtl build script to use
|
||||
required: false
|
||||
default: "run-tests.sh"
|
||||
|
||||
runs:
|
||||
using: "composite"
|
||||
steps:
|
||||
- name: Init submodules (since only the RTL is cached)
|
||||
run: ./scripts/init-submodules-no-riscv-tools.sh
|
||||
shell: bash
|
||||
|
||||
# Note: You shouldn't need the other inputs since it shouldn't build RTL from scratch
|
||||
- name: Build RTL
|
||||
uses: ./.github/actions/prepare-rtl
|
||||
with:
|
||||
group-key: ${{ inputs.group-key }}
|
||||
|
||||
- name: Run RTL tests
|
||||
run: ./.github/scripts/${{ inputs.run-script }} ${{ inputs.project-key }}
|
||||
shell: bash
|
||||
51
.github/actions/toolchain-build/action.yml
vendored
Normal file
51
.github/actions/toolchain-build/action.yml
vendored
Normal file
@@ -0,0 +1,51 @@
|
||||
name: toolchain-build
|
||||
description: 'Build/cache both toolchains'
|
||||
|
||||
runs:
|
||||
using: "composite"
|
||||
steps:
|
||||
- name: Generate hashes
|
||||
run: .github/scripts/create-hash.sh
|
||||
shell: bash
|
||||
|
||||
# since "hashFiles" function differs on self-hosted vs GH-A machines
|
||||
# make sure to cache the GH-A hashFiles result so that self-hosted can use it
|
||||
- run: |
|
||||
echo "${{ hashFiles('**/riscv-tools.hash') }}" > riscv-tools.hashFilesOutput
|
||||
echo "${{ hashFiles('**/esp-tools.hash') }}" > esp-tools.hashFilesOutput
|
||||
shell: bash
|
||||
|
||||
- name: Cache hashFiles outputs
|
||||
uses: actions/cache@v2
|
||||
with:
|
||||
path: |
|
||||
riscv-tools.hashFilesOutput
|
||||
esp-tools.hashFilesOutput
|
||||
key: hashFiles-${{ github.sha }}
|
||||
|
||||
- name: Generate cache keys based off hashFiles output
|
||||
id: genkey
|
||||
run: |
|
||||
echo "::set-output name=riscv-tools-cache-key::$(cat riscv-tools.hashFilesOutput)"
|
||||
echo "::set-output name=esp-tools-cache-key::$(cat esp-tools.hashFilesOutput)"
|
||||
shell: bash
|
||||
|
||||
- name: Cache riscv-tools
|
||||
uses: actions/cache@v2
|
||||
with:
|
||||
path: riscv-tools-install
|
||||
key: riscv-tools-installed-${{ env.tools-cache-version }}-${{ steps.genkey.outputs.riscv-tools-cache-key }}
|
||||
|
||||
- name: Cache esp-tools
|
||||
uses: actions/cache@v2
|
||||
with:
|
||||
path: esp-tools-install
|
||||
key: esp-tools-installed-${{ env.tools-cache-version }}-${{ steps.genkey.outputs.esp-tools-cache-key }}
|
||||
|
||||
- name: Build RISC-V toolchain if not cached
|
||||
run: ./.github/scripts/build-toolchains.sh riscv-tools
|
||||
shell: bash
|
||||
|
||||
- name: Build ESP RISC-V toolchain if not cached
|
||||
run: ./.github/scripts/build-toolchains.sh esp-tools
|
||||
shell: bash
|
||||
15
.github/scripts/build-extra-tests.sh
vendored
Executable file
15
.github/scripts/build-extra-tests.sh
vendored
Executable file
@@ -0,0 +1,15 @@
|
||||
#!/bin/bash
|
||||
|
||||
# turn echo on and error on earliest command
|
||||
set -ex
|
||||
|
||||
# get shared variables
|
||||
SCRIPT_DIR="$( cd "$( dirname "$0" )" && pwd )"
|
||||
source $SCRIPT_DIR/defaults.sh
|
||||
|
||||
export RISCV="$GITHUB_WORKSPACE/riscv-tools-install"
|
||||
export LD_LIBRARY_PATH="$RISCV/lib"
|
||||
export PATH="$RISCV/bin:$PATH"
|
||||
|
||||
make -C $LOCAL_CHIPYARD_DIR/tests clean
|
||||
make -C $LOCAL_CHIPYARD_DIR/tests
|
||||
21
.github/scripts/build-toolchains.sh
vendored
Executable file
21
.github/scripts/build-toolchains.sh
vendored
Executable file
@@ -0,0 +1,21 @@
|
||||
#!/bin/bash
|
||||
|
||||
# create the riscv tools/esp tools binaries
|
||||
# passed in as <riscv-tools or esp-tools>
|
||||
|
||||
# turn echo on and error on earliest command
|
||||
set -ex
|
||||
|
||||
# get shared variables
|
||||
SCRIPT_DIR="$( cd "$( dirname "$0" )" && pwd )"
|
||||
source $SCRIPT_DIR/defaults.sh
|
||||
|
||||
if [ ! -d "$HOME/$1-install" ]; then
|
||||
cd $HOME
|
||||
|
||||
# init all submodules including the tools
|
||||
CHIPYARD_DIR="$LOCAL_CHIPYARD_DIR" NPROC=$CI_MAKE_NPROC $LOCAL_CHIPYARD_DIR/scripts/build-toolchains.sh $1
|
||||
|
||||
# de-init the toolchain area to save on space (forced to ignore local changes)
|
||||
git submodule deinit --force $LOCAL_CHIPYARD_DIR/toolchains/$1
|
||||
fi
|
||||
151
.github/scripts/check-commit.sh
vendored
Executable file
151
.github/scripts/check-commit.sh
vendored
Executable file
@@ -0,0 +1,151 @@
|
||||
#!/bin/bash
|
||||
|
||||
# check to see that submodule commits are present on the master branch
|
||||
|
||||
# turn echo on and error on earliest command
|
||||
set -ex
|
||||
|
||||
# get shared variables
|
||||
SCRIPT_DIR="$( cd "$( dirname "$0" )" && pwd )"
|
||||
source $SCRIPT_DIR/defaults.sh
|
||||
|
||||
cd $LOCAL_CHIPYARD_DIR
|
||||
|
||||
# ignore the private vlsi submodules
|
||||
git config submodule.vlsi/hammer-cadence-plugins.update none
|
||||
git config submodule.vlsi/hammer-mentor-plugins.update none
|
||||
git config submodule.vlsi/hammer-synopsys-plugins.update none
|
||||
|
||||
# initialize submodules and get the hashes
|
||||
git submodule update --init
|
||||
status=$(git submodule status)
|
||||
|
||||
all_names=()
|
||||
|
||||
|
||||
search_submodule() {
|
||||
echo "Running check on submodule $submodule in $dir"
|
||||
hash=$(echo "$status" | grep "$dir.*$submodule " | awk '{print$1}' | grep -o "[[:alnum:]]*")
|
||||
for branch in "${branches[@]}"
|
||||
do
|
||||
echo "Searching for $hash in origin/$branch of $submodule"
|
||||
(git -C $dir/$submodule branch -r --contains "$hash" | grep "origin/$branch") && true # needs init'ed submodules
|
||||
if [ $? -eq 0 ]
|
||||
then
|
||||
all_names+=("$dir/$submodule $hash 0")
|
||||
return
|
||||
fi
|
||||
done
|
||||
all_names+=("$dir/$submodule $hash 1")
|
||||
return
|
||||
}
|
||||
|
||||
search () {
|
||||
for submodule in "${submodules[@]}"
|
||||
do
|
||||
search_submodule
|
||||
done
|
||||
}
|
||||
|
||||
submodules=("cva6" "boom" "gemmini" "hwacha" "icenet" "nvdla" "rocket-chip" "sha3" "sifive-blocks" "sifive-cache" "testchipip" "riscv-sodor")
|
||||
dir="generators"
|
||||
if [ "$CIRCLE_BRANCH" == "master" ] || [ "$CIRCLE_BRANCH" == "dev" ]
|
||||
then
|
||||
branches=("master")
|
||||
else
|
||||
branches=("master" "dev")
|
||||
fi
|
||||
search
|
||||
|
||||
submodules=("riscv-gnu-toolchain" "riscv-isa-sim" "riscv-pk" "riscv-tests")
|
||||
dir="toolchains/esp-tools"
|
||||
branches=("master")
|
||||
search
|
||||
|
||||
|
||||
submodules=("riscv-gnu-toolchain" "riscv-isa-sim" "riscv-pk" "riscv-tests")
|
||||
dir="toolchains/riscv-tools"
|
||||
branches=("master")
|
||||
search
|
||||
|
||||
# riscv-openocd doesn't use its master branch
|
||||
submodules=("riscv-openocd")
|
||||
dir="toolchains/riscv-tools"
|
||||
branches=("riscv")
|
||||
search
|
||||
|
||||
submodules=("qemu" "libgloss")
|
||||
dir="toolchains"
|
||||
branches=("master")
|
||||
search
|
||||
|
||||
submodules=("coremark" "firemarshal" "nvdla-workload" "spec2017")
|
||||
dir="software"
|
||||
if [ "$CIRCLE_BRANCH" == "master" ] || [ "$CIRCLE_BRANCH" == "dev" ]
|
||||
then
|
||||
branches=("master")
|
||||
else
|
||||
branches=("master" "dev")
|
||||
fi
|
||||
search
|
||||
|
||||
submodules=("DRAMSim2" "axe" "barstools" "chisel-testers" "dsptools" "rocket-dsp-utils" "firrtl-interpreter" "torture" "treadle")
|
||||
dir="tools"
|
||||
if [ "$CIRCLE_BRANCH" == "master" ] || [ "$CIRCLE_BRANCH" == "dev" ]
|
||||
then
|
||||
branches=("master")
|
||||
else
|
||||
branches=("master" "dev")
|
||||
fi
|
||||
search
|
||||
|
||||
submodules=("dromajo-src")
|
||||
dir="tools/dromajo"
|
||||
branches=("master")
|
||||
search
|
||||
|
||||
submodules=("firesim")
|
||||
dir="sims"
|
||||
if [ "$CIRCLE_BRANCH" == "master" ] || [ "$CIRCLE_BRANCH" == "dev" ]
|
||||
then
|
||||
branches=("master")
|
||||
else
|
||||
branches=("master" "dev")
|
||||
fi
|
||||
search
|
||||
|
||||
submodules=("hammer")
|
||||
dir="vlsi"
|
||||
branches=("master")
|
||||
search
|
||||
|
||||
submodules=("fpga-shells")
|
||||
dir="fpga"
|
||||
branches=("master")
|
||||
search
|
||||
|
||||
# turn off verbose printing to make this easier to read
|
||||
set +x
|
||||
|
||||
# print 0's
|
||||
for str in "${all_names[@]}";
|
||||
do
|
||||
if [ 0 = $(echo "$str" | awk '{print$3}') ]; then
|
||||
echo "$str"
|
||||
fi
|
||||
done
|
||||
|
||||
echo ""
|
||||
|
||||
# check if there was a non-zero return code and print 1's
|
||||
EXIT=0
|
||||
for str in "${all_names[@]}";
|
||||
do
|
||||
if [ ! 0 = $(echo "$str" | awk '{print$3}') ]; then
|
||||
echo "$str"
|
||||
EXIT=1
|
||||
fi
|
||||
done
|
||||
|
||||
echo "Done checking all submodules"
|
||||
exit $EXIT
|
||||
29
.github/scripts/clean-old-files.sh
vendored
Executable file
29
.github/scripts/clean-old-files.sh
vendored
Executable file
@@ -0,0 +1,29 @@
|
||||
#!/bin/bash
|
||||
|
||||
# clean directories that are older than 14 days
|
||||
# argument is used as the directory to look in
|
||||
|
||||
age () {
|
||||
local AGE_SEC
|
||||
local CUR_SEC
|
||||
local DIFF_SEC
|
||||
local SEC_PER_DAY
|
||||
|
||||
SEC_PER_DAY=86400
|
||||
|
||||
CUR_SEC=$(date +%s)
|
||||
AGE_SEC=$(stat -c %Y -- "$1")
|
||||
DIFF_SEC=$(expr $CUR_SEC - $AGE_SEC)
|
||||
|
||||
echo $(expr $DIFF_SEC / $SEC_PER_DAY)
|
||||
}
|
||||
|
||||
for d in $1/*/ ; do
|
||||
DIR_AGE="$(age $d)"
|
||||
if [ $DIR_AGE -ge 14 ]; then
|
||||
echo "Deleting $d since is it $DIR_AGE old"
|
||||
rm -rf $d
|
||||
else
|
||||
echo "Keep $d since it is $DIR_AGE old"
|
||||
fi
|
||||
done
|
||||
20
.github/scripts/create-hash.sh
vendored
Executable file
20
.github/scripts/create-hash.sh
vendored
Executable file
@@ -0,0 +1,20 @@
|
||||
#!/bin/bash
|
||||
|
||||
# get the hash of riscv-tools
|
||||
|
||||
# turn echo on and error on earliest command
|
||||
set -ex
|
||||
set -o pipefail
|
||||
|
||||
# get shared variables
|
||||
SCRIPT_DIR="$( cd "$( dirname "$0" )" && pwd )"
|
||||
source $SCRIPT_DIR/defaults.sh
|
||||
|
||||
# Use normalized output of git-submodule status as hashfile
|
||||
for tools in 'riscv-tools' 'esp-tools' ; do
|
||||
git submodule status "toolchains/${tools}" 'toolchains/libgloss' 'toolchains/qemu' |
|
||||
while read -r line ; do
|
||||
echo "${line#[!0-9a-f]}"
|
||||
done > "${tools}.hash"
|
||||
done
|
||||
echo "Hashfile for riscv-tools and esp-tools created in $PWD"
|
||||
78
.github/scripts/defaults.sh
vendored
Executable file
78
.github/scripts/defaults.sh
vendored
Executable file
@@ -0,0 +1,78 @@
|
||||
#!/bin/bash
|
||||
|
||||
# make parallelism
|
||||
CI_MAKE_NPROC=8
|
||||
# chosen based on a 24c system shared with 1 other project
|
||||
REMOTE_MAKE_NPROC=4
|
||||
|
||||
# verilator version
|
||||
VERILATOR_VERSION=v4.034
|
||||
|
||||
HOME=$GITHUB_WORKSPACE
|
||||
CURRENT_BRANCH=$(git branch --show-current)
|
||||
|
||||
# remote variables
|
||||
# CI_DIR is defined externally based on the GH repository secret BUILDDIR
|
||||
|
||||
REMOTE_PREFIX=$CI_DIR/${GITHUB_REPOSITORY#*/}-$CURRENT_BRANCH
|
||||
REMOTE_WORK_DIR=$GITHUB_WORKSPACE
|
||||
REMOTE_RISCV_DIR=$GITHUB_WORKSPACE/riscv-tools-install
|
||||
REMOTE_ESP_DIR=$GITHUB_WORKSPACE/esp-tools-install
|
||||
REMOTE_CHIPYARD_DIR=$GITHUB_WORKSPACE
|
||||
REMOTE_SIM_DIR=$REMOTE_CHIPYARD_DIR/sims/verilator
|
||||
REMOTE_FIRESIM_DIR=$REMOTE_CHIPYARD_DIR/sims/firesim/sim
|
||||
REMOTE_FPGA_DIR=$REMOTE_CHIPYARD_DIR/fpga
|
||||
REMOTE_JAVA_OPTS="-Xmx10G -Xss8M"
|
||||
# Disable the supershell to greatly improve the readability of SBT output when captured by Circle CI
|
||||
REMOTE_SBT_OPTS="-Dsbt.ivy.home=$REMOTE_WORK_DIR/.ivy2 -Dsbt.supershell=false -Dsbt.global.base=$REMOTE_WORK_DIR/.sbt -Dsbt.boot.directory=$REMOTE_WORK_DIR/.sbt/boot"
|
||||
REMOTE_VERILATOR_DIR=$REMOTE_PREFIX-$GITHUB_SHA-verilator-install
|
||||
|
||||
# local variables (aka within the docker container)
|
||||
LOCAL_CHECKOUT_DIR=$HOME/project
|
||||
LOCAL_RISCV_DIR=$HOME/riscv-tools-install
|
||||
LOCAL_ESP_DIR=$HOME/esp-tools-install
|
||||
LOCAL_CHIPYARD_DIR=$HOME
|
||||
LOCAL_SIM_DIR=$LOCAL_CHIPYARD_DIR/sims/verilator
|
||||
LOCAL_FIRESIM_DIR=$LOCAL_CHIPYARD_DIR/sims/firesim/sim
|
||||
|
||||
# key value store to get the build groups
|
||||
declare -A grouping
|
||||
grouping["group-cores"]="chipyard-cva6 chipyard-rocket chipyard-hetero chipyard-boom chipyard-sodor chipyard-digitaltop chipyard-multiclock-rocket"
|
||||
grouping["group-peripherals"]="chipyard-dmirocket chipyard-blkdev chipyard-spiflashread chipyard-spiflashwrite chipyard-mmios chipyard-lbwif"
|
||||
grouping["group-accels"]="chipyard-nvdla chipyard-sha3 chipyard-hwacha chipyard-gemmini chipyard-streaming-fir chipyard-streaming-passthrough"
|
||||
grouping["group-tracegen"]="tracegen tracegen-boom"
|
||||
grouping["group-other"]="icenet testchipip"
|
||||
grouping["group-fpga"]="arty vcu118"
|
||||
|
||||
# key value store to get the build strings
|
||||
declare -A mapping
|
||||
mapping["chipyard-rocket"]=""
|
||||
mapping["chipyard-dmirocket"]=" CONFIG=dmiRocketConfig"
|
||||
mapping["chipyard-lbwif"]=" CONFIG=LBWIFRocketConfig"
|
||||
mapping["chipyard-sha3"]=" CONFIG=Sha3RocketConfig"
|
||||
mapping["chipyard-digitaltop"]=" TOP=DigitalTop"
|
||||
mapping["chipyard-streaming-fir"]=" CONFIG=StreamingFIRRocketConfig"
|
||||
mapping["chipyard-streaming-passthrough"]=" CONFIG=StreamingPassthroughRocketConfig"
|
||||
mapping["chipyard-hetero"]=" CONFIG=LargeBoomAndRocketConfig"
|
||||
mapping["chipyard-boom"]=" CONFIG=SmallBoomConfig"
|
||||
mapping["chipyard-blkdev"]=" CONFIG=SimBlockDeviceRocketConfig"
|
||||
mapping["chipyard-hwacha"]=" CONFIG=HwachaRocketConfig"
|
||||
mapping["chipyard-gemmini"]=" CONFIG=GemminiRocketConfig"
|
||||
mapping["chipyard-cva6"]=" CONFIG=CVA6Config"
|
||||
mapping["chipyard-spiflashread"]=" CONFIG=LargeSPIFlashROMRocketConfig"
|
||||
mapping["chipyard-spiflashwrite"]=" CONFIG=SmallSPIFlashRocketConfig"
|
||||
mapping["chipyard-mmios"]=" CONFIG=MMIORocketConfig verilog"
|
||||
mapping["tracegen"]=" CONFIG=NonBlockingTraceGenL2Config"
|
||||
mapping["tracegen-boom"]=" CONFIG=BoomTraceGenConfig"
|
||||
mapping["chipyard-nvdla"]=" CONFIG=SmallNVDLARocketConfig"
|
||||
mapping["chipyard-sodor"]=" CONFIG=Sodor5StageConfig"
|
||||
mapping["chipyard-multiclock-rocket"]=" CONFIG=MulticlockRocketConfig"
|
||||
|
||||
mapping["firesim"]="SCALA_TEST=firesim.firesim.RocketNICF1Tests"
|
||||
mapping["firesim-multiclock"]="SCALA_TEST=firesim.firesim.RocketMulticlockF1Tests"
|
||||
mapping["fireboom"]="SCALA_TEST=firesim.firesim.BoomF1Tests"
|
||||
mapping["icenet"]="SUB_PROJECT=icenet"
|
||||
mapping["testchipip"]="SUB_PROJECT=testchipip"
|
||||
|
||||
mapping["arty"]="SUB_PROJECT=arty verilog"
|
||||
mapping["vcu118"]="SUB_PROJECT=vcu118 verilog"
|
||||
61
.github/scripts/remote-do-rtl-build.sh
vendored
Executable file
61
.github/scripts/remote-do-rtl-build.sh
vendored
Executable file
@@ -0,0 +1,61 @@
|
||||
#!/bin/bash
|
||||
|
||||
# create the different verilator builds
|
||||
# usage:
|
||||
# do-rtl-build.sh <make command string> sim
|
||||
# run rtl build for simulations and copy back results
|
||||
# do-rtl-build.sh <make command string> fpga
|
||||
# run rtl build for fpga and don't copy back results
|
||||
|
||||
# turn echo on and error on earliest command
|
||||
set -ex
|
||||
|
||||
# get shared variables
|
||||
SCRIPT_DIR="$( cd "$( dirname "$0" )" && pwd )"
|
||||
source $SCRIPT_DIR/defaults.sh
|
||||
|
||||
cd $REMOTE_CHIPYARD_DIR
|
||||
./scripts/init-submodules-no-riscv-tools.sh
|
||||
./scripts/init-fpga.sh
|
||||
|
||||
TOOLS_DIR=$REMOTE_RISCV_DIR
|
||||
LD_LIB_DIR=$REMOTE_RISCV_DIR/lib
|
||||
|
||||
if [ $1 = "group-accels" ]; then
|
||||
export RISCV=$REMOTE_ESP_DIR
|
||||
export LD_LIBRARY_PATH=$REMOTE_ESP_DIR/lib
|
||||
export PATH=$RISCV/bin:$PATH
|
||||
pushd $REMOTE_CHIPYARD_DIR/generators/gemmini/software
|
||||
git submodule update --init --recursive gemmini-rocc-tests
|
||||
pushd gemmini-rocc-tests
|
||||
./build.sh
|
||||
popd
|
||||
popd
|
||||
fi
|
||||
|
||||
# choose what make dir to use
|
||||
case $2 in
|
||||
"sim")
|
||||
REMOTE_MAKE_DIR=$REMOTE_SIM_DIR
|
||||
;;
|
||||
"fpga")
|
||||
REMOTE_MAKE_DIR=$REMOTE_FPGA_DIR
|
||||
;;
|
||||
esac
|
||||
|
||||
# enter the verilator directory and build the specific config on remote server
|
||||
export RISCV=$TOOLS_DIR
|
||||
make -C $REMOTE_MAKE_DIR clean
|
||||
|
||||
read -a keys <<< ${grouping[$1]}
|
||||
|
||||
# need to set the PATH to use the new verilator (with the new verilator root)
|
||||
for key in "${keys[@]}"
|
||||
do
|
||||
export RISCV=$TOOLS_DIR
|
||||
export LD_LIBRARY_PATH=$LD_LIB_DIR
|
||||
export PATH=$REMOTE_VERILATOR_DIR/bin:$PATH
|
||||
export VERILATOR_ROOT=$REMOTE_VERILATOR_DIR
|
||||
export COURSIER_CACHE=$REMOTE_WORK_DIR/.coursier-cache
|
||||
make -j$REMOTE_MAKE_NPROC -C $REMOTE_MAKE_DIR FIRRTL_LOGLEVEL=info JAVA_OPTS="$REMOTE_JAVA_OPTS" SBT_OPTS="$REMOTE_SBT_OPTS" ${mapping[$key]}
|
||||
done
|
||||
22
.github/scripts/remote-install-verilator.sh
vendored
Executable file
22
.github/scripts/remote-install-verilator.sh
vendored
Executable file
@@ -0,0 +1,22 @@
|
||||
#!/bin/bash
|
||||
|
||||
# install verilator
|
||||
|
||||
# turn echo on and error on earliest command
|
||||
set -ex
|
||||
|
||||
# get shared variables
|
||||
SCRIPT_DIR="$( cd "$( dirname "$0" )" && pwd )"
|
||||
source $SCRIPT_DIR/defaults.sh
|
||||
|
||||
# clean older directories (delete prior directories related to this branch also)
|
||||
$SCRIPT_DIR/clean-old-files.sh $CI_DIR
|
||||
rm -rf $REMOTE_PREFIX*
|
||||
|
||||
git clone http://git.veripool.org/git/verilator $REMOTE_VERILATOR_DIR
|
||||
cd $REMOTE_VERILATOR_DIR
|
||||
git checkout $VERILATOR_VERSION
|
||||
autoconf
|
||||
export VERILATOR_ROOT=$REMOTE_VERILATOR_DIR
|
||||
./configure
|
||||
make -j$REMOTE_MAKE_NPROC
|
||||
43
.github/scripts/remote-run-firesim-scala-tests.sh
vendored
Executable file
43
.github/scripts/remote-run-firesim-scala-tests.sh
vendored
Executable file
@@ -0,0 +1,43 @@
|
||||
#!/bin/bash
|
||||
|
||||
# create the different verilator builds
|
||||
# argument is the make command string
|
||||
|
||||
# turn echo on and error on earliest command
|
||||
set -ex
|
||||
|
||||
# get shared variables
|
||||
SCRIPT_DIR="$( cd "$( dirname "$0" )" && pwd )"
|
||||
source $SCRIPT_DIR/defaults.sh
|
||||
|
||||
export RISCV="$REMOTE_RISCV_DIR"
|
||||
export LD_LIBRARY_PATH="$RISCV/lib"
|
||||
export PATH="$RISCV/bin:$PATH"
|
||||
|
||||
# Directory locations for handling firesim-local installations of libelf/libdwarf
|
||||
# This would generally be handled by build-setup.sh/firesim-setup.sh
|
||||
REMOTE_FIRESIM_SYSROOT=$REMOTE_FIRESIM_DIR/lib-install
|
||||
|
||||
./scripts/init-submodules-no-riscv-tools.sh
|
||||
cd $REMOTE_CHIPYARD_DIR/sims/firesim/sim/firesim-lib/src/main/cc/lib
|
||||
git submodule update --init elfutils libdwarf
|
||||
cd $REMOTE_CHIPYARD_DIR/sims/firesim
|
||||
mkdir -p $REMOTE_FIRESIM_SYSROOT
|
||||
./scripts/build-libelf.sh $REMOTE_FIRESIM_SYSROOT
|
||||
./scripts/build-libdwarf.sh $REMOTE_FIRESIM_SYSROOT
|
||||
cd $REMOTE_CHIPYARD_DIR
|
||||
|
||||
make -C $REMOTE_CHIPYARD_DIR/tools/dromajo/dromajo-src/src
|
||||
|
||||
TOOLS_DIR=$REMOTE_RISCV_DIR
|
||||
|
||||
LD_LIB_DIR=$REMOTE_FIRESIM_SYSROOT/lib:$REMOTE_RISCV_DIR/lib
|
||||
|
||||
# Run Firesim Scala Tests
|
||||
export RISCV=$TOOLS_DIR
|
||||
export LD_LIBRARY_PATH=$LD_LIB_DIR
|
||||
export FIRESIM_ENV_SOURCED=1;
|
||||
export PATH=$REMOTE_VERILATOR_DIR/bin:$PATH
|
||||
export VERILATOR_ROOT=$REMOTE_VERILATOR_DIR
|
||||
export COURSIER_CACHE=$REMOTE_WORK_DIR/.coursier-cache
|
||||
make -C $REMOTE_FIRESIM_DIR JAVA_OPTS="$REMOTE_JAVA_OPTS" SBT_OPTS="$REMOTE_SBT_OPTS" testOnly ${mapping[$1]}
|
||||
121
.github/scripts/run-tests.sh
vendored
Executable file
121
.github/scripts/run-tests.sh
vendored
Executable file
@@ -0,0 +1,121 @@
|
||||
#!/bin/bash
|
||||
|
||||
# run the different tests
|
||||
|
||||
# turn echo on and error on earliest command
|
||||
set -ex
|
||||
|
||||
# get remote exec variables
|
||||
SCRIPT_DIR="$( cd "$( dirname "$0" )" && pwd )"
|
||||
source $SCRIPT_DIR/defaults.sh
|
||||
|
||||
export RISCV="$GITHUB_WORKSPACE/riscv-tools-install"
|
||||
export LD_LIBRARY_PATH="$RISCV/lib"
|
||||
export PATH="$RISCV/bin:$PATH"
|
||||
|
||||
DISABLE_SIM_PREREQ="BREAK_SIM_PREREQ=1"
|
||||
|
||||
run_bmark () {
|
||||
make run-bmark-tests-fast -j$CI_MAKE_NPROC -C $LOCAL_SIM_DIR $DISABLE_SIM_PREREQ $@
|
||||
}
|
||||
|
||||
run_asm () {
|
||||
make run-asm-tests-fast -j$CI_MAKE_NPROC -C $LOCAL_SIM_DIR $DISABLE_SIM_PREREQ $@
|
||||
}
|
||||
|
||||
run_both () {
|
||||
run_bmark $@
|
||||
run_asm $@
|
||||
}
|
||||
|
||||
run_tracegen () {
|
||||
make tracegen -C $LOCAL_SIM_DIR $DISABLE_SIM_PREREQ $@
|
||||
}
|
||||
|
||||
case $1 in
|
||||
chipyard-rocket)
|
||||
run_bmark ${mapping[$1]}
|
||||
;;
|
||||
chipyard-dmirocket)
|
||||
run_bmark ${mapping[$1]}
|
||||
;;
|
||||
chipyard-lbwif)
|
||||
run_bmark ${mapping[$1]}
|
||||
;;
|
||||
chipyard-boom)
|
||||
run_bmark ${mapping[$1]}
|
||||
;;
|
||||
chipyard-hetero)
|
||||
run_bmark ${mapping[$1]}
|
||||
;;
|
||||
rocketchip)
|
||||
run_bmark ${mapping[$1]}
|
||||
;;
|
||||
chipyard-hwacha)
|
||||
export RISCV=$LOCAL_ESP_DIR
|
||||
export LD_LIBRARY_PATH=$LOCAL_ESP_DIR/lib
|
||||
export PATH=$RISCV/bin:$PATH
|
||||
make run-rv64uv-p-asm-tests -j$CI_MAKE_NPROC -C $LOCAL_SIM_DIR $DISABLE_SIM_PREREQ ${mapping[$1]}
|
||||
;;
|
||||
chipyard-gemmini)
|
||||
export RISCV=$LOCAL_ESP_DIR
|
||||
export LD_LIBRARY_PATH=$LOCAL_ESP_DIR/lib
|
||||
export PATH=$RISCV/bin:$PATH
|
||||
GEMMINI_SOFTWARE_DIR=$LOCAL_SIM_DIR/../../generators/gemmini/software/gemmini-rocc-tests
|
||||
rm -rf $GEMMINI_SOFTWARE_DIR/riscv-tests
|
||||
cd $LOCAL_SIM_DIR
|
||||
make -C $LOCAL_SIM_DIR $DISABLE_SIM_PREREQ ${mapping[$1]} run-binary-fast BINARY=$GEMMINI_SOFTWARE_DIR/build/bareMetalC/aligned-baremetal
|
||||
make -C $LOCAL_SIM_DIR $DISABLE_SIM_PREREQ ${mapping[$1]} run-binary-fast BINARY=$GEMMINI_SOFTWARE_DIR/build/bareMetalC/raw_hazard-baremetal
|
||||
make -C $LOCAL_SIM_DIR $DISABLE_SIM_PREREQ ${mapping[$1]} run-binary-fast BINARY=$GEMMINI_SOFTWARE_DIR/build/bareMetalC/mvin_mvout-baremetal
|
||||
;;
|
||||
chipyard-sha3)
|
||||
export RISCV=$LOCAL_ESP_DIR
|
||||
export LD_LIBRARY_PATH=$LOCAL_ESP_DIR/lib
|
||||
export PATH=$RISCV/bin:$PATH
|
||||
(cd $LOCAL_CHIPYARD_DIR/generators/sha3/software && ./build.sh)
|
||||
make -C $LOCAL_SIM_DIR $DISABLE_SIM_PREREQ ${mapping[$1]} run-binary-fast BINARY=$LOCAL_CHIPYARD_DIR/generators/sha3/software/tests/bare/sha3-rocc.riscv
|
||||
;;
|
||||
chipyard-streaming-passthrough)
|
||||
make -C $LOCAL_CHIPYARD_DIR/tests
|
||||
make -C $LOCAL_SIM_DIR $DISABLE_SIM_PREREQ ${mapping[$1]} run-binary-fast BINARY=$LOCAL_CHIPYARD_DIR/tests/streaming-passthrough.riscv
|
||||
;;
|
||||
chipyard-streaming-fir)
|
||||
make -C $LOCAL_CHIPYARD_DIR/tests
|
||||
make -C $LOCAL_SIM_DIR $DISABLE_SIM_PREREQ ${mapping[$1]} run-binary-fast BINARY=$LOCAL_CHIPYARD_DIR/tests/streaming-fir.riscv
|
||||
;;
|
||||
chipyard-spiflashread)
|
||||
make -C $LOCAL_CHIPYARD_DIR/tests
|
||||
make -C $LOCAL_SIM_DIR $DISABLE_SIM_PREREQ ${mapping[$1]} BINARY=$LOCAL_CHIPYARD_DIR/tests/spiflashread.riscv SIM_FLAGS="+spiflash0=${LOCAL_CHIPYARD_DIR}/tests/spiflash.img" run-binary-fast
|
||||
;;
|
||||
chipyard-spiflashwrite)
|
||||
make -C $LOCAL_CHIPYARD_DIR/tests
|
||||
make -C $LOCAL_SIM_DIR $DISABLE_SIM_PREREQ ${mapping[$1]} BINARY=$LOCAL_CHIPYARD_DIR/tests/spiflashwrite.riscv SIM_FLAGS="+spiflash0=${LOCAL_CHIPYARD_DIR}/tests/spiflash.img" run-binary-fast
|
||||
[[ "`xxd $LOCAL_CHIPYARD_DIR/tests/spiflash.img | grep 1337\ 00ff\ aa55\ face | wc -l`" == "6" ]] || false
|
||||
;;
|
||||
tracegen)
|
||||
run_tracegen ${mapping[$1]}
|
||||
;;
|
||||
tracegen-boom)
|
||||
run_tracegen ${mapping[$1]}
|
||||
;;
|
||||
chipyard-cva6)
|
||||
make run-binary-fast -C $LOCAL_SIM_DIR $DISABLE_SIM_PREREQ ${mapping[$1]} BINARY=$RISCV/riscv64-unknown-elf/share/riscv-tests/benchmarks/multiply.riscv
|
||||
;;
|
||||
chipyard-sodor)
|
||||
run_asm ${mapping[$1]}
|
||||
;;
|
||||
chipyard-nvdla)
|
||||
make -C $LOCAL_CHIPYARD_DIR/tests
|
||||
make -C $LOCAL_SIM_DIR $DISABLE_SIM_PREREQ ${mapping[$1]} BINARY=$LOCAL_CHIPYARD_DIR/tests/nvdla.riscv run-binary-fast
|
||||
;;
|
||||
icenet)
|
||||
make run-binary-fast BINARY=none -C $LOCAL_SIM_DIR $DISABLE_SIM_PREREQ ${mapping[$1]}
|
||||
;;
|
||||
testchipip)
|
||||
make run-binary-fast BINARY=none -C $LOCAL_SIM_DIR $DISABLE_SIM_PREREQ ${mapping[$1]}
|
||||
;;
|
||||
*)
|
||||
echo "No set of tests for $1. Did you spell it right?"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
704
.github/workflows/chipyard-run-tests.yml
vendored
Normal file
704
.github/workflows/chipyard-run-tests.yml
vendored
Normal file
@@ -0,0 +1,704 @@
|
||||
name: chipyard-ci-process
|
||||
|
||||
on: [push]
|
||||
|
||||
env:
|
||||
tools-cache-version: v13
|
||||
BUILDSERVER: ${{ secrets.BUILDSERVER }}
|
||||
BUILDUSER: ${{ secrets.BUILDUSER }}
|
||||
SERVER: ${{ secrets.BUILDUSER }}@${{ secrets.BUILDSERVER }}
|
||||
CI_DIR: ${{ secrets.BUILDDIR }}
|
||||
JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit
|
||||
|
||||
jobs:
|
||||
cancel-prior-workflows:
|
||||
name: cancel-prior-workflows
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Cancel Previous Runs
|
||||
uses: styfle/cancel-workflow-action@0.9.1
|
||||
with:
|
||||
access_token: ${{ github.token }}
|
||||
|
||||
commit-on-master-check:
|
||||
name: commit-on-master-check
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: ucbbar/chipyard-ci-image:554b436
|
||||
options: --entrypoint /bin/bash
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
- uses: ./.github/actions/job-start
|
||||
id: job-start
|
||||
- name: Check commits of each submodule
|
||||
if: steps.job-start.outputs.run_result != 'success'
|
||||
run: .github/scripts/check-commit.sh
|
||||
- uses: ./.github/actions/job-end
|
||||
|
||||
tutorial-setup-check:
|
||||
name: tutorial-setup-check
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: ucbbar/chipyard-ci-image:554b436
|
||||
options: --entrypoint /bin/bash
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
- uses: ./.github/actions/job-start
|
||||
id: job-start
|
||||
- name: Check that the tutorial-setup patches apply
|
||||
if: steps.job-start.outputs.run_result != 'success'
|
||||
run: scripts/tutorial-setup.sh
|
||||
- uses: ./.github/actions/job-end
|
||||
|
||||
documentation-check:
|
||||
name: documentation-check
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: ucbbar/chipyard-ci-image:554b436
|
||||
options: --entrypoint /bin/bash
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
- uses: ./.github/actions/job-start
|
||||
id: job-start
|
||||
- name: Check that documentation builds with no warnings/errors
|
||||
if: steps.job-start.outputs.run_result != 'success'
|
||||
run: |
|
||||
sudo apt-get update -y
|
||||
sudo apt-get install -y python3-pip
|
||||
sudo pip3 install -r docs/requirements.txt
|
||||
make -C docs html
|
||||
- name: Show error log from sphinx if failed
|
||||
if: ${{ steps.job-start.outputs.run_result != 'success' && failure() }}
|
||||
run: cat /tmp/sphinx-err*.log
|
||||
- uses: ./.github/actions/job-end
|
||||
|
||||
install-toolchains:
|
||||
name: install-toolchains
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: ucbbar/chipyard-ci-image:554b436
|
||||
options: --entrypoint /bin/bash
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
- uses: ./.github/actions/job-start
|
||||
id: job-start
|
||||
- name: Build RISC-V toolchains
|
||||
if: steps.job-start.outputs.run_result != 'success'
|
||||
uses: ./.github/actions/toolchain-build
|
||||
- uses: ./.github/actions/job-end
|
||||
|
||||
build-extra-tests:
|
||||
name: build-extra-tests
|
||||
needs: install-toolchains
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: ucbbar/chipyard-ci-image:554b436
|
||||
options: --entrypoint /bin/bash
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
- uses: ./.github/actions/job-start
|
||||
id: job-start
|
||||
- name: Build RISC-V toolchains
|
||||
if: steps.job-start.outputs.run_result != 'success'
|
||||
uses: ./.github/actions/toolchain-build
|
||||
- name: Generate keys
|
||||
if: steps.job-start.outputs.run_result != 'success'
|
||||
id: genkey
|
||||
run: |
|
||||
echo "::set-output name=extra-tests-cache-key::extra-tests-${{ github.ref }}-${{ github.sha }}"
|
||||
- uses: actions/cache@v2
|
||||
if: steps.job-start.outputs.run_result != 'success'
|
||||
id: build-extra-tools-cache
|
||||
with:
|
||||
path: extra-tests-install
|
||||
key: ${{ steps.genkey.outputs.extra-tests-cache-key }}
|
||||
restore-keys: ${{ steps.genkey.outputs.extra-tests-cache-key }}
|
||||
- name: Build extra tests
|
||||
if: steps.job-start.outputs.run_result != 'success'
|
||||
run: .github/scripts/build-extra-tests.sh
|
||||
- uses: ./.github/actions/job-end
|
||||
|
||||
install-verilator:
|
||||
name: install-verilator
|
||||
runs-on: self-hosted
|
||||
needs: cancel-prior-workflows
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
- uses: ./.github/actions/job-start
|
||||
id: job-start
|
||||
- name: Build verilator on self-hosted
|
||||
if: steps.job-start.outputs.run_result != 'success'
|
||||
run: .github/scripts/remote-install-verilator.sh
|
||||
- uses: ./.github/actions/job-end
|
||||
|
||||
# Sentinel job to simplify how we specify which that basic setup is complete
|
||||
#
|
||||
# When adding new prep jobs, please add them to `needs` below
|
||||
setup-complete:
|
||||
name: setup-complete
|
||||
needs: [install-toolchains, install-verilator, build-extra-tests]
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Set up complete
|
||||
run: echo Set up is complete!
|
||||
|
||||
##########################################################################
|
||||
|
||||
prepare-chipyard-cores:
|
||||
name: prepare-chipyard-cores
|
||||
needs: setup-complete
|
||||
runs-on: self-hosted
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
- uses: ./.github/actions/job-start
|
||||
id: job-start
|
||||
- name: Build RTL on self-hosted
|
||||
if: steps.job-start.outputs.run_result != 'success'
|
||||
uses: ./.github/actions/prepare-rtl
|
||||
with:
|
||||
group-key: "group-cores"
|
||||
- uses: ./.github/actions/job-end
|
||||
|
||||
prepare-chipyard-peripherals:
|
||||
name: prepare-chipyard-peripherals
|
||||
needs: setup-complete
|
||||
runs-on: self-hosted
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
- uses: ./.github/actions/job-start
|
||||
id: job-start
|
||||
- name: Build RTL on self-hosted
|
||||
if: steps.job-start.outputs.run_result != 'success'
|
||||
uses: ./.github/actions/prepare-rtl
|
||||
with:
|
||||
group-key: "group-peripherals"
|
||||
- uses: ./.github/actions/job-end
|
||||
|
||||
prepare-chipyard-accels:
|
||||
name: prepare-chipyard-accels
|
||||
needs: setup-complete
|
||||
runs-on: self-hosted
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
- uses: ./.github/actions/job-start
|
||||
id: job-start
|
||||
- name: Build RTL on self-hosted
|
||||
if: steps.job-start.outputs.run_result != 'success'
|
||||
uses: ./.github/actions/prepare-rtl
|
||||
with:
|
||||
group-key: "group-accels"
|
||||
- uses: ./.github/actions/job-end
|
||||
|
||||
prepare-chipyard-tracegen:
|
||||
name: prepare-chipyard-tracegen
|
||||
needs: setup-complete
|
||||
runs-on: self-hosted
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
- uses: ./.github/actions/job-start
|
||||
id: job-start
|
||||
- name: Build RTL on self-hosted
|
||||
if: steps.job-start.outputs.run_result != 'success'
|
||||
uses: ./.github/actions/prepare-rtl
|
||||
with:
|
||||
group-key: "group-tracegen"
|
||||
- uses: ./.github/actions/job-end
|
||||
|
||||
prepare-chipyard-other:
|
||||
name: prepare-chipyard-other
|
||||
needs: setup-complete
|
||||
runs-on: self-hosted
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
- uses: ./.github/actions/job-start
|
||||
id: job-start
|
||||
- name: Build RTL on self-hosted
|
||||
if: steps.job-start.outputs.run_result != 'success'
|
||||
uses: ./.github/actions/prepare-rtl
|
||||
with:
|
||||
group-key: "group-other"
|
||||
- uses: ./.github/actions/job-end
|
||||
|
||||
prepare-chipyard-fpga:
|
||||
name: prepare-chipyard-fpga
|
||||
needs: setup-complete
|
||||
runs-on: self-hosted
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
- uses: ./.github/actions/job-start
|
||||
id: job-start
|
||||
- name: Build RTL on self-hosted
|
||||
if: steps.job-start.outputs.run_result != 'success'
|
||||
uses: ./.github/actions/prepare-rtl
|
||||
with:
|
||||
group-key: "group-fpga"
|
||||
build-type: "fpga"
|
||||
- uses: ./.github/actions/job-end
|
||||
|
||||
##########################################################################
|
||||
|
||||
chipyard-rocket-run-tests:
|
||||
name: chipyard-rocket-run-tests
|
||||
needs: prepare-chipyard-cores
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: ucbbar/chipyard-ci-image:554b436
|
||||
options: --entrypoint /bin/bash
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
- uses: ./.github/actions/job-start
|
||||
id: job-start
|
||||
- name: Run tests
|
||||
if: steps.job-start.outputs.run_result != 'success'
|
||||
uses: ./.github/actions/run-tests
|
||||
with:
|
||||
group-key: "group-cores"
|
||||
project-key: "chipyard-rocket"
|
||||
- uses: ./.github/actions/job-end
|
||||
|
||||
chipyard-hetero-run-tests:
|
||||
name: chipyard-hetero-run-tests
|
||||
needs: prepare-chipyard-cores
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: ucbbar/chipyard-ci-image:554b436
|
||||
options: --entrypoint /bin/bash
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
- uses: ./.github/actions/job-start
|
||||
id: job-start
|
||||
- name: Run tests
|
||||
if: steps.job-start.outputs.run_result != 'success'
|
||||
uses: ./.github/actions/run-tests
|
||||
with:
|
||||
group-key: "group-cores"
|
||||
project-key: "chipyard-hetero"
|
||||
- uses: ./.github/actions/job-end
|
||||
|
||||
chipyard-boom-run-tests:
|
||||
name: chipyard-boom-run-tests
|
||||
needs: prepare-chipyard-cores
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: ucbbar/chipyard-ci-image:554b436
|
||||
options: --entrypoint /bin/bash
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
- uses: ./.github/actions/job-start
|
||||
id: job-start
|
||||
- name: Run tests
|
||||
if: steps.job-start.outputs.run_result != 'success'
|
||||
uses: ./.github/actions/run-tests
|
||||
with:
|
||||
group-key: "group-cores"
|
||||
project-key: "chipyard-boom"
|
||||
- uses: ./.github/actions/job-end
|
||||
|
||||
chipyard-cva6-run-tests:
|
||||
name: chipyard-cva6-run-tests
|
||||
needs: prepare-chipyard-cores
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: ucbbar/chipyard-ci-image:554b436
|
||||
options: --entrypoint /bin/bash
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
- uses: ./.github/actions/job-start
|
||||
id: job-start
|
||||
- name: Run tests
|
||||
if: steps.job-start.outputs.run_result != 'success'
|
||||
uses: ./.github/actions/run-tests
|
||||
with:
|
||||
group-key: "group-cores"
|
||||
project-key: "chipyard-cva6"
|
||||
- uses: ./.github/actions/job-end
|
||||
|
||||
chipyard-sodor-run-tests:
|
||||
name: chipyard-sodor-run-tests
|
||||
needs: prepare-chipyard-cores
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: ucbbar/chipyard-ci-image:554b436
|
||||
options: --entrypoint /bin/bash
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
- uses: ./.github/actions/job-start
|
||||
id: job-start
|
||||
- name: Run tests
|
||||
if: steps.job-start.outputs.run_result != 'success'
|
||||
uses: ./.github/actions/run-tests
|
||||
with:
|
||||
group-key: "group-cores"
|
||||
project-key: "chipyard-sodor"
|
||||
- uses: ./.github/actions/job-end
|
||||
|
||||
chipyard-dmirocket-run-tests:
|
||||
name: chipyard-dmirocket-run-tests
|
||||
needs: prepare-chipyard-peripherals
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: ucbbar/chipyard-ci-image:554b436
|
||||
options: --entrypoint /bin/bash
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
- uses: ./.github/actions/job-start
|
||||
id: job-start
|
||||
- name: Run tests
|
||||
if: steps.job-start.outputs.run_result != 'success'
|
||||
uses: ./.github/actions/run-tests
|
||||
with:
|
||||
group-key: "group-peripherals"
|
||||
project-key: "chipyard-dmirocket"
|
||||
- uses: ./.github/actions/job-end
|
||||
|
||||
chipyard-spiflashwrite-run-tests:
|
||||
name: chipyard-spiflashwrite-run-tests
|
||||
needs: prepare-chipyard-peripherals
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: ucbbar/chipyard-ci-image:554b436
|
||||
options: --entrypoint /bin/bash
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
- uses: ./.github/actions/job-start
|
||||
id: job-start
|
||||
- name: Run tests
|
||||
if: steps.job-start.outputs.run_result != 'success'
|
||||
uses: ./.github/actions/run-tests
|
||||
with:
|
||||
group-key: "group-peripherals"
|
||||
project-key: "chipyard-spiflashwrite"
|
||||
- uses: ./.github/actions/job-end
|
||||
|
||||
chipyard-spiflashread-run-tests:
|
||||
name: chipyard-spiflashread-run-tests
|
||||
needs: prepare-chipyard-peripherals
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: ucbbar/chipyard-ci-image:554b436
|
||||
options: --entrypoint /bin/bash
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
- uses: ./.github/actions/job-start
|
||||
id: job-start
|
||||
- name: Run tests
|
||||
if: steps.job-start.outputs.run_result != 'success'
|
||||
uses: ./.github/actions/run-tests
|
||||
with:
|
||||
group-key: "group-peripherals"
|
||||
project-key: "chipyard-spiflashread"
|
||||
- uses: ./.github/actions/job-end
|
||||
|
||||
chipyard-lbwif-run-tests:
|
||||
name: chipyard-lbwif-run-tests
|
||||
needs: prepare-chipyard-peripherals
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: ucbbar/chipyard-ci-image:554b436
|
||||
options: --entrypoint /bin/bash
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
- uses: ./.github/actions/job-start
|
||||
id: job-start
|
||||
- name: Run tests
|
||||
if: steps.job-start.outputs.run_result != 'success'
|
||||
uses: ./.github/actions/run-tests
|
||||
with:
|
||||
group-key: "group-peripherals"
|
||||
project-key: "chipyard-lbwif"
|
||||
- uses: ./.github/actions/job-end
|
||||
|
||||
chipyard-sha3-run-tests:
|
||||
name: chipyard-sha3-run-tests
|
||||
needs: prepare-chipyard-accels
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: ucbbar/chipyard-ci-image:554b436
|
||||
options: --entrypoint /bin/bash
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
- uses: ./.github/actions/job-start
|
||||
id: job-start
|
||||
- name: Run tests
|
||||
if: steps.job-start.outputs.run_result != 'success'
|
||||
uses: ./.github/actions/run-tests
|
||||
with:
|
||||
group-key: "group-accels"
|
||||
project-key: "chipyard-sha3"
|
||||
- uses: ./.github/actions/job-end
|
||||
|
||||
chipyard-streaming-fir-run-tests:
|
||||
name: chipyard-streaming-fir-run-tests
|
||||
needs: prepare-chipyard-accels
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: ucbbar/chipyard-ci-image:554b436
|
||||
options: --entrypoint /bin/bash
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
- uses: ./.github/actions/job-start
|
||||
id: job-start
|
||||
- name: Run tests
|
||||
if: steps.job-start.outputs.run_result != 'success'
|
||||
uses: ./.github/actions/run-tests
|
||||
with:
|
||||
group-key: "group-accels"
|
||||
project-key: "chipyard-streaming-fir"
|
||||
- uses: ./.github/actions/job-end
|
||||
|
||||
chipyard-streaming-passthrough-run-tests:
|
||||
name: chipyard-streaming-passthrough-run-tests
|
||||
needs: prepare-chipyard-accels
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: ucbbar/chipyard-ci-image:554b436
|
||||
options: --entrypoint /bin/bash
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
- uses: ./.github/actions/job-start
|
||||
id: job-start
|
||||
- name: Run tests
|
||||
if: steps.job-start.outputs.run_result != 'success'
|
||||
uses: ./.github/actions/run-tests
|
||||
with:
|
||||
group-key: "group-accels"
|
||||
project-key: "chipyard-streaming-passthrough"
|
||||
- uses: ./.github/actions/job-end
|
||||
|
||||
chipyard-hwacha-run-tests:
|
||||
name: chipyard-hwacha-run-tests
|
||||
needs: prepare-chipyard-accels
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: ucbbar/chipyard-ci-image:554b436
|
||||
options: --entrypoint /bin/bash
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
- uses: ./.github/actions/job-start
|
||||
id: job-start
|
||||
- name: Run tests
|
||||
if: steps.job-start.outputs.run_result != 'success'
|
||||
uses: ./.github/actions/run-tests
|
||||
with:
|
||||
group-key: "group-accels"
|
||||
project-key: "chipyard-hwacha"
|
||||
- uses: ./.github/actions/job-end
|
||||
|
||||
chipyard-gemmini-run-tests:
|
||||
name: chipyard-gemmini-run-tests
|
||||
needs: prepare-chipyard-accels
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: ucbbar/chipyard-ci-image:554b436
|
||||
options: --entrypoint /bin/bash
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
- uses: ./.github/actions/job-start
|
||||
id: job-start
|
||||
- name: Run tests
|
||||
if: steps.job-start.outputs.run_result != 'success'
|
||||
uses: ./.github/actions/run-tests
|
||||
with:
|
||||
group-key: "group-accels"
|
||||
project-key: "chipyard-gemmini"
|
||||
- uses: ./.github/actions/job-end
|
||||
|
||||
chipyard-nvdla-run-tests:
|
||||
name: chipyard-nvdla-run-tests
|
||||
needs: prepare-chipyard-accels
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: ucbbar/chipyard-ci-image:554b436
|
||||
options: --entrypoint /bin/bash
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
- uses: ./.github/actions/job-start
|
||||
id: job-start
|
||||
- name: Run tests
|
||||
if: steps.job-start.outputs.run_result != 'success'
|
||||
uses: ./.github/actions/run-tests
|
||||
with:
|
||||
group-key: "group-accels"
|
||||
project-key: "chipyard-nvdla"
|
||||
- uses: ./.github/actions/job-end
|
||||
|
||||
tracegen-boom-run-tests:
|
||||
name: tracegen-boom-run-tests
|
||||
needs: prepare-chipyard-tracegen
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: ucbbar/chipyard-ci-image:554b436
|
||||
options: --entrypoint /bin/bash
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
- uses: ./.github/actions/job-start
|
||||
id: job-start
|
||||
- name: Run tests
|
||||
if: steps.job-start.outputs.run_result != 'success'
|
||||
uses: ./.github/actions/run-tests
|
||||
with:
|
||||
group-key: "group-tracegen"
|
||||
project-key: "tracegen-boom"
|
||||
- uses: ./.github/actions/job-end
|
||||
|
||||
tracegen-run-tests:
|
||||
name: tracegen-run-tests
|
||||
needs: prepare-chipyard-tracegen
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: ucbbar/chipyard-ci-image:554b436
|
||||
options: --entrypoint /bin/bash
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
- uses: ./.github/actions/job-start
|
||||
id: job-start
|
||||
- name: Run tests
|
||||
if: steps.job-start.outputs.run_result != 'success'
|
||||
uses: ./.github/actions/run-tests
|
||||
with:
|
||||
group-key: "group-tracegen"
|
||||
project-key: "tracegen"
|
||||
- uses: ./.github/actions/job-end
|
||||
|
||||
icenet-run-tests:
|
||||
name: icenet-run-tests
|
||||
needs: prepare-chipyard-other
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: ucbbar/chipyard-ci-image:554b436
|
||||
options: --entrypoint /bin/bash
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
- uses: ./.github/actions/job-start
|
||||
id: job-start
|
||||
- name: Run tests
|
||||
if: steps.job-start.outputs.run_result != 'success'
|
||||
uses: ./.github/actions/run-tests
|
||||
with:
|
||||
group-key: "group-other"
|
||||
project-key: "icenet"
|
||||
- uses: ./.github/actions/job-end
|
||||
|
||||
testchipip-run-tests:
|
||||
name: testchipip-run-tests
|
||||
needs: prepare-chipyard-other
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: ucbbar/chipyard-ci-image:554b436
|
||||
options: --entrypoint /bin/bash
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
- uses: ./.github/actions/job-start
|
||||
id: job-start
|
||||
- name: Run tests
|
||||
if: steps.job-start.outputs.run_result != 'success'
|
||||
uses: ./.github/actions/run-tests
|
||||
with:
|
||||
group-key: "group-other"
|
||||
project-key: "testchipip"
|
||||
- uses: ./.github/actions/job-end
|
||||
|
||||
firesim-run-tests:
|
||||
name: firesim-run-tests
|
||||
needs: setup-complete
|
||||
runs-on: self-hosted
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
- uses: ./.github/actions/job-start
|
||||
id: job-start
|
||||
- name: Run tests on self-hosted
|
||||
if: steps.job-start.outputs.run_result != 'success'
|
||||
uses: ./.github/actions/run-tests
|
||||
with:
|
||||
group-key: "extra-tests"
|
||||
project-key: "firesim"
|
||||
run-script: "remote-run-firesim-scala-tests.sh"
|
||||
- uses: ./.github/actions/job-end
|
||||
|
||||
fireboom-run-tests:
|
||||
name: fireboom-run-tests
|
||||
needs: setup-complete
|
||||
runs-on: self-hosted
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
- uses: ./.github/actions/job-start
|
||||
id: job-start
|
||||
- name: Run tests on self-hosted
|
||||
if: steps.job-start.outputs.run_result != 'success'
|
||||
uses: ./.github/actions/run-tests
|
||||
with:
|
||||
group-key: "extra-tests"
|
||||
project-key: "fireboom"
|
||||
run-script: "remote-run-firesim-scala-tests.sh"
|
||||
- uses: ./.github/actions/job-end
|
||||
|
||||
firesim-multiclock-run-tests:
|
||||
name: firesim-multiclock-run-tests
|
||||
needs: setup-complete
|
||||
runs-on: self-hosted
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
- uses: ./.github/actions/job-start
|
||||
id: job-start
|
||||
- name: Run tests on self-hosted
|
||||
if: steps.job-start.outputs.run_result != 'success'
|
||||
uses: ./.github/actions/run-tests
|
||||
with:
|
||||
group-key: "extra-tests"
|
||||
project-key: "firesim-multiclock"
|
||||
run-script: "remote-run-firesim-scala-tests.sh"
|
||||
- uses: ./.github/actions/job-end
|
||||
|
||||
# Sentinel job to simplify how we specify which checks need to pass in branch
|
||||
# protection and in Mergify
|
||||
#
|
||||
# When adding new top level jobs, please add them to `needs` below
|
||||
all_tests_passed:
|
||||
name: "all tests passed"
|
||||
needs: [commit-on-master-check, tutorial-setup-check, documentation-check,
|
||||
chipyard-rocket-run-tests, chipyard-hetero-run-tests, chipyard-boom-run-tests, chipyard-cva6-run-tests,
|
||||
chipyard-sodor-run-tests, chipyard-dmirocket-run-tests, chipyard-spiflashwrite-run-tests,
|
||||
chipyard-spiflashread-run-tests, chipyard-lbwif-run-tests, chipyard-sha3-run-tests,
|
||||
chipyard-streaming-fir-run-tests, chipyard-streaming-passthrough-run-tests, chipyard-hwacha-run-tests,
|
||||
chipyard-gemmini-run-tests, chipyard-nvdla-run-tests,
|
||||
tracegen-boom-run-tests, tracegen-run-tests,
|
||||
icenet-run-tests, testchipip-run-tests,
|
||||
prepare-chipyard-fpga,
|
||||
firesim-run-tests, fireboom-run-tests, firesim-multiclock-run-tests]
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- run: echo Success!
|
||||
@@ -1,7 +1,6 @@
|
||||

|
||||
|
||||
# Chipyard Framework [](https://circleci.com/gh/ucb-bar/chipyard/tree/master)
|
||||
|
||||
# Chipyard Framework [](https://github.com/ucb-bar/chipyard/actions)
|
||||
## Using Chipyard
|
||||
|
||||
To get started using Chipyard, see the documentation on the Chipyard documentation site: https://chipyard.readthedocs.io/
|
||||
|
||||
25
common.mk
25
common.mk
@@ -31,7 +31,8 @@ EXTRA_SIM_REQS ?=
|
||||
#----------------------------------------------------------------------------
|
||||
HELP_SIMULATION_VARIABLES += \
|
||||
" EXTRA_SIM_FLAGS = additional runtime simulation flags (passed within +permissive)" \
|
||||
" NUMACTL = set to '1' to wrap simulator in the appropriate numactl command"
|
||||
" NUMACTL = set to '1' to wrap simulator in the appropriate numactl command" \
|
||||
" BREAK_SIM_PREREQ = when running a binary, doesn't rebuild RTL on source changes"
|
||||
|
||||
EXTRA_SIM_FLAGS ?=
|
||||
NUMACTL ?= 0
|
||||
@@ -192,16 +193,22 @@ ifeq (,$(BINARY))
|
||||
$(error BINARY variable is not set. Set it to the simulation binary)
|
||||
endif
|
||||
|
||||
# allow you to override sim prereq
|
||||
ifeq (,$(BREAK_SIM_PREREQ))
|
||||
SIM_PREREQ = $(sim)
|
||||
SIM_DEBUG_PREREQ = $(sim_debug)
|
||||
endif
|
||||
|
||||
# run normal binary with hardware-logged insn dissassembly
|
||||
run-binary: $(output_dir) $(sim) check-binary
|
||||
run-binary: $(output_dir) $(SIM_PREREQ) check-binary
|
||||
(set -o pipefail && $(NUMA_PREFIX) $(sim) $(PERMISSIVE_ON) $(SIM_FLAGS) $(EXTRA_SIM_FLAGS) $(SEED_FLAG) $(VERBOSE_FLAGS) $(PERMISSIVE_OFF) $(BINARY) </dev/null 2> >(spike-dasm > $(sim_out_name).out) | tee $(sim_out_name).log)
|
||||
|
||||
# run simulator as fast as possible (no insn disassembly)
|
||||
run-binary-fast: $(output_dir) $(sim) check-binary
|
||||
run-binary-fast: $(output_dir) $(SIM_PREREQ) check-binary
|
||||
(set -o pipefail && $(NUMA_PREFIX) $(sim) $(PERMISSIVE_ON) $(SIM_FLAGS) $(EXTRA_SIM_FLAGS) $(SEED_FLAG) $(PERMISSIVE_OFF) $(BINARY) </dev/null | tee $(sim_out_name).log)
|
||||
|
||||
# run simulator with as much debug info as possible
|
||||
run-binary-debug: $(output_dir) $(sim_debug) check-binary
|
||||
run-binary-debug: $(output_dir) $(SIM_DEBUG_PREREQ) check-binary
|
||||
(set -o pipefail && $(NUMA_PREFIX) $(sim_debug) $(PERMISSIVE_ON) $(SIM_FLAGS) $(EXTRA_SIM_FLAGS) $(SEED_FLAG) $(VERBOSE_FLAGS) $(WAVEFORM_FLAG) $(PERMISSIVE_OFF) $(BINARY) </dev/null 2> >(spike-dasm > $(sim_out_name).out) | tee $(sim_out_name).log)
|
||||
|
||||
run-fast: run-asm-tests-fast run-bmark-tests-fast
|
||||
@@ -213,19 +220,19 @@ $(binary_hex): $(output_dir) $(BINARY)
|
||||
$(base_dir)/scripts/smartelf2hex.sh $(BINARY) > $(binary_hex)
|
||||
|
||||
run-binary-hex: check-binary
|
||||
run-binary-hex: $(output_dir) $(sim) $(binary_hex)
|
||||
run-binary-hex: $(output_dir) $(SIM_PREREQ) $(binary_hex)
|
||||
run-binary-hex: run-binary
|
||||
run-binary-hex: override LOADMEM_ADDR = 80000000
|
||||
run-binary-hex: override LOADMEM = $(binary_hex)
|
||||
run-binary-hex: override SIM_FLAGS += +loadmem=$(LOADMEM) +loadmem_addr=$(LOADMEM_ADDR)
|
||||
run-binary-debug-hex: check-binary
|
||||
run-binary-debug-hex: $(output_dir) $(sim) $(binary_hex)
|
||||
run-binary-debug-hex: $(output_dir) $(SIM_DEBUG_REREQ) $(binary_hex)
|
||||
run-binary-debug-hex: run-binary-debug
|
||||
run-binary-debug-hex: override LOADMEM_ADDR = 80000000
|
||||
run-binary-debug-hex: override LOADMEM = $(binary_hex)
|
||||
run-binary-debug-hex: override SIM_FLAGS += +loadmem=$(LOADMEM) +loadmem_addr=$(LOADMEM_ADDR)
|
||||
run-binary-fast-hex: check-binary
|
||||
run-binary-fast-hex: $(output_dir) $(sim) $(binary_hex)
|
||||
run-binary-fast-hex: $(output_dir) $(SIM_PREREQ) $(binary_hex)
|
||||
run-binary-fast-hex: run-binary-fast
|
||||
run-binary-fast-hex: override LOADMEM_ADDR = 80000000
|
||||
run-binary-fast-hex: override LOADMEM = $(binary_hex)
|
||||
@@ -240,10 +247,10 @@ $(output_dir):
|
||||
$(output_dir)/%: $(RISCV)/riscv64-unknown-elf/share/riscv-tests/isa/% $(output_dir)
|
||||
ln -sf $< $@
|
||||
|
||||
$(output_dir)/%.run: $(output_dir)/% $(sim)
|
||||
$(output_dir)/%.run: $(output_dir)/% $(SIM_PREREQ)
|
||||
(set -o pipefail && $(NUMA_PREFIX) $(sim) $(PERMISSIVE_ON) $(SIM_FLAGS) $(EXTRA_SIM_FLAGS) $(SEED_FLAG) $(PERMISSIVE_OFF) $< </dev/null | tee $<.log) && touch $@
|
||||
|
||||
$(output_dir)/%.out: $(output_dir)/% $(sim)
|
||||
$(output_dir)/%.out: $(output_dir)/% $(SIM_PREREQ)
|
||||
(set -o pipefail && $(NUMA_PREFIX) $(sim) $(PERMISSIVE_ON) $(SIM_FLAGS) $(EXTRA_SIM_FLAGS) $(SEED_FLAG) $(VERBOSE_FLAGS) $(PERMISSIVE_OFF) $< </dev/null 2> >(spike-dasm > $@) | tee $<.log)
|
||||
|
||||
#########################################################################################
|
||||
|
||||
@@ -8,7 +8,7 @@ AXE=$(AXE_DIR)/axe
|
||||
$(AXE): $(wildcard $(AXE_DIR)/*.[ch]) $(AXE_DIR)/make.sh
|
||||
cd $(AXE_DIR) && ./make.sh
|
||||
|
||||
$(output_dir)/tracegen.out: $(sim)
|
||||
$(output_dir)/tracegen.out: $(SIM_PREREQ)
|
||||
mkdir -p $(output_dir) && $(sim) $(PERMISSIVE_ON) $(SIM_FLAGS) $(EXTRA_SIM_FLAGS) $(SEED_FLAG) $(VERBOSE_FLAGS) $(PERMISSIVE_OFF) none </dev/null 2> $@
|
||||
|
||||
$(output_dir)/tracegen.result: $(output_dir)/tracegen.out $(AXE)
|
||||
|
||||
Reference in New Issue
Block a user