Download .github/workflows/ci.yml from Snapkitty/bit-string-accelerator: direct link, hf CLI and curl.
- Browser
- Download file 5.28 kB
-
https://huggingface.co/Snapkitty/bit-string-accelerator/resolve/main/.github/workflows/ci.yml
- Command line
-
hf download hf://Snapkitty/bit-string-accelerator/.github/workflows/ci.yml
-
curl -L -o ci.yml https://huggingface.co/Snapkitty/bit-string-accelerator/resolve/main/.github/workflows/ci.yml
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 | |