name: GDS Hardening Tests on: push: pull_request: workflow_dispatch: jobs: harden: strategy: fail-fast: false matrix: pdk: [sky130A, ihp-sg13g2, ihp-sg13cmos5l, gf180mcuD] runs-on: ubuntu-24.04 env: PDK: ${{ matrix.pdk }} PDK_ROOT: /home/runner/pdk PROJECT_DIR: /home/runner/project LIBRELANE_VERSION: '3.1.0.dev4' TT_TOOL_ARGS: --pdk ${{ matrix.pdk }} 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 run: pip install librelane==${LIBRELANE_VERSION} - name: Clone the factory test if: "${{ matrix.pdk != 'ihp-sg13g2' && matrix.pdk != 'ihp-sg13cmos5l' }}" run: git clone https://github.com/tinytapeout/ttsky25a-factory-test ${PROJECT_DIR} - name: Clone the factory test (ihp-sg13g2) if: "${{ matrix.pdk == 'ihp-sg13g2' }}" run: git clone https://github.com/TinyTapeout/ttihp25b-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: 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