Merge remote-tracking branch 'origin/EF-3367' into EF-3367
diff --git a/.github/workflows/user_project_ci.yml b/.github/workflows/user_project_ci.yml
index 8258675..1edf3ec 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 6fd78e0..65179e8 100644
--- a/Makefile
+++ b/Makefile
@@ -25,14 +25,17 @@
 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
 
 # Install lite version of caravel, (1): caravel-lite, (0): caravel
 CARAVEL_LITE?=1
 
+# PDK switch varient
+export PDK?=sky130B
+export PDKPATH?=$(PDK_ROOT)/$(PDK)
+
 MPW_TAG ?= mpw-7a
 
+
 ifeq ($(CARAVEL_LITE),1)
 	CARAVEL_NAME := caravel-lite
 	CARAVEL_REPO := https://github.com/efabless/caravel-lite
@@ -140,6 +143,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 099afe5..1dd2008 100644
--- a/docs/source/quickstart.rst
+++ b/docs/source/quickstart.rst
@@ -43,7 +43,7 @@
 
     .. code:: bash
 
-        git clone -b mpw-6c  <your github repo URL> caravel_example
+        git clone -b mpw-7a  <your github repo URL> caravel_example
 	
 #.  Now that your git environment is setup, it's time to setup your local environment by running.
 
@@ -51,11 +51,14 @@
     
 	cd caravel_example
 
-    	# make sure to change <directory_name> with the directory you created in step 2
+  # 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 # you need to export this whenever you start a new shell
-	
+
+	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
 
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