Skip to content
Latchkey

verilator workflow (StanfordAHA/garnet)

The verilator workflow from StanfordAHA/garnet, explained and optimized by Latchkey.

C

CI health: C - fair

Point runs-on at Latchkey and get run de-duplication, job timeouts, self-healing for flaky steps, and up to 58% lower cost, applied automatically.

Grade your own workflow free or run it on Latchkey →
Source: StanfordAHA/garnet.github/workflows/verilator.ymlLicense BSD-3-ClauseView source

What it does

This is the verilator workflow from the StanfordAHA/garnet repository, a real project running GitHub Actions. It is shown here with attribution under its BSD-3-Clause license.

Below, Latchkey shows a faster, safer version produced by its optimization engine.

The workflow

workflow (.yml)
name: verilator

# Run on every push (PR's do pushes too I think)
on:
  push:

jobs:
  build:

    runs-on: ubuntu-latest
    if: "!contains(github.event.head_commit.message, 'skip ci')"

    steps:
    - uses: actions/checkout@v6

    - name: Checkout submodules
      shell: bash
      run: |
        git submodule sync --recursive
        git submodule update --init --force --recursive --depth=1

    - name: Run test
      shell: bash
      run: |
        tests/test_app/test_app.sh --fp 4x2 tests/fp_pointwise

# Not running these tests b/c takes too long
        # tests/test_app/test_app.sh  4x16 tests/gaussian (40min)
        # tests/test_app/test_app.sh 28x16 tests/pointwise (2.5hr)

The same workflow, on Latchkey

Removes redundant runs and caps runaway jobs. Added and changed lines are highlighted.

name: verilator
 
# Run on every push (PR's do pushes too I think)
on:
  push:
 
concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true
 
jobs:
  build:
    timeout-minutes: 30
 
    runs-on: latchkey-small
    if: "!contains(github.event.head_commit.message, 'skip ci')"
 
    steps:
    - uses: actions/checkout@v6
 
    - name: Checkout submodules
      shell: bash
      run: |
        git submodule sync --recursive
        git submodule update --init --force --recursive --depth=1
 
    - name: Run test
      shell: bash
      run: |
        tests/test_app/test_app.sh --fp 4x2 tests/fp_pointwise
 
# Not running these tests b/c takes too long
        # tests/test_app/test_app.sh  4x16 tests/gaussian (40min)
        # tests/test_app/test_app.sh 28x16 tests/pointwise (2.5hr)
 

What changed

This workflow runs 1 job per trigger. On Latchkey the same minutes cost up to 58% less than GitHub-hosted, with zero queue time.

Actions used in this workflow