name: CI

on:
  # Runs on Every Push
  push:
  # Runs on Pull Requests
  pull_request:
  workflow_dispatch:

jobs:
  pdk:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2

      - name: Set up QEMU
        uses: docker/setup-qemu-action@v1

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v1

      - name: Export PDK ROOT
        run: echo "PDK_ROOT=/home/runner/work/pdk" >> $GITHUB_ENV
      
      - name: Export OPENLANE ROOT
        run: echo "OPENLANE_ROOT=/home/runner/work/caravel_user_project/openlane" >> $GITHUB_ENV

      - name: Install dependencies
        run: |
          sudo mkdir -p ${{ env.PDK_ROOT }}
          sudo chown -R $USER:$USER ${{ env.PDK_ROOT }}
          make install
          make openlane
          make pdk-with-volare

      - name: Tarball PDK
        run: |
          tar -cf /tmp/pdk.tar -C $PDK_ROOT .

      - name: Upload PDK Tarball
        uses: actions/upload-artifact@v2
        with:
          name: pdk-tarball
          path: /tmp/pdk.tar

  user_project_flow_sky130A:
    timeout-minutes: 720
    runs-on: ubuntu-latest
    needs: [pdk]
    steps:
      - uses: actions/checkout@v2

      - name: Set up QEMU
        uses: docker/setup-qemu-action@v1

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v1

      - name: Export PDK ROOT
        run: echo "PDK_ROOT=/home/runner/work/pdk" >> $GITHUB_ENV

      - name: Export PDK PATH
        run: echo "PDKPATH=/home/runner/work/pdk/sky130A" >> $GITHUB_ENV

      - name: Export PDK
        run: echo "PDK=sky130A" >> $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 }}
          sudo chown -R $USER:$USER ${{ env.PDK_ROOT }}
          tar -xf /tmp/pdk.tar -C $PDK_ROOT .

      - name: Install dependencies
        run: |
          make install
          make install_mcw
          make openlane
          make simenv

      - name: Harden using Openlane
        run: |
          make dadda_multiplier
          make user_project_wrapper

      - name: run 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
          export PDKPATH=$PDK_ROOT/sky130A

          git clone --depth=1 -b mpw-7d https://github.com/efabless/mpw_precheck.git

          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 }}" -e PDKPATH="${{ env.PDKPATH }}" -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_path ${{ env.PDKPATH }} --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"

          cnt=$(grep -c "All Checks Passed" "$OUTPUT")
          if ! [[ $cnt ]]; then cnt=0; fi
          if [[ $cnt -eq 1 ]]; then exit 0; fi
          exit 2
      
      - name: upload failure logs
        if: failure()
        uses: actions/upload-artifact@v2
        with:
          name: error
          path: |
            /home/runner/work/caravel_user_project/caravel_user_project/mpw_precheck_result/logs/*

      - name: Run DV RTL tests
        run: |
          make verify-io_ports-rtl 
          make verify-la_test1-rtl 
          make verify-la_test2-rtl 
          make verify-mprj_stimulus-rtl 
          make verify-wb_port-rtl

      - name: Run DV GL tests
        run: |
          make verify-io_ports-gl 
          make verify-la_test1-gl 
          make verify-la_test2-gl 
          make verify-mprj_stimulus-gl 
          make verify-wb_port-gl

  user_project_flow_sky130B:
    timeout-minutes: 720
    runs-on: ubuntu-latest
    needs: [pdk]
    steps:
      - uses: actions/checkout@v2

      - name: Set up QEMU
        uses: docker/setup-qemu-action@v1

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v1

      - name: Export PDK ROOT
        run: echo "PDK_ROOT=/home/runner/work/pdk" >> $GITHUB_ENV

      - name: Export PDK PATH
        run: echo "PDKPATH=/home/runner/work/pdk/sky130B" >> $GITHUB_ENV

      - name: Export PDK
        run: echo "PDK=sky130B" >> $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 }}
          sudo chown -R $USER:$USER ${{ env.PDK_ROOT }}
          tar -xf /tmp/pdk.tar -C $PDK_ROOT .

      - name: Install dependencies
        run: |
          make install
          make install_mcw
          make openlane
          make simenv

      - name: Harden using Openlane
        run: |
          make dadda_multiplier
          make user_project_wrapper

      - name: run 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

          git clone --depth=1 -b mpw-7d https://github.com/efabless/mpw_precheck.git

          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 }}" -e PDKPATH="${{ env.PDKPATH }}" -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_path ${{ env.PDKPATH }} --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"

          cnt=$(grep -c "All Checks Passed" "$OUTPUT")
          if ! [[ $cnt ]]; then cnt=0; fi
          if [[ $cnt -eq 1 ]]; then exit 0; fi
          exit 2

      - name: upload failure logs
        if: failure()
        uses: actions/upload-artifact@v2
        with:
          name: error
          path: |
            /home/runner/work/caravel_user_project/caravel_user_project/mpw_precheck_result/logs/*

      - name: Run DV RTL tests
        run: |
          make verify-io_ports-rtl 
          make verify-la_test1-rtl 
          make verify-la_test2-rtl 
          make verify-mprj_stimulus-rtl 
          make verify-wb_port-rtl

      - name: Run DV GL tests
        run: |
          make verify-io_ports-gl 
          make verify-la_test1-gl 
          make verify-la_test2-gl 
          make verify-mprj_stimulus-gl 
          make verify-wb_port-gl
