diff --git a/.github/scripts/dv/dv-check-wrapper.sh b/.github/scripts/dv/dv-check-wrapper.sh
deleted file mode 100644
index c677e61..0000000
--- a/.github/scripts/dv/dv-check-wrapper.sh
+++ /dev/null
@@ -1,48 +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)
-cd ../
-export PDK_PATH=$(pwd)/pdks/sky130A
-cd $TARGET_PATH
-
-export RUN_WRAPPER=$TARGET_PATH/.github/scripts/utils/run_wrapper.sh
-
-target_dv=$1
-target_id=$2
-
-bash $RUN_WRAPPER "docker pull efabless/dv_setup:latest"
-
-docker run -v $TARGET_PATH:$TARGET_PATH -v $PDK_PATH:$PDK_PATH \
-            -e TARGET_PATH=$TARGET_PATH -e PDK_PATH=$PDK_PATH \
-            -u $(id -u $USER):$(id -g $USER) efabless/dv_setup:latest \
-            bash -c "bash $TARGET_PATH/.github/scripts/dv/run-dv-$target_dv.sh $PDK_PATH $TARGET_PATH $target_id"
-
-echo "DONE!"
-
-VERDICT_FILE=$TARGET_PATH/$target_dv\_verdict.out
-cat $VERDICT_FILE
-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"
-
-if [[ $cnt -eq 1 ]]; then exit 0; fi
-exit 2;
diff --git a/.github/scripts/dv/run-dv-set.sh b/.github/scripts/dv/run-dv-set.sh
deleted file mode 100644
index 5f757db..0000000
--- a/.github/scripts/dv/run-dv-set.sh
+++ /dev/null
@@ -1,65 +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
-
-PDK_PATH=$1; shift
-PATTERNS=( "$@" )
-last_idx=$(( ${#PATTERNS[@]} - 1 ))
-TARGET_PATH=${PATTERNS[$last_idx]}
-unset PATTERNS[$last_idx]
-last_idx=$(( ${#PATTERNS[@]} - 1 ))
-ID=${PATTERNS[$last_idx]}
-unset PATTERNS[$last_idx]
-last_idx=$(( ${#PATTERNS[@]} - 1 ))
-TARGET_DV=${PATTERNS[$last_idx]}
-unset PATTERNS[$last_idx]
-last_idx=$(( ${#PATTERNS[@]} - 1 ))
-PARENT=${PATTERNS[$last_idx]}
-unset PATTERNS[$last_idx]
-
-
-echo "arg1=$PDK_PATH"
-echo "arg2=$PARENT"
-echo "arg3=$TARGET_DV"
-echo "arg4=$ID"
-echo "arg5=$TARGET_PATH"
-echo "PATTERNS contains:"
-printf "%s\n" "${PATTERNS[@]}"
-
-export RUN_WRAPPER=$TARGET_PATH/.github/scripts/utils/run_wrapper.sh
-
-OUT_FILE=$TARGET_PATH/$TARGET_DV\_dv.$ID.out
-cd $TARGET_PATH/verilog/dv/$PARENT/$TARGET_DV;
-touch $OUT_FILE
-for PATTERN in ${PATTERNS[*]}
-do
-    echo "Executing DV on $PATTERN";
-    cd $PATTERN;
-    for x in RTL GL
-    do
-        export SIM=$x
-        echo "Running $PATTERN $SIM.."
-        logFile=$TARGET_PATH/$TARGET_DV\_$PATTERN.$SIM.dv.out
-        bash $RUN_WRAPPER "make" 2>&1 | tee $logFile
-        grep "Monitor" $logFile >> $OUT_FILE
-        make clean
-    done
-    echo "Execution Done on $PATTERN!"
-    cd ..;
-done
-
-cat $OUT_FILE
-
-exit 0
diff --git a/.github/scripts/dv/run-dv-user_proj_example.sh b/.github/scripts/dv/run-dv-user_proj_example.sh
deleted file mode 100644
index 365bfe5..0000000
--- a/.github/scripts/dv/run-dv-user_proj_example.sh
+++ /dev/null
@@ -1,62 +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
-
-PDK_PATH=$1
-TARGET_PATH=$2
-ID=$3
-
-USER_PROJ_EXAMPLE_PATTERNS_1=(io_ports la_test2)
-USER_PROJ_EXAMPLE_PATTERNS_2=(la_test1)
-
-
-VERDICT_FILE=$TARGET_PATH/user_proj_example_verdict.out
-OUT_FILE=$TARGET_PATH/user_proj_example_dv.$ID.out
-
-case $ID in
-
-  1)
-    bash $TARGET_PATH/.github/scripts/dv/run-dv-set.sh $PDK_PATH "${USER_PROJ_EXAMPLE_PATTERNS_1[@]}" . user_proj_example 1 $TARGET_PATH
-    len=${#USER_PROJ_EXAMPLE_PATTERNS_1[@]}
-    export TOTAL=$(( 2*(len) ))
-    ;;
-
-  2)
-    bash $TARGET_PATH/.github/scripts/dv/run-dv-set.sh $PDK_PATH "${USER_PROJ_EXAMPLE_PATTERNS_2[@]}" . user_proj_example 2 $TARGET_PATH
-    len=${#USER_PROJ_EXAMPLE_PATTERNS_2[@]}
-    export TOTAL=$(( 2*(len) ))
-    ;;
-
-  *)
-    echo -n "unknown ID $ID"
-    exit 2
-    ;;
-esac
-
-cnt=$(grep -i "Passed" $OUT_FILE | wc -l)
-
-
-echo "total passed expected: $TOTAL"
-echo "passed found: $cnt"
-if [[ $cnt -eq $TOTAL ]]; then echo "PASS" > $VERDICT_FILE; exit 0; fi
-
-echo "FAIL" > $VERDICT_FILE
-
-
-echo "Total Verdict File:"
-cat $VERDICT_FILE
-
-exit 0
-
diff --git a/.github/scripts/utils/bash_run_wrapper.sh b/.github/scripts/utils/bash_run_wrapper.sh
deleted file mode 100644
index 7ab39e0..0000000
--- a/.github/scripts/utils/bash_run_wrapper.sh
+++ /dev/null
@@ -1,26 +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
-
-# Abort on Error
-set -e
-
-# Test script is provided as a relative path
-export WORKDIR=$(pwd)
-export TEST_SCRIPT=$WORKDIR/$1
-export TAILING_LINES=${2:-500}
-
-bash $WORKDIR/.github/scripts/utils/run_wrapper.sh "bash $TEST_SCRIPT" "$TAILING_LINES"
diff --git a/.github/scripts/utils/pdkBuild.sh b/.github/scripts/utils/pdkBuild.sh
deleted file mode 100644
index b8f938d..0000000
--- a/.github/scripts/utils/pdkBuild.sh
+++ /dev/null
@@ -1,61 +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 OPENLANE_TAG=rc7
-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"
-echo "done installing"
-echo "Delete docker image:"
-docker rmi $IMAGE_NAME
-echo "Cleaning up PDK installation directory"
-rm -rf $PDK_ROOT/skywater-pdk/
-rm -rf $PDK_ROOT/open_pdks/
-cd $RUN_ROOT
-exit 0
diff --git a/.github/scripts/utils/run_wrapper.sh b/.github/scripts/utils/run_wrapper.sh
deleted file mode 100644
index 48a9f6a..0000000
--- a/.github/scripts/utils/run_wrapper.sh
+++ /dev/null
@@ -1,60 +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
-
-# Adopted from Chris Snow
-# https://stackoverflow.com/questions/26082444/how-to-work-around-travis-cis-4mb-output-limit/26082445#26082445
-
-# Abort on Error
-set -e
-
-# Test script is provided as a relative path
-export WORKDIR=$(pwd)
-export COMMAND=$1
-export TAILING_LINES=${2:-500}
-export PING_SLEEP=30s
-export BUILD_OUTPUT=$WORKDIR/build.out
-
-touch $BUILD_OUTPUT
-
-dump_output() {
-   echo Tailing the last $TAILING_LINES lines of output:
-   tail -$TAILING_LINES $BUILD_OUTPUT
-   rm -f $BUILD_OUTPUT
-}
-error_handler() {
-  echo ERROR: An error was encountered with the build.
-  dump_output
-  kill $PING_LOOP_PID
-  exit 1
-}
-# If an error occurs, run our error handler to output a tail of the build
-trap 'error_handler' ERR
-
-# Set up a repeating loop to send some output to Travis.
-
-bash -c "while true; do echo \$(date) - running $COMMAND ...; sleep $PING_SLEEP; done" &
-export PING_LOOP_PID=$!
-
-# your_build_command_1 >> $BUILD_OUTPUT 2>&1
-# your_build_command_2 >> $BUILD_OUTPUT 2>&1
-$COMMAND >> $BUILD_OUTPUT 2>&1
-
-# The build finished without returning an error so dump a tail of the output
-dump_output
-
-# nicely terminate the ping output loop
-kill $PING_LOOP_PID
diff --git a/.github/workflows/caravel_example_ci.yml b/.github/workflows/caravel_example_ci.yml
index b225639..cfb184d 100644
--- a/.github/workflows/caravel_example_ci.yml
+++ b/.github/workflows/caravel_example_ci.yml
@@ -26,41 +26,3 @@
 
       - name: Run The Precheck
         run: bash ${GITHUB_WORKSPACE}/.github/scripts/precheck/run-precheck.sh
-
-  simulation-1:
-    runs-on: ubuntu-latest
-    steps:
-      - uses: actions/checkout@v2
-        with:
-          submodules: 'true'
-
-      - 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/utils/bash_run_wrapper.sh .github/scripts/utils/pdkBuild.sh
-
-      - name: Run The Simulation
-        run: bash ${GITHUB_WORKSPACE}/.github/scripts/dv/dv-check-wrapper.sh user_proj_example 1
-
-  simulation-2:
-    runs-on: ubuntu-latest
-    steps:
-      - uses: actions/checkout@v2
-        with:
-          submodules: 'true'
-
-      - 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/utils/bash_run_wrapper.sh .github/scripts/utils/pdkBuild.sh
-
-      - name: Run The Simulation
-        run: bash ${GITHUB_WORKSPACE}/.github/scripts/dv/dv-check-wrapper.sh user_proj_example 2
