Merge branch 'main' into kareefardi-patch-1
diff --git a/.github/workflows/user_project_ci.yml b/.github/workflows/user_project_ci.yml
index d3e9f0c..0377c64 100644
--- a/.github/workflows/user_project_ci.yml
+++ b/.github/workflows/user_project_ci.yml
@@ -35,13 +35,13 @@
 
       - name: Tarball PDK
         run: |
-          tar -cf /tmp/sky130A.tar -C $PDK_ROOT/sky130A .
+          tar -cf /tmp/pdk.tar -C $PDK_ROOT .
 
       - name: Upload PDK Tarball
         uses: actions/upload-artifact@v2
         with:
           name: pdk-tarball
-          path: /tmp/sky130A.tar
+          path: /tmp/pdk.tar
 
 
   mpw_precheck:
@@ -72,9 +72,9 @@
 
       - name: Unpack PDK Tarball
         run: |
-          sudo mkdir -p ${{ env.PDK_ROOT }}/sky130A
+          sudo mkdir -p ${{ env.PDK_ROOT }}
           sudo chown -R $USER:$USER ${{ env.PDK_ROOT }}
-          tar -xf /tmp/sky130A.tar -C $PDK_ROOT/sky130A .
+          tar -xf /tmp/pdk.tar -C $PDK_ROOT .
       - name: Run MPW-Precheck
         run: |
           export INPUT_DIRECTORY=$(pwd)
