Skip to content

Fix some readthedocs issues. #135

Fix some readthedocs issues.

Fix some readthedocs issues. #135

Workflow file for this run

on:
push:
branches-ignore:
- update-yosys-*
- renovate/*
pull_request:
name: CI
# TODO: Print outputs on failing steps. This can be done with something like:
# gzip -c cover.vcd | base64 | base64 -d | gunzip > cover-out.vcd
jobs:
ci-quickstart:
name: Minimal Dependencies Check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.11"
- uses: pdm-project/setup-pdm@v4
with:
python-version: 3.11
cache: false
- uses: dtolnay/rust-toolchain@stable
with:
targets: riscv32i-unknown-none-elf
# Simulate installing Amaranth with builtin-yosys outside of PDM.
- name: Install Minimal Deps
run: |
pdm run python -m ensurepip
pdm run python -m pip install amaranth[builtin-yosys]
pdm install --prod
# Test code gen both within and outside a PDM script.
- name: Test Generate Verilog with Minimal Deps
run: |
pdm run python -m sentinel.gen -o sentinel-direct.v
pdm gen -o sentinel-pdm.v
- name: Test Import
run: pdm run python -c 'from sentinel.top import Top'
- name: Install PDM Demo Groups and Prepare YoWASP
run: |
pdm install -G examples -G yowasp
pdm use-yowasp
- name: Check Demo Bitstream Generation with Minimal Deps
run: |
pdm demo -i csr -p ice40_hx8k_b_evn
pdm demo-rust -i csr -p ice40_hx8k_b_evn
ci-basic:
name: Basic CI Check
strategy:
matrix:
os: [ubuntu-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.11"
- uses: pdm-project/setup-pdm@v4
with:
python-version: 3.11
cache: true
- uses: dtolnay/rust-toolchain@stable
with:
targets: riscv32i-unknown-none-elf
# GCC already installed.
# - name: Install riscv64 GCC (for tests) and x64 GCC Linker Driver (for Rust)
# run: sudo apt install -y gcc-riscv64-unknown-elf gcc
- name: Install riscv64 GCC (for tests)
run: sudo apt install -y gcc-riscv64-unknown-elf
- name: Set oss-cad-suite vars (for cache)
run: |
echo >> $GITHUB_ENV OSS_CAD_SUITE_DATE=$(cat ci/oss-cad-suite-version)
- name: Cache OSS CAD Suite
id: cache-oss-cad-suite
uses: actions/cache@v4
with:
path: ~/cache/
key: ${{ runner.os }}-${{ env.OSS_CAD_SUITE_DATE }}
- name: Download OSS CAD Suite
if: steps.cache-oss-cad-suite.outputs.cache-hit != 'true'
run: |
mkdir -p ~/cache/oss-cad-suite-linux-x64
wget https://github.com/YosysHQ/oss-cad-suite-build/releases/download/$OSS_CAD_SUITE_DATE/oss-cad-suite-linux-x64-$(echo $OSS_CAD_SUITE_DATE | sed s/-//g).tgz -nv -O oss-cad-suite-linux-x64.tar.gz
tar -xzf oss-cad-suite-linux-x64.tar.gz -C ~/cache/oss-cad-suite-linux-x64
- name: Set OSS CAD Suite path
run: echo >> $GITHUB_PATH `echo ~/cache/oss-cad-suite-linux-x64/*/bin`
- name: Install PDM dependencies
run: pdm install -G lint -G examples -G dev
- name: Lint
if: ${{ github.event_name == 'push' && contains(github.ref, 'refs/tags/') }}
run: |
pdm run lint
- name: Run Pytest Tests
run: |
pdm test-quick
- name: Test Generate Verilog
# LD_PRELOAD, which GHA seems to set by default, interferes with
# oss-cad-suite setup by mixing incompatible libcs, so unset it
# for any commands requiring yosys/nextpnr.
run: |
LD_PRELOAD="" pdm gen -o sentinel.v
# Test that the following generates correctly:
# 1. IceStick, Wishbone Periphs, Default demo. This is also
# benchmarked in the next step separately.
# 2. HX8K Eval, CSR Periphs, Rust demo
- name: Check Gateware Generation
run: |
LD_PRELOAD="" pdm demo -n
LD_PRELOAD="" pdm demo-rust -n -p ice40_hx8k_b_evn -i csr
# Get an idea of whether the full default prime-counting firmware
# demo fits into 1280 LUTs or exceeds it a bit. This also
# checks whether a demo bitstream build was successful.
#
# I will remove continue-on-error once I'm confident the demo
# fits into 1280 LUTs on more than just my machines (*nix/Win).
# HINT: abc compiled with clang seems to optimize worse than abc
# compiled with gcc, regardless of OS.
- name: Benchmark Demo Bitstream
continue-on-error: true
run: |
LD_PRELOAD="" pdm bench-luts
ci-riscof:
name: RISCOF Check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.11"
- uses: pdm-project/setup-pdm@v4
with:
python-version: 3.11
cache: true
- name: Install riscv64 GCC (for tests)
run: sudo apt install -y gcc-riscv64-unknown-elf
- name: Set oss-cad-suite vars (for cache)
run: |
echo >> $GITHUB_ENV OSS_CAD_SUITE_DATE=$(cat ci/oss-cad-suite-version)
- name: Cache OSS CAD Suite
id: cache-oss-cad-suite
uses: actions/cache@v4
with:
path: ~/cache/
key: ${{ runner.os }}-${{ env.OSS_CAD_SUITE_DATE }}
- name: Download OSS CAD Suite
if: steps.cache-oss-cad-suite.outputs.cache-hit != 'true'
run: |
mkdir -p ~/cache/oss-cad-suite-linux-x64
wget https://github.com/YosysHQ/oss-cad-suite-build/releases/download/$OSS_CAD_SUITE_DATE/oss-cad-suite-linux-x64-$(echo $OSS_CAD_SUITE_DATE | sed s/-//g).tgz -nv -O oss-cad-suite-linux-x64.tar.gz
tar -xzf oss-cad-suite-linux-x64.tar.gz -C ~/cache/oss-cad-suite-linux-x64
- name: Set OSS CAD Suite path
run: echo >> $GITHUB_PATH `echo ~/cache/oss-cad-suite-linux-x64/*/bin`
- name: Install PDM dependencies
run: pdm install -G dev -G riscof
- name: Run RISCOF Suite
run: |
LD_PRELOAD="" pdm riscof-all
ci-rvformal:
name: RISC-V Formal Check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.11"
- uses: pdm-project/setup-pdm@v4
with:
python-version: 3.11
cache: true
- name: Install riscv64 GCC (for tests)
run: sudo apt install -y gcc-riscv64-unknown-elf
- name: Set oss-cad-suite vars (for cache)
run: |
echo >> $GITHUB_ENV OSS_CAD_SUITE_DATE=$(cat ci/oss-cad-suite-version)
- name: Cache OSS CAD Suite
id: cache-oss-cad-suite
uses: actions/cache@v4
with:
path: ~/cache/
key: ${{ runner.os }}-${{ env.OSS_CAD_SUITE_DATE }}
- name: Download OSS CAD Suite
if: steps.cache-oss-cad-suite.outputs.cache-hit != 'true'
run: |
mkdir -p ~/cache/oss-cad-suite-linux-x64
wget https://github.com/YosysHQ/oss-cad-suite-build/releases/download/$OSS_CAD_SUITE_DATE/oss-cad-suite-linux-x64-$(echo $OSS_CAD_SUITE_DATE | sed s/-//g).tgz -nv -O oss-cad-suite-linux-x64.tar.gz
tar -xzf oss-cad-suite-linux-x64.tar.gz -C ~/cache/oss-cad-suite-linux-x64
- name: Set OSS CAD Suite path
run: echo >> $GITHUB_PATH `echo ~/cache/oss-cad-suite-linux-x64/*/bin`
- name: Install PDM dependencies
run: pdm install -G dev
- name: Run RISC-V Formal
run: |
LD_PRELOAD="" pdm rvformal-all