Update GitHub workflow script
diff --git a/.github/workflows/user_project_ci.yml b/.github/workflows/user_project_ci.yml
index d966d14..eedff4b 100644
--- a/.github/workflows/user_project_ci.yml
+++ b/.github/workflows/user_project_ci.yml
@@ -8,8 +8,7 @@
workflow_dispatch:
jobs:
- precheck:
- timeout-minutes: 720
+ pdk:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
@@ -20,62 +19,120 @@
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- - name: Install Magic
- run: bash ${GITHUB_WORKSPACE}/.github/scripts/install_magic.sh
+ - name: Export PDK ROOT
+ run: echo "PDK_ROOT=/usr/local/pdk" >> $GITHUB_ENV
- - name: Build PDK
- run: bash ${GITHUB_WORKSPACE}/.github/scripts/build_pdk.sh
+ - name: Install dependencies
+ run: |
+ sudo mkdir -p ${{ env.PDK_ROOT }}
+ sudo chown -R $USER:$USER ${{ env.PDK_ROOT }}
+ make install
+ make pdk
- - name: Install The Precheck
- run: git clone --depth=1 https://github.com/efabless/mpw_precheck.git ${GITHUB_WORKSPACE}/mpw_precheck
+ - name: Tarball PDK
+ run: |
+ tar -cf /tmp/sky130A.tar -C $PDK_ROOT/sky130A .
- - name: Run The Precheck
- run: bash ${GITHUB_WORKSPACE}/.github/scripts/run_precheck.sh
+ - name: Upload PDK Tarball
+ uses: actions/upload-artifact@v2
+ with:
+ name: pdk-tarball
+ path: /tmp/sky130A.tar
- # dv_rtl:
- # runs-on: ubuntu-latest
- # steps:
- # - uses: actions/checkout@v2
- # - name: Set up QEMU
- # uses: docker/setup-qemu-action@v1
+ mpw_precheck:
+ timeout-minutes: 720
+ runs-on: ubuntu-latest
+ needs: [pdk]
+ steps:
+ - uses: actions/checkout@v2
- # - name: Set up Docker Buildx
- # uses: docker/setup-buildx-action@v1
+ - name: Set up QEMU
+ uses: docker/setup-qemu-action@v1
- # - name: Install Magic
- # run: bash ${GITHUB_WORKSPACE}/.github/scripts/install_magic.sh
+ - name: Set up Docker Buildx
+ uses: docker/setup-buildx-action@v1
- # - name: Build PDK
- # run: bash ${GITHUB_WORKSPACE}/.github/scripts/build_pdk.sh
+ - name: Export PDK ROOT
+ run: |
+ echo "PDK_ROOT=/usr/local/pdk" >> $GITHUB_ENV
- # - name: Install The Dockerized DV Setup
- # run: docker pull efabless/dv_setup:latest
+ - name: Download PDK Tarball
+ uses: actions/download-artifact@v2
+ with:
+ name: pdk-tarball
+ path: /tmp
- # - name: Run DV tests
- # # Run test number 0,1,2,3,4 in one job <test-ids> <sim-mode>
- # run: bash ${GITHUB_WORKSPACE}/.github/scripts/dv/run-dv-wrapper.sh 0,1,2,3,4 RTL
+ - name: Unpack PDK Tarball
+ run: |
+ sudo mkdir -p ${{ env.PDK_ROOT }}/sky130A
+ sudo chown -R $USER:$USER ${{ env.PDK_ROOT }}
+ tar -xf /tmp/sky130A.tar -C $PDK_ROOT/sky130A .
- # dv_gl:
- # runs-on: ubuntu-latest
- # steps:
- # - uses: actions/checkout@v2
+ - name: Run MPW-Precheck
+ run: |
+ export INPUT_DIRECTORY=$(pwd)
+ export PRECHECK_ROOT=$INPUT_DIRECTORY/mpw_precheck
+ export OUTPUT_DIRECTORY=$INPUT_DIRECTORY/mpw_precheck_result
+ export OUTPUT=$OUTPUT_DIRECTORY/logs/precheck.log
- # - name: Set up QEMU
- # uses: docker/setup-qemu-action@v1
+ git clone --depth=1 -b mpw-5b https://github.com/efabless/mpw_precheck.git
- # - name: Set up Docker Buildx
- # uses: docker/setup-buildx-action@v1
+ docker run -v "$PRECHECK_ROOT":"$PRECHECK_ROOT" -v "$INPUT_DIRECTORY":"$INPUT_DIRECTORY" -v "${{ env.PDK_ROOT }}":"${{ env.PDK_ROOT }}" -e INPUT_DIRECTORY="$INPUT_DIRECTORY" -e PDK_ROOT="${{ env.PDK_ROOT }}" -u $(id -u "$USER"):$(id -g "$USER") efabless/mpw_precheck:latest bash -c "cd $PRECHECK_ROOT; python3 mpw_precheck.py --input_directory $INPUT_DIRECTORY --pdk_root ${{ env.PDK_ROOT }} --output_directory $OUTPUT_DIRECTORY license makefile consistency xor magic_drc klayout_beol klayout_feol klayout_met_min_ca_density klayout_offgrid klayout_pin_label_purposes_overlapping_drawing klayout_zeroarea"
- # - name: Install Magic
- # run: bash ${GITHUB_WORKSPACE}/.github/scripts/install_magic.sh
+ cnt=$(grep -c "All Checks Passed" "$OUTPUT")
+ if ! [[ $cnt ]]; then cnt=0; fi
+ if [[ $cnt -eq 1 ]]; then exit 0; fi
+ exit 2
- # - name: Build PDK
- # run: bash ${GITHUB_WORKSPACE}/.github/scripts/build_pdk.sh
+ user_project_flow:
+ timeout-minutes: 720
+ runs-on: ubuntu-latest
+ needs: [pdk]
+ steps:
+ - uses: actions/checkout@v2
- # - name: Install The Dockerized DV Setup
- # run: docker pull efabless/dv_setup:latest
+ - name: Set up QEMU
+ uses: docker/setup-qemu-action@v1
- # - name: Run DV tests
- # # Run test number 0,1,2,3,4 in one job <test-ids> <sim-mode>
- # run: bash ${GITHUB_WORKSPACE}/.github/scripts/dv/run-dv-wrapper.sh 0,1,2,3,4 GL
+ - name: Set up Docker Buildx
+ uses: docker/setup-buildx-action@v1
+
+ - name: Export PDK ROOT
+ run: echo "PDK_ROOT=/usr/local/pdk" >> $GITHUB_ENV
+
+ - name: Export OPENLANE ROOT
+ run: echo "OPENLANE_ROOT=/home/runner/work/caravel_user_project/openlane" >> $GITHUB_ENV
+
+ - name: Download PDK Tarball
+ uses: actions/download-artifact@v2
+ with:
+ name: pdk-tarball
+ path: /tmp
+
+ - name: Unpack PDK Tarball
+ run: |
+ sudo mkdir -p ${{ env.PDK_ROOT }}/sky130A
+ sudo chown -R $USER:$USER ${{ env.PDK_ROOT }}
+ tar -xf /tmp/sky130A.tar -C $PDK_ROOT/sky130A .
+
+ - name: Install dependencies
+ run: |
+ make install
+ make install_mcw
+ make openlane
+ make simenv
+
+ - name: Harden using Openlane
+ run: |
+ make user_proj_example
+ make user_project_wrapper
+
+ - name: Run DV RTL tests
+ run: |
+ make verify-nec_ir_receiver-rtl
+
+ - name: Run DV GL tests
+ run: |
+ make verify-nec_ir_receiver-gl
+