Update user_project_ci.yml
diff --git a/.github/workflows/user_project_ci.yml b/.github/workflows/user_project_ci.yml
index cf98e1c..9d9ee71 100644
--- a/.github/workflows/user_project_ci.yml
+++ b/.github/workflows/user_project_ci.yml
@@ -11,13 +11,13 @@
   pdk:
     runs-on: ubuntu-latest
     steps:
-      - uses: actions/checkout@v2
+      - uses: actions/checkout@v3
 
       - name: Set up QEMU
-        uses: docker/setup-qemu-action@v1
+        uses: docker/setup-qemu-action@v2
 
       - name: Set up Docker Buildx
-        uses: docker/setup-buildx-action@v1
+        uses: docker/setup-buildx-action@v2
 
       - name: Export PDK ROOT
         run: echo "PDK_ROOT=/home/runner/work/pdk" >> $GITHUB_ENV
@@ -35,28 +35,24 @@
           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
+          
+      - name: populate pdk cache
+        uses: actions/cache@v3
         with:
-          name: pdk-tarball
-          path: /tmp/pdk.tar
+          path: $PDK_ROOT
+          key: ${{ runner.os }}-pdk-${{ github.run_id }}
 
   user_project_flow_gf180mcuC:
     runs-on: ubuntu-latest
     needs: [pdk]
     steps:
-      - uses: actions/checkout@v2
+      - uses: actions/checkout@v3
 
       - name: Set up QEMU
-        uses: docker/setup-qemu-action@v1
+        uses: docker/setup-qemu-action@v2
 
       - name: Set up Docker Buildx
-        uses: docker/setup-buildx-action@v1
+        uses: docker/setup-buildx-action@v2
 
       - name: Export PDK ROOT
         run: echo "PDK_ROOT=/home/runner/work/pdk" >> $GITHUB_ENV
@@ -69,18 +65,12 @@
 
       - name: Export OPENLANE ROOT
         run: echo "OPENLANE_ROOT=/home/runner/work/AS2650/openlane" >> $GITHUB_ENV
-
-      - name: Download PDK Tarball
-        uses: actions/download-artifact@v2
+          
+      - name: restore src cache
+        uses: actions/cache@v3
         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 .
+          path: $PDK_ROOT
+          key: ${{ runner.os }}-pdk-${{ github.run_id }}
 
       - name: Install dependencies
         run: |
@@ -109,14 +99,14 @@
           tar -cf /tmp/gds.tar -C ./gds .
 
       - name: Upload GDS Tarball
-        uses: actions/upload-artifact@v2
+        uses: actions/upload-artifact@v3
         with:
           name: gds-tarball
           path: /tmp/gds.tar
 
       - name: upload failure logs
         if: failure()
-        uses: actions/upload-artifact@v2
+        uses: actions/upload-artifact@v3
         with:
           name: error
           path: |
@@ -126,10 +116,10 @@
     runs-on: ubuntu-latest
     needs: [user_project_flow_gf180mcuC]
     steps:
-      - uses: actions/checkout@v2
+      - uses: actions/checkout@v3
       
       - name: Download GDS Tarball
-        uses: actions/download-artifact@v2
+        uses: actions/download-artifact@v3
         with:
           name: gds-tarball
           path: /tmp