marlin 0.11.3

🦀 No nonsense hardware testing in Rust 🛠️
Documentation
name: CI

on:
  pull_request:
  push:
    branches:
      - main

env:
  CARGO_TERM_COLOR: always
  CARGO_INCREMENTAL: 1 # since we cache
  COLOG: 1

jobs:
  test_verilog:
    strategy:
      matrix:
        os: [ubuntu-latest, macos-15]
    runs-on: ${{ matrix.os }}
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@stable
      - uses: Swatinem/rust-cache@v2
      # TODO: there is currently no good way to actually test the minimum supported Verilator because I can't actually install it
      - name: Install Verilator
        run: |
          if [[ "$(uname)" == 'Darwin' ]]; then
            brew install verilator
          else
            sudo apt-get install -y verilator
          fi
      - name: Manual test
        run: |
          cd examples/verilog-project
          cargo run --package example-verilog-project --bin tutorial
          cargo run --package example-verilog-project --bin tutorial # rerun
          cargo test --package example-verilog-project --test dynamic_model_tutorial -- --exact main
          cargo test --package example-verilog-project --test dpi_tutorial -- --exact main
          cargo test --package example-verilog-project --test visibility_works -- --exact main
      - name: Cargo test
        run: cargo test --package example-verilog-project
      - name: Ensure parallel tests don't clobber
        run: |
          cd examples/verilog-project
          for i in $(seq 1 20); do
            rm -rf artifacts # the simple_test tests use the artifacts directory
            cargo test --package example-verilog-project --test simple_test
          done

  test_spade:
    strategy:
      matrix:
        os: [ubuntu-latest, macos-15]
    runs-on: ${{ matrix.os }}
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@stable
      - uses: Swatinem/rust-cache@v2
      - name: Install Verilator
        run: |
          if [[ "$(uname)" == 'Darwin' ]]; then
            brew install verilator
          else
            sudo apt-get install -y verilator
          fi
          verilator --version
      - name: Install swim
        run: cargo install --locked --git https://gitlab.com/spade-lang/swim --rev 639c5d88db76ef3454af4feef842c37985ca1943
      - name: Test
        run: RUST_LOG=trace cargo test --package example-spade-project

  test_veryl:
    strategy:
      matrix:
        os: [ubuntu-latest, macos-15]
    runs-on: ${{ matrix.os }}
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@stable
      - uses: Swatinem/rust-cache@v2
      - name: Install Verilator
        run: |
          if [[ "$(uname)" == 'Darwin' ]]; then
            brew install verilator
          else
            sudo apt-get install -y verilator
          fi
      - name: Install Veryl
        uses: veryl-lang/setup-veryl@v1
      - name: Test
        run: RUST_LOG=trace cargo test --package example-veryl-project