Files
retroSoC/.github/workflows/_regression.yml
T
dependabot[bot] bbbfcb8bf9 build(deps): bump actions/upload-artifact from 4.3.3 to 7.0.2
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.3.3 to 7.0.2.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/65462800fd760344b1a7b4382951275a0abb4808...cf430e030ddbb5b0abf93d22962f4752f3646cd9)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: 7.0.2
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-10-11 10:53:16 +00:00

149 lines
5.2 KiB
YAML

name: reusable regression
on:
workflow_call:
inputs:
suite:
description: Regression suite from scripts/regress.py
required: true
type: string
pdk:
description: PDK matrix selected by scripts/regress.py
required: true
type: string
profile:
description: Primary profile used for setup and environment checks
required: true
type: string
retention_days:
description: Report artifact retention
required: false
default: 30
type: number
timeout_minutes:
description: Maximum job duration
required: false
default: 360
type: number
toolset:
description: Space-separated locked tools required by this suite
required: false
default: verilator sv2v iverilog yosys opensta openocd sbt riscv_gnu
type: string
full_flow_checks:
description: Check Yosys and OpenSTA environments before running the suite
required: false
default: true
type: boolean
formal_checks:
description: Check the SBY, Yosys, sv2v, and Bitwuzla formal environment before the suite
required: false
default: false
type: boolean
permissions:
contents: read
jobs:
regression:
runs-on: ubuntu-22.04
timeout-minutes: ${{ inputs.timeout_minutes }}
env:
PIP_DISABLE_PIP_VERSION_CHECK: "1"
steps:
- name: Check out repository
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- name: Restore locked source dependencies
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
with:
path: |
app/coremark/coremark-main
app/fatfs/ff16
physical/pdk/IHP-Open-PDK
physical/pdk/gf180mcu-pdk
physical/pdk/icsprout55-pdk
physical/pdk/skywater-pdk
rtl/managed/clusterip/archinfo
rtl/managed/clusterip/common
rtl/managed/clusterip/crc
rtl/managed/clusterip/ps2
rtl/managed/clusterip/pwm
rtl/managed/clusterip/rng
rtl/managed/clusterip/rtc
rtl/managed/clusterip/wdg
rtl/managed/third_party
rtl/managed/mpw
.cache/retrosoc/pdk
.cache/retrosoc/stamps
key: sources-${{ inputs.pdk }}-${{ runner.os }}-${{ hashFiles('dependencies/dependencies.lock.json') }}
- name: Restore locked toolchains
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
with:
path: |
.cache/retrosoc/downloads
.cache/retrosoc/toolchains
key: tools-${{ runner.os }}-${{ hashFiles('dependencies/dependencies.lock.json') }}
- name: Restore Verilator compiler cache
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
with:
path: .cache/retrosoc/ccache
key: ccache-${{ runner.os }}-${{ hashFiles('dependencies/dependencies.lock.json') }}-${{ github.sha }}-${{ github.run_id }}-${{ github.run_attempt }}
restore-keys: |
ccache-${{ runner.os }}-${{ hashFiles('dependencies/dependencies.lock.json') }}-${{ github.sha }}-
ccache-${{ runner.os }}-${{ hashFiles('dependencies/dependencies.lock.json') }}-
- name: Install build Python dependency
run: python3 -m pip install --requirement requirements/build.txt
- name: Set up locked EDA and compiler tools
uses: ./.github/actions/locked-tools
with:
tools: ${{ inputs.toolset }}
- name: Set up locked source dependencies
run: make CONFIG=${{ inputs.profile }} setup
- name: Check behavioral environments
run: |
make CONFIG=${{ inputs.profile }} \
SIMU=IVERILOG SYNTH=NONE STA=NONE doctor
make CONFIG=${{ inputs.profile }} \
SIMU=VERILATOR SYNTH=NONE STA=NONE doctor
- name: Check synthesis and timing environments
if: inputs.full_flow_checks
run: |
make CONFIG=${{ inputs.profile }} \
SIMU=IVERILOG SYNTH=YOSYS STA=NONE doctor
make CONFIG=${{ inputs.profile }} \
SIMU=IVERILOG SYNTH=NONE STA=OPENSTA doctor
- name: Check formal environment
if: inputs.formal_checks
run: make CONFIG=${{ inputs.profile }} formal-doctor
- name: Run ${{ inputs.suite }} regression
run: >-
python3 scripts/regress.py --root . --suite "${{ inputs.suite }}"
--pdk "${{ inputs.pdk }}" --behavioral-only
- name: Upload reports and structured results
if: always()
uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
with:
name: ${{ inputs.suite }}-regression-${{ github.run_id }}-${{ github.run_attempt }}
path: |
build/**/meta/*.json
build/**/formal/**/*.sby
build/**/formal/**/*.smt2
build/**/formal/**/*.vcd
build/**/formal/**/*.yw
build/**/formal/**/status
build/**/*.log
build/**/*.rpt
if-no-files-found: warn
retention-days: ${{ inputs.retention_days }}