merged main
diff --git a/.github/scripts/build/run-set-id.sh b/.github/scripts/build/run-set-id.sh
index 9cb87f8..1042716 100644
--- a/.github/scripts/build/run-set-id.sh
+++ b/.github/scripts/build/run-set-id.sh
@@ -16,23 +16,23 @@
 
 export UPRJ_ROOT=$(pwd)
 cd ..
-export PDK_ROOT=$(pwd)/pdks
 export CARAVEL_ROOT=$(pwd)/caravel
 export IMAGE_NAME=efabless/openlane:$OPENLANE_TAG
+export PDK_ROOT=$(pwd)/pdks
 export USER_ID=00000001
 
-cd $UPRJ_ROOT
+cd $UPRJ_ROOT || exit
 
 # Install full version of caravel
-git clone https://github.com/efabless/caravel --depth 1 $CARAVEL_ROOT
+git clone --depth=1 https://github.com/efabless/caravel $CARAVEL_ROOT
 
 LOG_FILE=out.log
 docker run -v $UPRJ_ROOT:$UPRJ_ROOT -v $PDK_ROOT:$PDK_ROOT -v $CARAVEL_ROOT:$CARAVEL_ROOT -e UPRJ_ROOT=$UPRJ_ROOT -e PDK_ROOT=$PDK_ROOT -e CARAVEL_ROOT=$CARAVEL_ROOT -u $(id -u $USER):$(id -g $USER) $IMAGE_NAME bash -c "cd $CARAVEL_ROOT; make uncompress; cd $UPRJ_ROOT; export USER_ID=$USER_ID; make set_user_id | tee $LOG_FILE;"
 
 cnt=$(grep "Done" $LOG_FILE -s | wc -l)
 
-if [[ $cnt -ne 3 ]]; then 
-        exit 2; 
+if [[ $cnt -ne 3 ]]; then
+	exit 2
 fi
 
 exit 0
diff --git a/.github/scripts/build/run-ship.sh b/.github/scripts/build/run-ship.sh
index d084c00..01ddec1 100644
--- a/.github/scripts/build/run-ship.sh
+++ b/.github/scripts/build/run-ship.sh
@@ -16,14 +16,14 @@
 
 export UPRJ_ROOT=$(pwd)
 cd ..
-export PDK_ROOT=$(pwd)/pdks
 export CARAVEL_ROOT=$(pwd)/caravel
 export IMAGE_NAME=efabless/openlane:$OPENLANE_TAG
+export PDK_ROOT=$(pwd)/pdks
 
-cd $UPRJ_ROOT
+cd $UPRJ_ROOT || exit
 
 # Install full version of caravel
-git clone https://github.com/efabless/caravel --depth 1 $CARAVEL_ROOT
+git clone --depth=1 https://github.com/efabless/caravel $CARAVEL_ROOT
 
 make install_mcw
 
@@ -32,7 +32,7 @@
 SHIP_FILE=$UPRJ_ROOT/gds/caravel.gds
 
 if test -f "$SHIP_FILE"; then
-    exit 0
+  exit 0
 else
-    exit 2
+  exit 2
 fi
