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