Add randomly generated values for undefined bits in FFI #264
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# SPDX-FileCopyrightText: 2022 Google LLC | |
# | |
# SPDX-License-Identifier: Apache-2.0 | |
name: CI | |
on: [push] | |
# Updating Rust versions: | |
# | |
# When updating to a newer (or older) version of Rust for the main build process | |
# then the version should be updated in the /rust-toolchain.toml file too. | |
# That file determines which version gets used locally on developer machines. | |
jobs: | |
license-check: | |
runs-on: ubuntu-22.04 | |
container: | |
image: ubuntu:22.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: REUSE Compliance Check | |
uses: fsfe/reuse-action@v2 | |
rust-checks: | |
name: Rust checks | |
runs-on: ubuntu-22.04 | |
container: | |
image: ubuntu:22.04 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install dependencies | |
run: | | |
apt-get update | |
apt-get install -y curl build-essential | |
- uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: 1.67 # See Note [Updating Rust versions] | |
profile: minimal | |
target: riscv32imc-unknown-none-elf | |
components: clippy, rustfmt | |
- name: Rust formatting | |
uses: actions-rs/cargo@v1 | |
with: | |
command: fmt | |
args: --all -- --check | |
- uses: actions-rs/clippy-check@v1 | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
args: --target riscv32imc-unknown-none-elf --all-features | |
rust-build-programs: | |
name: Build Programs | |
runs-on: ubuntu-22.04 | |
container: | |
image: ubuntu:22.04 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install dependencies | |
run: | | |
apt-get update | |
apt-get install -y curl build-essential | |
- uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: 1.67.1 # See Note [Updating Rust versions] | |
profile: minimal | |
target: riscv32imc-unknown-none-elf | |
components: clippy, rustfmt | |
- name: Caching | |
uses: Swatinem/rust-cache@v2 | |
- name: Build release binaries | |
uses: actions-rs/cargo@v1 | |
with: | |
command: build | |
args: --release | |
- name: Build debug binaries | |
uses: actions-rs/cargo@v1 | |
with: | |
command: build | |
- name: Archive Integration Test Binaries | |
run: | | |
cd clash-vexriscv-sim; sh bundle_test_binaries.sh | |
- name: Upload Integration Test Binaries | |
uses: actions/upload-artifact@v3 | |
with: | |
name: vexriscv-test-binaries | |
path: clash-vexriscv-sim/vexriscv-test-binaries.tar | |
vex-riscv: | |
name: VexRiscv integration | |
runs-on: ubuntu-22.04 | |
needs: [rust-build-programs] | |
strategy: | |
fail-fast: false | |
matrix: | |
ghc: | |
- "9.0.2" | |
- "9.2.8" | |
- "9.4.8" | |
container: | |
image: ghcr.io/clash-lang/clash-vexriscv-ci:${{ matrix.ghc }}-20240329 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Update Cabal index info | |
run: | | |
cp .github/cabal.project cabal.project.local | |
cabal update | |
cabal freeze | |
- name: Cache | |
uses: actions/cache@v3 | |
with: | |
path: | | |
~/.local/state/cabal/store/ | |
key: packages-cachebust-3-${{ matrix.ghc }}-${{ hashFiles('cabal.project.freeze', 'cabal.project') }} | |
restore-keys: packages-cachebust-3-${{ matrix.ghc }} | |
- name: Stash existing VexRiscv.v | |
run: | | |
cp clash-vexriscv/example-cpu/VexRiscv.v clash-vexriscv/example-cpu/VexRiscv.v.comitted | |
- name: Build clash-vexriscv | |
run: | | |
export PKG_CONFIG_PATH=/opt/share/pkgconfig/:${PKG_CONFIG_PATH} | |
cabal build clash-vexriscv | |
- name: Check whether committed VexRiscv.v corresponds to generated one | |
run: | | |
diff -u clash-vexriscv/example-cpu/VexRiscv.v clash-vexriscv/example-cpu/VexRiscv.v.comitted | |
- name: Build clash-vexriscv-sim | |
run: | | |
cabal build clash-vexriscv-sim | |
- name: Download VexRiscv Integration Tests | |
uses: actions/download-artifact@v3 | |
with: | |
name: vexriscv-test-binaries | |
- name: Work around dubious owner error | |
run: | | |
git config --global --add safe.directory "$(pwd)" | |
- name: Extract VexRiscv Integration Tests | |
run: | | |
tar -x -f vexriscv-test-binaries.tar | |
- name: OpenOCD bin symlink | |
run: | | |
ln -s /opt/bin/openocd /opt/bin/openocd-vexriscv | |
- name: Run `clash-vexriscv` unittests | |
run: | | |
cabal run clash-vexriscv:unittests | |
- name: Run `clash-vexriscv-sim` unittests | |
run: | | |
cabal run clash-vexriscv-sim:unittests -- -j2 | |
- name: Run `clash-vexriscv-sim` HDL test | |
run: | | |
cabal run clash-vexriscv-sim:hdl-test |