diff --git a/.github/scripts/build/run-xor.sh b/.github/scripts/build/run-xor.sh
deleted file mode 100644
index 53ccb59..0000000
--- a/.github/scripts/build/run-xor.sh
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/bin/bash
-# SPDX-FileCopyrightText: 2020 Efabless Corporation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# SPDX-License-Identifier: Apache-2.0
-
-export UPRJ_ROOT=$(pwd)
-export CARAVEL_ROOT=$(pwd)/caravel
-cd ..
-export PDK_ROOT=$(pwd)/pdks
-export IMAGE_NAME=efabless/openlane:$OPENLANE_TAG
-
-cd $UPRJ_ROOT
-
-LOG_FILE=out.log
-docker run -v $UPRJ_ROOT:$UPRJ_ROOT -v $PDK_ROOT:$PDK_ROOT -v $CARAVEL_ROOT:$CARAVEL_ROOT -e UPRJ_ROOT=$UPRJ_ROOT -e PDK_ROOT=$PDK_ROOT -e CARAVEL_ROOT=$CARAVEL_ROOT -u $(id -u $USER):$(id -g $USER) $IMAGE_NAME bash -c "cd $UPRJ_ROOT; export USER_ID=$USER_ID; make xor-wrapper | tee $LOG_FILE;"
-
-cnt=$(grep -oP '(?<=Total XOR differences = )[0-9]+' $LOG_FILE)
-
-echo "Total XOR differences = $cnt"
-
-if [[ $cnt -ne 0 ]]; then 
-    exit 2; 
-fi
-
-exit 0
diff --git a/.github/scripts/build_pdk.sh b/.github/scripts/build_pdk.sh
new file mode 100644
index 0000000..8317b6a
--- /dev/null
+++ b/.github/scripts/build_pdk.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+# SPDX-FileCopyrightText: 2020 Efabless Corporation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# SPDX-License-Identifier: Apache-2.0
+git clone --depth=1 https://github.com/efabless/caravel-lite.git
+
+export HOME=$(pwd)
+cd ..
+export PDK_ROOT=$(pwd)/pdks && mkdir "$PDK_ROOT"
+cd "$HOME"/caravel-lite/ || exit
+
+make skywater-pdk skywater-library open_pdks build-pdk gen-sources
+
+exit 0
diff --git a/.github/scripts/dv/pdkBuild.sh b/.github/scripts/dv/pdkBuild.sh
deleted file mode 100644
index 9f9ac93..0000000
--- a/.github/scripts/dv/pdkBuild.sh
+++ /dev/null
@@ -1,59 +0,0 @@
-#!/bin/bash
-# SPDX-FileCopyrightText: 2020 Efabless Corporation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# SPDX-License-Identifier: Apache-2.0
-export RUN_ROOT=$(pwd)
-
-
-# By default skip timing since we don't need the libs in any of the CI tests
-export SKIP_TIMING=${1:-1}
-export IMAGE_NAME=efabless/openlane:$OPENLANE_TAG
-docker pull $IMAGE_NAME
-
-cd $RUN_ROOT/..
-export PDK_ROOT=$(pwd)/pdks
-mkdir $PDK_ROOT
-echo $PDK_ROOT
-echo $RUN_ROOT
-cd $RUN_ROOT
-make skywater-pdk
-make skywater-library
-# The following section is for running on the CI.
-# If you're running locally you should replace them with: `make skywater-library`
-# This is because sometimes while setting up the conda env (skywater's make timing) it fails to fetch something
-# Then it exits without retrying. So, here we're retrying, and if something goes wrong it will exit after 5 retries.
-# Section Begin
-if [ $SKIP_TIMING -eq 0 ]; then
-	cnt=0
-	until make skywater-timing; do
-	cnt=$((cnt+1))
-	if [ $cnt -eq 5 ]; then
-		exit 2
-	fi
-	rm -rf $PDK_ROOT/skywater-pdk
-	make skywater-pdk
-	make skywater-library
-	done
-fi
-# Section End
-
-make open_pdks
-docker run -v $RUN_ROOT:/openLANE_flow -v $PDK_ROOT:$PDK_ROOT -e PDK_ROOT=$PDK_ROOT -u $(id -u $USER):$(id -g $USER) $IMAGE_NAME  bash -c "make build-pdk"
-
-rm -rf $PDK_ROOT/open_pdks
-rm -rf $PDK_ROOT/skywater-pdk
-
-echo "done installing"
-cd $RUN_ROOT
-exit 0
\ No newline at end of file
diff --git a/.github/scripts/dv/run-dv-wrapper.sh b/.github/scripts/dv/run-dv-wrapper.sh
index c03d8e9..c602fea 100755
--- a/.github/scripts/dv/run-dv-wrapper.sh
+++ b/.github/scripts/dv/run-dv-wrapper.sh
@@ -24,54 +24,50 @@
 export TARGET_PATH=$(pwd)
 export CARAVEL_ROOT=$(pwd)/caravel
 
-if [ ! -d $TARGET_PATH ] 
-then
-    echo "Directory target /path/to/dir DOES NOT exists." 
-    exit 9999 
+if [ ! -d $TARGET_PATH ]; then
+  echo "Directory target /path/to/dir DOES NOT exists."
+  exit 9999
 fi
 
 cd ..
 
 export PDK_ROOT=$(pwd)/pdks
