Merge branch 'caravel_user_project_analog' into main
diff --git a/.github/workflows/user_project_ci.yml b/.github/workflows/user_project_ci.yml
index 330d845..3317f6d 100644
--- a/.github/workflows/user_project_ci.yml
+++ b/.github/workflows/user_project_ci.yml
@@ -8,74 +8,93 @@
workflow_dispatch:
jobs:
- precheck:
- runs-on: ubuntu-latest
- timeout-minutes: 720
- steps:
- - uses: actions/checkout@v2
+ mpw_precheck_sky130A:
+ timeout-minutes: 720
+ 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: Set up Docker Buildx
+ uses: docker/setup-buildx-action@v1
- - name: Install Magic
- run: bash ${GITHUB_WORKSPACE}/.github/scripts/install_magic.sh
+ - name: Export PDK ROOT
+ run: |
+ echo "PDK_ROOT=/home/runner/work/pdk" >> $GITHUB_ENV
- - name: Build PDK
- run: bash ${GITHUB_WORKSPACE}/.github/scripts/build_pdk.sh
+ - name: Export PDKPATH
+ run: echo "PDKPATH=/home/runner/work/pdk/sky130A" >> $GITHUB_ENV
- - name: Install The Precheck
- run: git clone --depth=1 https://github.com/efabless/mpw_precheck.git ${GITHUB_WORKSPACE}/mpw_precheck
+ - name: Download PDK
+ run: |
+ MPW_TAG=main CARAVEL_LITE=0 make install
+ make pdk-with-volare
+
+ - name: Run MPW-Precheck
+ run: |
+ 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
+ git clone --depth=1 -b mpw-7a https://github.com/efabless/mpw_precheck.git
+ docker run -v "$PRECHECK_ROOT":"$PRECHECK_ROOT" -v "$INPUT_DIRECTORY":"$INPUT_DIRECTORY" -v "${{ env.PDK_ROOT }}":"${{ env.PDK_ROOT }}" -e INPUT_DIRECTORY="$INPUT_DIRECTORY" -e PDK_ROOT="${{ env.PDK_ROOT }}" -e PDKPATH="${{ env.PDKPATH }}" -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_path ${{ env.PDKPATH }} --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
- - name: Run The Precheck
- run: bash ${GITHUB_WORKSPACE}/.github/scripts/run_precheck.sh
+ - name: upload failure logs
+ if: failure()
+ uses: actions/upload-artifact@v2
+ with:
+ name: error
+ path: |
+ /home/runner/work/caravel_user_project/caravel_user_project/mpw_precheck_result/logs/*
- # dv_rtl:
- # runs-on: ubuntu-latest
- # steps:
- # - uses: actions/checkout@v2
+ mpw_precheck_sky130B:
+ timeout-minutes: 720
+ 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: Set up Docker Buildx
+ uses: docker/setup-buildx-action@v1
- # - name: Install Magic
- # run: bash ${GITHUB_WORKSPACE}/.github/scripts/install_magic.sh
+ - name: Export PDK ROOT
+ run: |
+ echo "PDK_ROOT=/home/runner/work/pdk" >> $GITHUB_ENV
- # - name: Build PDK
- # run: bash ${GITHUB_WORKSPACE}/.github/scripts/build_pdk.sh
+ - name: Export PDKPATH
+ run: echo "PDKPATH=/home/runner/work/pdk/sky130B" >> $GITHUB_ENV
- # - name: Install The Dockerized DV Setup
- # run: docker pull efabless/dv_setup:latest
+ - name: Download PDK
+ run: |
+ MPW_TAG=main CARAVEL_LITE=0 make install
+ make pdk-with-volare
+
+ - name: Run MPW-Precheck
+ run: |
+ 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
+ git clone --depth=1 -b mpw-7a https://github.com/efabless/mpw_precheck.git
+ docker run -v "$PRECHECK_ROOT":"$PRECHECK_ROOT" -v "$INPUT_DIRECTORY":"$INPUT_DIRECTORY" -v "${{ env.PDK_ROOT }}":"${{ env.PDK_ROOT }}" -e INPUT_DIRECTORY="$INPUT_DIRECTORY" -e PDK_ROOT="${{ env.PDK_ROOT }}" -e PDKPATH="${{ env.PDKPATH }}" -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_path ${{ env.PDKPATH }} --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
- # - 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 RTL
+ - name: upload failure logs
+ if: failure()
+ uses: actions/upload-artifact@v2
+ with:
+ name: error
+ path: |
+ /home/runner/work/caravel_user_project/caravel_user_project/mpw_precheck_result/logs/*
- # 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 GL
diff --git a/.gitignore b/.gitignore
index 08e4b1d..d1f0d9e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,5 @@
-precheck_results
+/.idea/
+/precheck_results/
*/tmp
*/*/tmp
diff --git a/Makefile b/Makefile
index 37b341c..bc049d4 100644
--- a/Makefile
+++ b/Makefile
@@ -18,10 +18,13 @@
PRECHECK_ROOT?=${HOME}/mpw_precheck
SIM ?= RTL
+export OPEN_PDKS_COMMIT?=41c0908b47130d5675ff8484255b43f66463a7d6
+export PDK?=sky130B
+export PDKPATH?=$(PDK_ROOT)/$(PDK)
# Install lite version of caravel, (1): caravel-lite, (0): caravel
CARAVEL_LITE?=1
-MPW_TAG ?= mpw-5c
+MPW_TAG ?= mpw-7a
ifeq ($(CARAVEL_LITE),1)
CARAVEL_NAME := caravel-lite
@@ -109,8 +112,15 @@
run-precheck: check-pdk check-precheck
$(eval INPUT_DIRECTORY := $(shell pwd))
cd $(PRECHECK_ROOT) && \
- 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)"
+ docker run -v $(PRECHECK_ROOT):$(PRECHECK_ROOT) \
+ -v $(INPUT_DIRECTORY):$(INPUT_DIRECTORY) \
+ -v $(PDK_ROOT):$(PDK_ROOT) \
+ -e INPUT_DIRECTORY=$(INPUT_DIRECTORY) \
+ -e PDK_PATH=$(PDK_ROOT)/$(PDK) \
+ -e PDK_ROOT=$(PDK_ROOT) \
+ -e PDKPATH=$(PDKPATH) \
+ -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_path $(PDK_ROOT)/$(PDK)"
# Clean
.PHONY: clean
diff --git a/docs/source/index.rst b/docs/source/index.rst
index 0a7c0c7..1467d4c 100644
--- a/docs/source/index.rst
+++ b/docs/source/index.rst
@@ -128,18 +128,16 @@
Building the PDK
================
-Make sure you have `Magic VLSI Layout Tool <http://opencircuitdesign.com/magic/index.html>`__ `version 8.3.265 <https://github.com/RTimothyEdwards/magic/tree/8.3.265>`__ installed on your machine before building the pdk.
+For more information about volare click `here <https://github.com/efabless/volare>`__
.. code:: bash
# set PDK_ROOT to the path you wish to use for the pdk
- export PDK_ROOT=<pdk-installation-path>
+ export PDK_ROOT=<pdk-installation-path
- # you can optionally specify skywater-pdk and open-pdks commit used
- # by setting and exporting SKYWATER_COMMIT and OPEN_PDKS_COMMIT
- # if you do not set them, they default to the last verfied commits tested for this project
-
- make pdk
+ # use volare to download the pdk
+ # To change the default pdk version you can export OPEN_PDKS_COMMIT=<pdk_commit>
+ make pdk-with-volare
diff --git a/verilog/dv/README.md b/verilog/dv/README.md
index 6be9cd3..f69808a 100644
--- a/verilog/dv/README.md
+++ b/verilog/dv/README.md
@@ -80,7 +80,8 @@
First, you will need to export a number of environment variables:
```bash
-export PDK_PATH=<pdk-location/sky130A>
+export PDK=sky130B
+export PDK_PATH=<pdk-location>/$PDK
export CARAVEL_ROOT=<caravel_root>
export UPRJ_ROOT=<user_project_root>
```
@@ -105,7 +106,8 @@
```bash
export GCC_PATH=<gcc-installation-path>
-export PDK_PATH=<pdk-location/sky130A>
+export PDK=sky130B
+export PDK_PATH=<pdk-location>/$PDK
```
Then, follow the instruction at [Both](#both) to run RTL/GL simulation.
diff --git a/verilog/dv/mprj_por/Makefile b/verilog/dv/mprj_por/Makefile
index 5d0825f..6d8e9c4 100644
--- a/verilog/dv/mprj_por/Makefile
+++ b/verilog/dv/mprj_por/Makefile
@@ -15,7 +15,7 @@
# SPDX-License-Identifier: Apache-2.0
## PDK
-PDK_PATH = $(PDK_ROOT)/sky130A
+PDK_PATH = $(PDK_ROOT)/$(PDK)
## Caravel Pointers
CARAVEL_ROOT ?= ../../../caravel
@@ -77,14 +77,14 @@
ifndef PDK_ROOT
$(error PDK_ROOT is undefined, please export it before running make)
endif
-ifeq (,$(wildcard $(PDK_ROOT)/sky130A))
- $(error $(PDK_ROOT)/sky130A not found, please install pdk before running make)
+ifeq (,$(wildcard $(PDK_ROOT)/$(PDK)))
+ $(error $(PDK_ROOT)/$(PDK) not found, please install pdk before running make)
endif
ifeq (,$(wildcard $(GCC_PATH)/$(GCC_PREFIX)-gcc ))
$(error $(GCC_PATH)/$(GCC_PREFIX)-gcc is not found, please export GCC_PATH and GCC_PREFIX before running make)
endif
# check for efabless style installation
-ifeq (,$(wildcard $(PDK_ROOT)/sky130A/libs.ref/*/verilog))
+ifeq (,$(wildcard $(PDK_ROOT)/$(PDK)/libs.ref/*/verilog))
SIM_DEFINES := ${SIM_DEFINES} -DEF_STYLE
endif