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 user_proj_example
          # make user_project_wrapper
          make my_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 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
        #
        #          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