-if [ ! -d $PDK_ROOT ] 
-then
-    echo "Directory pdk /path/to/dir DOES NOT exists." 
-    exit 9999 
+if [ ! -d $PDK_ROOT ]; then
+  echo "Directory pdk /path/to/dir DOES NOT exists."
+  exit 9999
 fi
 
 DV_PATH=$TARGET_PATH/verilog/dv
-if [ ! -d $DV_PATH ] 
-then
-    echo "Directory /path/to/dir DOES NOT exists." 
-    exit 9999
+if [ ! -d $DV_PATH ]; then
+  echo "Directory /path/to/dir DOES NOT exists."
+  exit 9999
 fi
 
-for id in "${DV_TEST_IDS[@]}"
-do 
-    docker run -v $TARGET_PATH:$TARGET_PATH -v $PDK_ROOT:$PDK_ROOT \
-                -v $CARAVEL_ROOT:$CARAVEL_ROOT \
-                -e TARGET_PATH=$TARGET_PATH -e PDK_ROOT=$PDK_ROOT \
-                -e CARAVEL_ROOT=$CARAVEL_ROOT \
-                -u $(id -u $USER):$(id -g $USER) efabless/dv_setup:latest \
-                bash -c "bash $TARGET_PATH/.github/scripts/dv/run-dv.sh $PDK_ROOT $DV_PATH $id $SIM_MODE"
+for id in "${DV_TEST_IDS[@]}"; do
+  docker run -v $TARGET_PATH:$TARGET_PATH -v $PDK_ROOT:$PDK_ROOT \
+    -v $CARAVEL_ROOT:$CARAVEL_ROOT \
+    -e TARGET_PATH=$TARGET_PATH -e PDK_ROOT=$PDK_ROOT \
+    -e CARAVEL_ROOT=$CARAVEL_ROOT \
+    -u $(id -u $USER):$(id -g $USER) efabless/dv_setup:latest \
+    bash -c "bash $TARGET_PATH/.github/scripts/dv/run-dv.sh $PDK_ROOT $DV_PATH $id $SIM_MODE"
 
-    echo "DONE!"
+  echo "DONE!"
 
-    VERDICT_FILE=$TARGET_PATH/verilog/dv/$id.out
+  VERDICT_FILE=$TARGET_PATH/verilog/dv/$id.out
 
-    if [ -f $VERDICT_FILE ]; then
-        cnt=$(grep "Pass" $VERDICT_FILE -s | wc -l)
-        if ! [[ $cnt ]]; then cnt = 0; fi
-    else
-        echo "DV check failed due to subscript failure. Please review the logs";
-        exit 2;
-    fi
+  if [ -f $VERDICT_FILE ]; then
+    cnt=$(grep "Pass" $VERDICT_FILE -s | wc -l)
+    if ! [[ $cnt ]]; then cnt = 0; fi
+  else
+    echo "DV check failed due to subscript failure. Please review the logs"
+    exit 2
+  fi
 
-    echo "Verdict: $cnt"
+  echo "Verdict: $cnt"
 
-    if [[ $cnt -ne 1 ]]; then 
-        exit 2; 
-    fi
+  if [[ $cnt -ne 1 ]]; then
+    exit 2
+  fi
 done
 
-exit 0;
+exit 0
diff --git a/.github/scripts/dv/run-dv.sh b/.github/scripts/dv/run-dv.sh
index 53b7e96..99fcd74 100755
--- a/.github/scripts/dv/run-dv.sh
+++ b/.github/scripts/dv/run-dv.sh
@@ -3,9 +3,9 @@
 DV_TEST_ID=$3
 SIM_MODE=$4
 
-cd $DV_PATH
+cd $DV_PATH || exit
 
-## get the name of all subdfolders under verilog/dv 
+## get the name of all subdfolders under verilog/dv
 ALL_DV_TESTS="$(find * -maxdepth 0 -type d)"
 ## convert all ALL_DV_TESTS to an array
 TESTS_ARR=($ALL_DV_TESTS)
