SNAPKITTYWEST's picture
October 2026 main drop: mirror from GitHub
0ba037b verified
Raw History Blame Contribute Delete
5.28 kB
name: CI
on:
push:
branches: [main]
pull_request:
workflow_dispatch:
permissions:
contents: read
concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: true
jobs:
hdl:
name: RTL lint and simulation
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- name: Install simulators
run: sudo apt-get update && sudo apt-get install -y --no-install-recommends iverilog verilator
- name: Compact accelerator
run: make lint sim
- name: Compact accelerator, extra random seeds
run: for s in 2 3 4; do make sim-icarus SEED=$s OPS=3000; done
- name: bit_accelerator v2
run: make -C bit_accelerator lint sim
formal:
name: Why3 proofs
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- name: Install Why3 and Z3
run: |
sudo apt-get update && sudo apt-get install -y --no-install-recommends why3 z3
why3 config detect
- name: Compact accelerator proofs
run: make formal
- name: bit_accelerator v2 proofs
run: make -C bit_accelerator formal
spice:
name: SPICE timing model
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- run: sudo apt-get update && sudo apt-get install -y --no-install-recommends ngspice
- run: make spice
gpu:
name: Rust OpenCL crate (gpu/)
runs-on: ubuntu-24.04
defaults:
run:
working-directory: gpu
steps:
- uses: actions/checkout@v4
- name: Install OpenCL (PoCL CPU device)
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends pocl-opencl-icd ocl-icd-opencl-dev clinfo
clinfo -l
- uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt, clippy
- uses: Swatinem/rust-cache@v2
with:
workspaces: gpu
- run: cargo fmt --check
- run: cargo clippy --all-targets -- -D warnings
# Serial: PoCL 5.0 can abort (pocl_release_dlhandle_cache assertion) when
# several OpenCL contexts are released from different threads at once.
- run: cargo test
env:
RUST_TEST_THREADS: "1"
- run: cargo run --quiet
fpga:
name: FPGA build (lint, UART testbench, host co-simulation, bitstreams)
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- name: Install FPGA toolchain
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends iverilog verilator yosys \
nextpnr-ice40 nextpnr-ecp5 fpga-icestorm fpga-trellis
- uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt, clippy
- uses: Swatinem/rust-cache@v2
with:
workspaces: fpga/host
- run: make -C fpga lint sim host cosim icebreaker ulx3s
- uses: actions/upload-artifact@v4
with:
name: bitstreams
path: |
fpga/build/icebreaker.bin
fpga/build/ulx3s.bit
fpga/build/*_pnr.log
fpga-gate-level:
name: FPGA gate-level simulation (${{ matrix.arch }})
runs-on: ubuntu-24.04
strategy:
matrix:
arch: [ice40, ecp5]
steps:
- uses: actions/checkout@v4
- run: sudo apt-get update && sudo apt-get install -y --no-install-recommends iverilog yosys
- run: make -C fpga gl-sim-${{ matrix.arch }}
asic:
name: sky130 synthesis and equivalence
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- run: sudo apt-get update && sudo apt-get install -y --no-install-recommends yosys
- run: make -C asic all
- uses: actions/upload-artifact@v4
with:
name: sky130-netlist
path: |
asic/build/bit_accelerator_sky130.v
asic/build/area.rpt
pcie:
name: PCIe engine (lint, equivalence vs reference core)
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- run: sudo apt-get update && sudo apt-get install -y --no-install-recommends iverilog verilator
# The simulation runs are independent make targets; the largest geometry takes ~6 minutes.
- run: make -C pcie -j$(nproc) lint sim sim-verilator
pcie-cosim:
name: PCIe SoC generation + host co-simulation + throughput
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- run: sudo apt-get update && sudo apt-get install -y --no-install-recommends verilator
- uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install LiteX
run: |
for r in m-labs/migen enjoy-digital/litex litex-hub/litex-boards enjoy-digital/litepcie \
enjoy-digital/litedram enjoy-digital/liteeth enjoy-digital/litescope; do
git clone --depth 1 https://github.com/$r /tmp/$(basename $r)
pip install -e /tmp/$(basename $r)
done
- run: make -C pcie soc cosim perf
tapeout:
name: Tiny Tapeout project (sync, RTL test)
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- run: sudo apt-get update && sudo apt-get install -y --no-install-recommends iverilog
- run: make -C tapeout check-sync test