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


  # mpw_precheck:
  #   timeout-minutes: 720
  #   runs-on: ubuntu-latest
  #   needs: [pdk, user_project_flow_sky130A]
  #   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 PDKPATH
  #       run: echo "PDKPATH=/home/runner/work/pdk/sky130A" >> $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: 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
  #         export PDKPATH=$PDK_ROOT/sky130A

  #         git clone --depth=1 -b mpw-7a 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/*

  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
        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 user_proj_example
          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

          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: 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
        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 user_proj_example
          make user_project_wrapper

      - 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
