EFIC-233 - update ci
diff --git a/.github/scripts/build-pdk.sh b/.github/scripts/build-pdk.sh
index 48f0dcc..f65b2c5 100644
--- a/.github/scripts/build-pdk.sh
+++ b/.github/scripts/build-pdk.sh
@@ -5,7 +5,7 @@
cd ..
export PDK_ROOT=$(pwd)/pdks
mkdir $PDK_ROOT
-cd $HOME/caravel-lite/
-make pdk
+cd $HOME/caravel-lite/ || exit
+make skywater-pdk skywater-library open_pdks build-pdk gen-sources
-exit 0
\ No newline at end of file
+exit 0
diff --git a/.github/scripts/build/run-set-id.sh b/.github/scripts/build/run-set-id.sh
index 9cb87f8..56583bf 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
index 53ccb59..e191953 100644
--- a/.github/scripts/build/run-xor.sh
+++ b/.github/scripts/build/run-xor.sh
@@ -17,10 +17,10 @@
export UPRJ_ROOT=$(pwd)
export CARAVEL_ROOT=$(pwd)/caravel
cd ..
-export PDK_ROOT=$(pwd)/pdks
export IMAGE_NAME=efabless/openlane:$OPENLANE_TAG
+export PDK_ROOT=$(pwd)/pdks
-cd $UPRJ_ROOT
+cd $UPRJ_ROOT || exit
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;"
@@ -29,8 +29,8 @@
echo "Total XOR differences = $cnt"
-if [[ $cnt -ne 0 ]]; then
- exit 2;
+if [[ $cnt -ne 0 ]]; then
+ exit 2
fi
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/precheck/install-magic.sh b/.github/scripts/install-magic.sh
similarity index 73%
rename from .github/scripts/precheck/install-magic.sh
rename to .github/scripts/install-magic.sh
index 4d9bc9d..ca91137 100644
--- a/.github/scripts/precheck/install-magic.sh
+++ b/.github/scripts/install-magic.sh
@@ -13,14 +13,10 @@
# 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
-# By default build pdk since we don't need the other script for the main purpose
-export MAGIC_ROOT=./magic
-
-sudo apt-get install -y tcl tk tcl-dev tk-dev libglu1-mesa-dev freeglut3-dev mesa-common-dev csh libncurses5-dev libncursesw5-dev libx11-dev
-
-git clone --depth=1 --branch 8.3.265 https://github.com/RTimothyEdwards/magic.git ${MAGIC_ROOT}
-cd $MAGIC_ROOT
+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
diff --git a/.github/scripts/precheck/run-precheck.sh b/.github/scripts/precheck/run-precheck.sh
index e783a03..12c3aaa 100644
--- a/.github/scripts/precheck/run-precheck.sh
+++ b/.github/scripts/precheck/run-precheck.sh
@@ -18,7 +18,7 @@
export OUTPUT_DIRECTORY=$CARAVEL_USER_PROJECT_ROOT/mpw_precheck_result
cd ..
export PDK_ROOT=$(pwd)/pdks
-cd $PRECHECK_ROOT
+cd $PRECHECK_ROOT || exit
docker run -v $PRECHECK_ROOT:$PRECHECK_ROOT -v $CARAVEL_USER_PROJECT_ROOT:$CARAVEL_USER_PROJECT_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 --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"
@@ -27,4 +27,5 @@
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..894d082 100644
--- a/.github/workflows/caravel_build.yml
+++ b/.github/workflows/caravel_build.yml
@@ -1,73 +1,72 @@
name: Caravel Build
-
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:
make_ship:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v2
-
- - name: Set up QEMU
- uses: docker/setup-qemu-action@v1
+ - 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.12.17_05.07.41
+ - name: Set up QEMU
+ uses: docker/setup-qemu-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
-
+ - 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: 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
+ - 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 Set User ID
- run: bash ${GITHUB_WORKSPACE}/.github/scripts/build/run-set-id.sh
- env:
- OPENLANE_TAG: 2021.09.16_03.28.21
+ - 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: Run Set User ID
+ run: bash ${GITHUB_WORKSPACE}/.github/scripts/build/run-set-id.sh
+ env:
+ OPENLANE_TAG: 2021.09.16_03.28.21
xor_wrapper:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v2
-
- - name: Set up QEMU
- uses: docker/setup-qemu-action@v1
+ - 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:
+ - 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: Run XOR Check
- run: bash ${GITHUB_WORKSPACE}/.github/scripts/build/run-xor.sh
- env:
- OPENLANE_TAG: 2021.09.16_03.28.21
+ - name: Run XOR Check
+ run: bash ${GITHUB_WORKSPACE}/.github/scripts/build/run-xor.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 73e7ca6..ce2ba5e 100644
--- a/.github/workflows/user_project_ci.yml
+++ b/.github/workflows/user_project_ci.yml
@@ -21,11 +21,11 @@
uses: docker/setup-buildx-action@v1
- name: Install Magic
- run: bash ${GITHUB_WORKSPACE}/.github/scripts/precheck/install-magic.sh
+ 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: git clone --depth=1 https://github.com/efabless/mpw_precheck.git ${GITHUB_WORKSPACE}/mpw_precheck
@@ -43,10 +43,11 @@
- 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.11.25_01.26.14
+ - 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
@@ -66,10 +67,11 @@
- 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.11.25_01.26.14
+ - 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