@@ -13,10 +13,9 @@
 len=${#TESTS_ARR[@]}
 
 ## make sure that the test ID is less than the array length
-if [ $DV_TEST_ID -ge $len ]
-then
-    echo "Error: Invalid Test ID"
-    exit 1
+if [ $DV_TEST_ID -ge $len ]; then
+  echo "Error: Invalid Test ID"
+  exit 1
 fi
 
 ## get the name corresponding to the test ID
@@ -27,14 +26,14 @@
 export SIM=$SIM_MODE
 echo "Running $PATTERN $SIM.."
 logFile=$DV_PATH/$PATTERN.$SIM.dv.out
-cd $PATTERN
+cd $PATTERN || exit
 echo $(pwd)
 make 2>&1 | tee $logFile
-grep "Monitor" $logFile >> $OUT_FILE
+grep "Monitor" $logFile >>$OUT_FILE
 make clean
 
 echo "Execution Done on $PATTERN !"
 
 cat $OUT_FILE
 
-exit 0
\ No newline at end of file
+exit 0
diff --git a/.github/scripts/install_magic.sh b/.github/scripts/install_magic.sh
new file mode 100644
index 0000000..ca91137
--- /dev/null
+++ b/.github/scripts/install_magic.sh
@@ -0,0 +1,24 @@
+#!/bin/bash
+# SPDX-FileCopyrightText: 2020 Efabless Corporation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# SPDX-License-Identifier: Apache-2.0
+sudo apt-get install -y csh freeglut3-dev libncurses5-dev libncursesw5-dev libglu1-mesa-dev libx11-dev mesa-common-dev tcl tcl-dev tk tk-dev
+
+git clone --depth=1 --branch 8.3.265 https://github.com/RTimothyEdwards/magic.git
+cd magic || exit
+sudo ./configure --disable-locking --prefix=/usr CFLAGS='-g -O0 -m64 -fPIC'
+sudo make -j4
+sudo make install
+
+exit 0
diff --git a/.github/scripts/precheck/precheckBuild.sh b/.github/scripts/precheck/precheckBuild.sh
deleted file mode 100644
index 7754922..0000000
--- a/.github/scripts/precheck/precheckBuild.sh
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/bin/bash
-# SPDX-FileCopyrightText: 2020 Efabless Corporation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# SPDX-License-Identifier: Apache-2.0
-
-# By default build pdk since we don't need the other script for the main purpose
-export SKIP_PDK_BUILD=${1:-0}
-
-export TARGET_PATH=$(pwd)
-git clone https://github.com/efabless/mpw_precheck.git
-
-docker pull efabless/mpw_precheck:latest
-
-
-if [ $SKIP_PDK_BUILD -eq 0 ]; then
-    cd $TARGET_PATH/..
-    export PDK_ROOT=$(pwd)/precheck_pdks
-    mkdir $PDK_ROOT
-    cd $TARGET_PATH/mpw_precheck/dependencies
-    sh build-pdk.sh
-    cd $TARGET_DIR
-
-fi
-
-exit 0
diff --git a/.github/scripts/precheck/run-precheck-drc.sh b/.github/scripts/precheck/run-precheck-drc.sh
deleted file mode 100644
index dd38dc0..0000000
--- a/.github/scripts/precheck/run-precheck-drc.sh
+++ /dev/null
@@ -1,38 +0,0 @@
-#!/bin/bash
-# SPDX-FileCopyrightText: 2020 Efabless Corporation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# SPDX-License-Identifier: Apache-2.0
-export TARGET_PATH=$(pwd)
-export CARAVEL_ROOT=$(pwd)/caravel
-cd ..
-export PDK_ROOT=$(pwd)/precheck_pdks
-export PRECHECK_ROOT=$TARGET_PATH/mpw_precheck/
-export OUTPUT_DIRECTORY=$TARGET_PATH/checks
-cd $TARGET_PATH/mpw_precheck/
-
-docker run -v $PRECHECK_ROOT:$PRECHECK_ROOT -v $TARGET_PATH:$TARGET_PATH -v $CARAVEL_ROOT:$CARAVEL_ROOT  -v $PDK_ROOT:$PDK_ROOT -u $(id -u $USER):$(id -g $USER) efabless/mpw_precheck:latest bash -c "cd $PRECHECK_ROOT; python3 mpw_precheck.py magic_drc klayout_offgrid klayout_feol klayout_zeroarea klayout_pin_label_purposes_overlapping_drawing --pdk_root $PDK_ROOT --input_directory $TARGET_PATH --caravel_root $CARAVEL_ROOT --output_directory $OUTPUT_DIRECTORY"
-output=$OUTPUT_DIRECTORY/logs/precheck.log
-
-gzipped_file=$OUTPUT_DIRECTORY/logs/precheck.log.gz
-
-if [[ -f $gzipped_file ]]; then
-    gzip -d $gzipped_file
-fi
-
-grep "Violation Message" $output
-
-cnt=$(grep -c "All Checks Passed" $output)
-if ! [[ $cnt ]]; then cnt=0; fi
-if [[ $cnt -eq 1 ]]; then exit 0; fi
-exit 2
\ No newline at end of file
diff --git a/.github/scripts/precheck/run-precheck.sh b/.github/scripts/precheck/run-precheck.sh
deleted file mode 100644
index 2d9eca4..0000000
--- a/.github/scripts/precheck/run-precheck.sh
+++ /dev/null
@@ -1,38 +0,0 @@
-#!/bin/bash
-# SPDX-FileCopyrightText: 2020 Efabless Corporation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# SPDX-License-Identifier: Apache-2.0
-export TARGET_PATH=$(pwd)
-export CARAVEL_ROOT=$(pwd)/caravel
-cd ..
-export PDK_ROOT=$(pwd)/precheck_pdks
-export PRECHECK_ROOT=$TARGET_PATH/mpw_precheck/
-export OUTPUT_DIRECTORY=$TARGET_PATH/checks
-cd $TARGET_PATH/mpw_precheck/
-
-docker run -v $PRECHECK_ROOT:$PRECHECK_ROOT -v $TARGET_PATH:$TARGET_PATH -v $PDK_ROOT:$PDK_ROOT -v $CARAVEL_ROOT:$CARAVEL_ROOT -e GOLDEN_CARAVEL=$CARAVEL_ROOT -u $(id -u $USER):$(id -g $USER) efabless/mpw_precheck:latest bash -c " cd $PRECHECK_ROOT ; python3 mpw_precheck.py license yaml manifest makefile consistency xor --pdk_root $PDK_ROOT --input_directory $TARGET_PATH --output_directory $OUTPUT_DIRECTORY"
-output=$OUTPUT_DIRECTORY/logs/precheck.log
-
-gzipped_file=$OUTPUT_DIRECTORY/logs/precheck.log.gz
-
-if [[ -f $gzipped_file ]]; then
-    gzip -d $gzipped_file
-fi
-
-grep "Violation Message" $output
-
-cnt=$(grep -c "All Checks Passed" $output)
-if ! [[ $cnt ]]; then cnt=0; fi
-if [[ $cnt -eq 1 ]]; then exit 0; fi
-exit 2
diff --git a/.github/scripts/run_precheck.sh b/.github/scripts/run_precheck.sh
new file mode 100644
index 0000000..16091a6
--- /dev/null
+++ b/.github/scripts/run_precheck.sh
@@ -0,0 +1,31 @@
+#!/bin/bash
+# SPDX-FileCopyrightText: 2020 Efabless Corporation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# SPDX-License-Identifier: Apache-2.0
+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
+cd ..
+export PDK_ROOT=$(pwd)/pdks
+cd "$PRECHECK_ROOT" || exit
+
+docker run -v "$PRECHECK_ROOT":"$PRECHECK_ROOT" -v "$INPUT_DIRECTORY":"$INPUT_DIRECTORY" -v "$PDK_ROOT":"$PDK_ROOT" -e INPUT_DIRECTORY="$INPUT_DIRECTORY" -e PDK_ROOT="$PDK_ROOT" -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_root $PDK_ROOT --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
diff --git a/.github/workflows/caravel_build.yml b/.github/workflows/caravel_build.yml
index 3978d7f..d9cadb3 100644
--- a/.github/workflows/caravel_build.yml
+++ b/.github/workflows/caravel_build.yml
@@ -1,73 +1,53 @@
-name: Caravel Build
+# name: Caravel Build
 
+# on:
+#  # Runs on Every Push
+#  push:
+#  # Runs on Pull Requests
+#  pull_request:
+#  workflow_dispatch:
 
-on:
-    # Runs on Every Push
-    push:
-    # Runs on Pull Requests
-    pull_request:
-    workflow_dispatch:
+# jobs:
+#  make_ship:
+#    runs-on: ubuntu-latest
+#    steps:
+#      - uses: actions/checkout@v2
 
-jobs:
-  make_ship:
-    runs-on: ubuntu-latest
-    steps:
-       - uses: actions/checkout@v2
-      
-       - name: Set up QEMU
-         uses: docker/setup-qemu-action@v1
+#      - name: Set up QEMU
+#        uses: docker/setup-qemu-action@v1
 
-       - name: Set up Docker Buildx
-         uses: docker/setup-buildx-action@v1
-        
-       - name: Install The PDK
-         run:  bash ${GITHUB_WORKSPACE}/.github/scripts/dv/pdkBuild.sh
-         env: 
-          OPENLANE_TAG:  2021.12.17_05.07.41
+#      - name: Set up Docker Buildx
+#        uses: docker/setup-buildx-action@v1
 
-       - name: Run make ship
-         run: bash ${GITHUB_WORKSPACE}/.github/scripts/build/run-ship.sh 
-         env: 
-          OPENLANE_TAG:  2021.12.17_05.07.41
-          
-  set_user_id:
-    runs-on: ubuntu-latest
-    steps:
-       - uses: actions/checkout@v2
-      
-       - name: Set up QEMU
-         uses: docker/setup-qemu-action@v1
+#      - name: Install Magic
+#        run: bash ${GITHUB_WORKSPACE}/.github/scripts/install_magic.sh
 
-       - name: Set up Docker Buildx
-         uses: docker/setup-buildx-action@v1
-        
-       - name: Install The PDK
-         run:  bash ${GITHUB_WORKSPACE}/.github/scripts/dv/pdkBuild.sh
-         env: 
-          OPENLANE_TAG:  2021.09.16_03.28.21
+#      - name: Build PDK
+#        run: bash ${GITHUB_WORKSPACE}/.github/scripts/build_pdk.sh
 
-       - name: Run Set User ID
-         run: bash ${GITHUB_WORKSPACE}/.github/scripts/build/run-set-id.sh 
-         env: 
-          OPENLANE_TAG:  2021.09.16_03.28.21
+#      - name: Run make ship
+#        run: bash ${GITHUB_WORKSPACE}/.github/scripts/build/run-ship.sh
+#        env:
+#          OPENLANE_TAG: 2021.12.17_05.07.41
 
-  xor_wrapper:
-    runs-on: ubuntu-latest
-    steps:
-       - uses: actions/checkout@v2
-      
-       - name: Set up QEMU
-         uses: docker/setup-qemu-action@v1
+#  set_user_id:
+#    runs-on: ubuntu-latest
+#    steps:
+#      - uses: actions/checkout@v2
 
-       - name: Set up Docker Buildx
-         uses: docker/setup-buildx-action@v1
-        
-       - name: Install The PDK
-         run:  bash ${GITHUB_WORKSPACE}/.github/scripts/dv/pdkBuild.sh
-         env: 
-          OPENLANE_TAG: 2021.09.16_03.28.21
+#      - name: Set up QEMU
+#        uses: docker/setup-qemu-action@v1
 
-       - name: Run XOR Check
-         run: bash ${GITHUB_WORKSPACE}/.github/scripts/build/run-xor.sh 
-         env: 
-          OPENLANE_TAG:  2021.09.16_03.28.21
+#      - name: Set up Docker Buildx
+#        uses: docker/setup-buildx-action@v1
+
+#      - name: Install Magic
+#        run: bash ${GITHUB_WORKSPACE}/.github/scripts/install_magic.sh
+
+#      - name: Build PDK
+#        run: bash ${GITHUB_WORKSPACE}/.github/scripts/build_pdk.sh
+
+#      - name: Run Set User ID
+#        run: bash ${GITHUB_WORKSPACE}/.github/scripts/build/run-set-id.sh
+#        env:
+#          OPENLANE_TAG: 2021.09.16_03.28.21
diff --git a/.github/workflows/user_project_ci.yml b/.github/workflows/user_project_ci.yml
index 9196114..d966d14 100644
--- a/.github/workflows/user_project_ci.yml
+++ b/.github/workflows/user_project_ci.yml
@@ -1,33 +1,14 @@
 name: CI
 
-
 on:
-    # Runs on Every Push
-    push:
-    # Runs on Pull Requests
-    pull_request:
-    workflow_dispatch:
+  # Runs on Every Push
+  push:
+  # Runs on Pull Requests
+  pull_request:
+  workflow_dispatch:
 
 jobs:
   precheck:
-    runs-on: ubuntu-latest
-    timeout-minutes: 720
-    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: Install The Precheck
-        run: sh ${GITHUB_WORKSPACE}/.github/scripts/precheck/precheckBuild.sh
-
-      - name: Run The Precheck
-        run: bash ${GITHUB_WORKSPACE}/.github/scripts/precheck/run-precheck.sh
-  
-  precheck-drc:
     timeout-minutes: 720
     runs-on: ubuntu-latest
     steps:
@@ -39,54 +20,62 @@
       - name: Set up Docker Buildx
         uses: docker/setup-buildx-action@v1
 
+      - name: Install Magic
+        run: bash ${GITHUB_WORKSPACE}/.github/scripts/install_magic.sh
+
+      - name: Build PDK
+        run: bash ${GITHUB_WORKSPACE}/.github/scripts/build_pdk.sh
+
       - name: Install The Precheck
-        run: sh ${GITHUB_WORKSPACE}/.github/scripts/precheck/precheckBuild.sh
+        run: git clone --depth=1 https://github.com/efabless/mpw_precheck.git ${GITHUB_WORKSPACE}/mpw_precheck
 
       - name: Run The Precheck
-        run: bash ${GITHUB_WORKSPACE}/.github/scripts/precheck/run-precheck-drc.sh
-  
-  dv_rtl:
-    runs-on: ubuntu-latest
-    steps:
-       - uses: actions/checkout@v2
-      
-       - name: Set up QEMU
-         uses: docker/setup-qemu-action@v1
+        run: bash ${GITHUB_WORKSPACE}/.github/scripts/run_precheck.sh
 
-       - name: Set up Docker Buildx
-         uses: docker/setup-buildx-action@v1
-        
-       - name: Install The PDK
-         run: bash ${GITHUB_WORKSPACE}/.github/scripts/dv/pdkBuild.sh
-         env: 
-          OPENLANE_TAG: 2021.09.16_03.28.21
-          
-       - name: Install The Dockerized DV Setup
-         run:  docker pull efabless/dv_setup:latest
-       
-       - name: Run DV tests
-         # Run test number 0,1,2,3,4 in one job                            <test-ids>   <sim-mode>
-         run: bash ${GITHUB_WORKSPACE}/.github/scripts/dv/run-dv-wrapper.sh 0,1,2,3,4      RTL
+  # dv_rtl:
+  #   runs-on: ubuntu-latest
+  #   steps:
+  #     - uses: actions/checkout@v2
 
-  dv_gl:
-    runs-on: ubuntu-latest
-    steps:
-       - uses: actions/checkout@v2
-      
-       - name: Set up QEMU
-         uses: docker/setup-qemu-action@v1
+  #     - name: Set up QEMU
+  #       uses: docker/setup-qemu-action@v1
 
-       - name: Set up Docker Buildx
-         uses: docker/setup-buildx-action@v1
-        
-       - name: Install The PDK
-         run:  bash ${GITHUB_WORKSPACE}/.github/scripts/dv/pdkBuild.sh
-         env: 
-          OPENLANE_TAG: 2021.09.16_03.28.21
-          
-       - name: Install The Dockerized DV Setup
-         run:  docker pull efabless/dv_setup:latest
-       
-       - name: Run DV tests
-         # Run test number 0,1,2,3,4 in one job                             <test-ids>   <sim-mode>
-         run: bash ${GITHUB_WORKSPACE}/.github/scripts/dv/run-dv-wrapper.sh 0,1,2,3,4      GL
+  #     - name: Set up Docker Buildx
+  #       uses: docker/setup-buildx-action@v1
+
+  #     - name: Install Magic
+  #       run: bash ${GITHUB_WORKSPACE}/.github/scripts/install_magic.sh
+
+  #     - name: Build PDK
+  #       run: bash ${GITHUB_WORKSPACE}/.github/scripts/build_pdk.sh
+
+  #     - name: Install The Dockerized DV Setup
+  #       run: docker pull efabless/dv_setup:latest
+
+  #     - name: Run DV tests
+  #       # Run test number 0,1,2,3,4 in one job                            <test-ids>   <sim-mode>
+  #       run: bash ${GITHUB_WORKSPACE}/.github/scripts/dv/run-dv-wrapper.sh 0,1,2,3,4      RTL
+
+  # dv_gl:
+  #   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: Install Magic
+  #       run: bash ${GITHUB_WORKSPACE}/.github/scripts/install_magic.sh
+
+  #     - name: Build PDK
+  #       run: bash ${GITHUB_WORKSPACE}/.github/scripts/build_pdk.sh
+
+  #     - name: Install The Dockerized DV Setup
+  #       run: docker pull efabless/dv_setup:latest
+
+  #     - name: Run DV tests
+  #       # Run test number 0,1,2,3,4 in one job                             <test-ids>   <sim-mode>
+  #       run: bash ${GITHUB_WORKSPACE}/.github/scripts/dv/run-dv-wrapper.sh 0,1,2,3,4      GL
diff --git a/Makefile b/Makefile
index f1d618e..79515c7 100644
--- a/Makefile
+++ b/Makefile
@@ -115,15 +115,15 @@
 # Default installs to the user home directory, override by "export PRECHECK_ROOT=<precheck-installation-path>"
 .PHONY: precheck
 precheck:
-	@git clone --depth=1 --branch mpw-5 https://github.com/efabless/mpw_precheck.git $(PRECHECK_ROOT)
+	@git clone --depth=1 --branch mpw-5a https://github.com/efabless/mpw_precheck.git $(PRECHECK_ROOT)
 	@docker pull efabless/mpw_precheck:latest
 
 .PHONY: run-precheck
-run-precheck: check-precheck check-pdk check-caravel
+run-precheck: check-pdk check-precheck
 	$(eval INPUT_DIRECTORY := $(shell pwd))
 	cd $(PRECHECK_ROOT) && \
-	docker run -e INPUT_DIRECTORY=$(INPUT_DIRECTORY) -e PDK_ROOT=$(PDK_ROOT) -v $(PRECHECK_ROOT):$(PRECHECK_ROOT) -v $(INPUT_DIRECTORY):$(INPUT_DIRECTORY) -v $(PDK_ROOT):$(PDK_ROOT) \
-	-u $(shell id -u $(USER)):$(shell id -g $(USER)) efabless/mpw_precheck:latest bash -c "cd $(PRECHECK_ROOT) ; python3 mpw_precheck.py --pdk_root $(PDK_ROOT) --input_directory $(INPUT_DIRECTORY)"
+	docker run -v $(PRECHECK_ROOT):$(PRECHECK_ROOT) -v $(INPUT_DIRECTORY):$(INPUT_DIRECTORY) -v $(PDK_ROOT):$(PDK_ROOT) -e INPUT_DIRECTORY=$(INPUT_DIRECTORY) -e PDK_ROOT=$(PDK_ROOT) \
+	-u $(shell id -u $(USER)):$(shell id -g $(USER)) efabless/mpw_precheck:latest bash -c "cd $(PRECHECK_ROOT) ; python3 mpw_precheck.py --input_directory $(INPUT_DIRECTORY) --pdk_root $(PDK_ROOT)"
 
 # Clean 
 .PHONY: clean
diff --git a/docs/source/roundtrip.rst b/docs/source/roundtrip.rst
index 850f2fb..eaeb478 100644
--- a/docs/source/roundtrip.rst
+++ b/docs/source/roundtrip.rst
@@ -57,14 +57,9 @@
 	# you can install full caravel (not recommended) use ``export CARAVEL_LITE=0``
 	make install
 	
-	# The default for the management core is litex, to install the pico version use
-	export MCW=pico
 	# To install the management core for simulation
 	make install_mcw
 	
-	# To clone the management core pico for simulation
-	git clone git@github.com:efabless/caravel_pico.git
-	
 	# Install openlane for hardening your project
 	# make sure to change <directory_name> with the directory you created in step 1
 	# in this case it is caravel_tutorial