Files
Uri Shaked f6bf5c587f ci(test-harden): install the ihp-sg13cmos5l PDK and use LibreLane 3.1.0.dev3
- Fetch the pinned IHP-Open-PDK dev checkout into PDK_ROOT, the same revision and
  recipe tt-gds-action@ihp-cmos5l uses in install_sg13cmos5l.sh, and write a
  SOURCES file so tt_tool.py can report the PDK version.
- Bump the IHP-only LibreLane to 3.1.0.dev3 (the cmos5l magic techfile needs
  magic >= 8.3.657; 3.0.x ships 8.3.623).
- Harden the cmos5l factory test (ttihp0p4-factory-test) instead of the sg13g2
  ttihp25b one.
2026-09-17 20:36:03 +02:00

117 lines
3.8 KiB
YAML

name: GDS Hardening Tests
on:
push:
pull_request:
workflow_dispatch:
jobs:
harden:
strategy:
fail-fast: false
matrix:
pdk: [sky130A, ihp-sg13cmos5l, gf180mcuD]
runs-on: ubuntu-24.04
env:
PDK: ${{ matrix.pdk }}
PDK_ROOT: /home/runner/pdk
PROJECT_DIR: /home/runner/project
LIBRELANE_VERSION: '2.4.2'
LIBRELANE_VERSION_DEV: '3.1.0.dev3'
IHP_PDK_REPO: 'https://github.com/IHP-GmbH/IHP-Open-PDK.git'
IHP_PDK_REV: '2bbec755dc67ca3db0261c3d6163e15735d66710'
steps:
- name: Check out code
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
cache: 'pip'
- name: Install dependencies
run: pip install -r requirements.txt
- name: Install librelane
if: "${{ matrix.pdk != 'ihp-sg13cmos5l' }}"
run: pip install librelane==${LIBRELANE_VERSION}
# LibreLane 2.4.2 does not support ihp-sg13cmos5l.
- name: Install librelane 3 dev (IHP only)
if: "${{ matrix.pdk == 'ihp-sg13cmos5l' }}"
run: pip install librelane==${LIBRELANE_VERSION_DEV}
- name: Install ihp-sg13cmos5l PDK
if: "${{ matrix.pdk == 'ihp-sg13cmos5l' }}"
run: |
mkdir -p "$PDK_ROOT"
git -C "$PDK_ROOT" init -q
git -C "$PDK_ROOT" fetch -q --depth 1 "$IHP_PDK_REPO" "$IHP_PDK_REV"
git -C "$PDK_ROOT" checkout -q FETCH_HEAD
# Record the PDK source revision, like ciel-installed PDKs do
echo "IHP-Open-PDK $IHP_PDK_REV" > "$PDK_ROOT/ihp-sg13cmos5l/SOURCES"
- name: Clone the factory test
if: "${{ matrix.pdk != 'ihp-sg13cmos5l' }}"
run: git clone https://github.com/tinytapeout/ttsky25a-factory-test ${PROJECT_DIR}
- name: Clone the factory test (ihp-sg13cmos5l)
if: "${{ matrix.pdk == 'ihp-sg13cmos5l' }}"
run: git clone https://github.com/TinyTapeout/ttihp0p4-factory-test ${PROJECT_DIR}
- name: Configure tt_tool.py args (IHP)
if: "${{ matrix.pdk == 'ihp-sg13cmos5l' }}"
run: echo "TT_TOOL_ARGS=--ihp" >> $GITHUB_ENV
- name: Configure tt_tool.py args (gf180mcuD)
if: "${{ matrix.pdk == 'gf180mcuD' }}"
run: echo "TT_TOOL_ARGS=--gf" >> $GITHUB_ENV
- name: Copy tt-support-tools to the project directory
run: cp -r . ${PROJECT_DIR}/tt
- name: Create user config
working-directory: ${{ env.PROJECT_DIR }}
run: python ./tt/tt_tool.py $TT_TOOL_ARGS --create-user-config
- name: Harden
working-directory: ${{ env.PROJECT_DIR }}
run: python ./tt/tt_tool.py $TT_TOOL_ARGS --harden
- name: Create TT submission
working-directory: ${{ env.PROJECT_DIR }}
run: python ./tt/tt_tool.py $TT_TOOL_ARGS --create-tt-submission
- name: Print stats
working-directory: ${{ env.PROJECT_DIR }}
run: |
set -e
python ./tt/tt_tool.py $TT_TOOL_ARGS --print-stats --print-warnings --print-cell-summary --print-cell-category | tee $GITHUB_STEP_SUMMARY
- name: Create SVG render
working-directory: ${{ env.PROJECT_DIR }}
run: python ./tt/tt_tool.py $TT_TOOL_ARGS --create-svg
- name: Upload GDS logs
uses: actions/upload-artifact@v4
with:
name: gds-${{ matrix.pdk }}
path: ${{ env.PROJECT_DIR }}/runs/wokwi
- name: Upload TT submission
uses: actions/upload-artifact@v4
with:
name: tt-submission-${{ matrix.pdk }}
path: ${{ env.PROJECT_DIR }}/tt_submission
- name: Upload SVG render
uses: actions/upload-artifact@v4
with:
name: svg-render-${{ matrix.pdk }}
path: ${{ env.PROJECT_DIR }}/gds_render.svg