@@ -99,7 +99,7 @@
           path: |
             /home/runner/work/caravel_user_project/caravel_user_project/mpw_precheck_result/logs/*
 
-  user_project_flow:
+  user_project_flow_sky130A:
     timeout-minutes: 720
     runs-on: ubuntu-latest
     needs: [pdk]
@@ -115,6 +115,9 @@
       - 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
 
@@ -126,9 +129,9 @@
 
       - name: Unpack PDK Tarball
         run: |
-          sudo mkdir -p ${{ env.PDK_ROOT }}/sky130A
+          sudo mkdir -p ${{ env.PDK_ROOT }}
           sudo chown -R $USER:$USER ${{ env.PDK_ROOT }}
-          tar -xf /tmp/sky130A.tar -C $PDK_ROOT/sky130A .
+          tar -xf /tmp/pdk.tar -C $PDK_ROOT .
 
       - name: Install dependencies
         run: |
@@ -157,3 +160,65 @@
           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
\ No newline at end of file
diff --git a/Makefile b/Makefile
index 6f8e5b8..c9c8594 100644
--- a/Makefile
+++ b/Makefile
@@ -25,12 +25,14 @@
 export PDK_MAGIC_COMMIT=7d601628e4e05fd17fcb80c3552dacb64e9f6e7b
 export OPENLANE_TAG=2022.02.23_02.50.41
 export MISMATCHES_OK=1
-export PDKPATH?=$(PDK_ROOT)/sky130A
-export PDK?=sky130A
+export PDKPATH?=$(PDK_ROOT)/sky130B
 
 # Install lite version of caravel, (1): caravel-lite, (0): caravel
 CARAVEL_LITE?=1
 
+# PDK switch varient
+export PDK?=sky130B
+
 MPW_TAG ?= mpw-6c
 
 ifeq ($(CARAVEL_LITE),1)
@@ -140,6 +142,11 @@
 # Install Openlane
 .PHONY: openlane
 openlane:
+	@if [ "$$(realpath $${OPENLANE_ROOT})" = "$$(realpath $$(pwd)/openlane)" ]; then\
+		echo "OPENLANE_ROOT is set to '$$(pwd)/openlane' which contains openlane config files"; \
+		echo "Please set it to a different directory"; \
+		exit 1; \
+	fi
 	cd openlane && $(MAKE) openlane
 
 #### Not sure if the targets following are of any use
diff --git a/docs/source/index.rst b/docs/source/index.rst
index e756a3f..90a41d9 100644
--- a/docs/source/index.rst
+++ b/docs/source/index.rst
@@ -171,6 +171,9 @@
 
     # set PDK_ROOT to the path you wish to use for the pdk
     export PDK_ROOT=<pdk-installation-path>
+    
+    # set the PDK variant depending on your shuttle, if you don't know leave it as default
+    export PDK=sky130B
 
     # use volare to download the pdk
     # To change the default pdk version you can export OPEN_PDKS_COMMIT=<pdk_commit>
diff --git a/docs/source/quickstart.rst b/docs/source/quickstart.rst
index 44486a1..e15b60e 100644
--- a/docs/source/quickstart.rst
+++ b/docs/source/quickstart.rst
@@ -36,43 +36,29 @@
 ---------------------
 
 
-#. To start the project you need to first create an empty Git project on Github and make sure your repo is public and includes a README
+#. To start the project you first need to create a new repository based on the `caravel_user_project <https://github.com/efabless/caravel_user_project/>`_ template and make sure your repo is public and includes a README.
 
-#.  Open your Terminal. Create an empty folder to use as your Caravel workspace, and navigate to it.
+   *   Follow https://github.com/efabless/caravel_user_project/generate to create a new repository.
+   *   Clone the reposity using the following command:
 
     .. code:: bash
 
-        # Create a directory and call it anything you want
-        mkdir -p caravel_tutorial
-
-        # navigate into the directory
-        cd caravel_tutorial
-	
-#.  Clone caravel_user_project and setup the git environment as follows
-
-    .. code:: bash
-
-        # Make sure that "caravel_example" matches the empty github repo name in step 1
-        git clone -b mpw-6b https://github.com/efabless/caravel_user_project caravel_example
-        cd caravel_example
-        git remote rename origin upstream
-
-        # You need to put your empty github repo URL from step 1
-        git remote add origin <your github repo URL>
-
-        # Create a new branch, you can name it anything 
-        git checkout -b <my_branch>
-        git push -u origin <my_branch>
+        git clone -b mpw-6c  <your github repo URL> caravel_example
 	
 #.  Now that your git environment is setup, it's time to setup your local environment by running.
 
     .. code:: bash
     
-    	# make sure to change <directory_name> with the directory you created in step 2
+	cd caravel_example
+
+  # make sure to change <directory_name> with the directory you created in step 2
 	# in this case it is caravel_tutorial
+
 	export OPENLANE_ROOT=~/<directory_name>/openlane_src # you need to export this whenever you start a new shell
-	
 	export PDK_ROOT=~/<directory_name>/pdks # you need to export this whenever you start a new shell
+	
+	# export the PDK variant depending on your shuttle, if you don't know leave it to the default
+	export PDK=sky130B
 
         make setup
 
@@ -131,7 +117,7 @@
         make precheck
         make run-precheck
 
-#. You are done! now go to www.efabless.com to submit your project!
+#. You are done! now go to https://efabless.com/open_shuttle_program/ to submit your project!
    
    
 .. |License| image:: https://img.shields.io/badge/License-Apache%202.0-blue.svg
diff --git a/openlane/user_proj_example/config.tcl b/openlane/user_proj_example/config.tcl
index c9266ee..b216984 100755
--- a/openlane/user_proj_example/config.tcl
+++ b/openlane/user_proj_example/config.tcl
@@ -13,7 +13,7 @@
 # limitations under the License.
 # SPDX-License-Identifier: Apache-2.0
 
-set ::env(PDK) "sky130A"
+set ::env(PDK) $::env(PDK)
 set ::env(STD_CELL_LIBRARY) "sky130_fd_sc_hd"
 
 set script_dir [file dirname [file normalize [info script]]]
diff --git a/openlane/user_project_wrapper/config.tcl b/openlane/user_project_wrapper/config.tcl
index f720e39..f0d44fa 100755
--- a/openlane/user_project_wrapper/config.tcl
+++ b/openlane/user_project_wrapper/config.tcl
@@ -16,7 +16,7 @@
 # Base Configurations. Don't Touch
 # section begin
 
-set ::env(PDK) "sky130A"
+set ::env(PDK) $::env(PDK)
 set ::env(STD_CELL_LIBRARY) "sky130_fd_sc_hd"
 
 # YOU ARE NOT ALLOWED TO CHANGE ANY VARIABLES DEFINED IN THE FIXED WRAPPER CFGS