Merge branch 'switch_pdk' into sdf_simulation
diff --git a/.github/workflows/user_project_ci.yml b/.github/workflows/user_project_ci.yml index cbd9563..1066f08 100644 --- a/.github/workflows/user_project_ci.yml +++ b/.github/workflows/user_project_ci.yml
@@ -20,14 +20,18 @@ uses: docker/setup-buildx-action@v1 - name: Export PDK ROOT - run: echo "PDK_ROOT=/usr/local/pdk" >> $GITHUB_ENV + run: echo "PDK_ROOT=/home/runner/work/pdk" >> $GITHUB_ENV + + - name: Export OPENLANE ROOT + run: echo "OPENLANE_ROOT=/home/runner/work/caravel_user_project/openlane" >> $GITHUB_ENV - name: Install dependencies run: | sudo mkdir -p ${{ env.PDK_ROOT }} sudo chown -R $USER:$USER ${{ env.PDK_ROOT }} make install - make pdk + make openlane + make pdk-with-volare - name: Tarball PDK run: | @@ -55,7 +59,10 @@ - name: Export PDK ROOT run: | - echo "PDK_ROOT=/usr/local/pdk" >> $GITHUB_ENV + echo "PDK_ROOT=/home/runner/work/pdk" >> $GITHUB_ENV + + - name: Export PDKPATH + run: echo "PDKPATH=/home/runner/work/pdk/sky130A" >> $GITHUB_ENV - name: Download PDK Tarball uses: actions/download-artifact@v2 @@ -68,22 +75,29 @@ sudo mkdir -p ${{ env.PDK_ROOT }}/sky130A sudo chown -R $USER:$USER ${{ env.PDK_ROOT }} tar -xf /tmp/sky130A.tar -C $PDK_ROOT/sky130A . - - 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 + export PDKPATH=$PDK_ROOT/sky130A git clone --depth=1 -b mpw-5b 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 }}" -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 ${{ env.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" + 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_root ${{ env.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 + - 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/* user_project_flow: timeout-minutes: 720 @@ -99,7 +113,7 @@ uses: docker/setup-buildx-action@v1 - name: Export PDK ROOT - run: echo "PDK_ROOT=/usr/local/pdk" >> $GITHUB_ENV + run: echo "PDK_ROOT=/home/runner/work/pdk" >> $GITHUB_ENV - name: Export OPENLANE ROOT run: echo "OPENLANE_ROOT=/home/runner/work/caravel_user_project/openlane" >> $GITHUB_ENV @@ -118,6 +132,7 @@ - name: Install dependencies run: | + export CARAVEL_LITE=0 make install make install_mcw make openlane
diff --git a/Makefile b/Makefile index e768a08..2b6cc2c 100644 --- a/Makefile +++ b/Makefile
@@ -28,7 +28,10 @@ # Install lite version of caravel, (1): caravel-lite, (0): caravel CARAVEL_LITE?=1 -MPW_TAG ?= mpw-5c +# PDK switch varient +export PDK?=sky130B + +MPW_TAG ?= test-6a ifeq ($(CARAVEL_LITE),1) CARAVEL_NAME := caravel-lite @@ -60,7 +63,7 @@ docker pull efabless/dv_setup:latest .PHONY: setup -setup: install check-env install_mcw pdk openlane +setup: install check-env install_mcw openlane pdk-with-volare # Openlane blocks=$(shell cd openlane && find * -maxdepth 0 -type d) @@ -83,6 +86,7 @@ -e CARAVEL_ROOT=${CARAVEL_ROOT} \ -e TOOLS=/foss/tools/riscv-gnu-toolchain-rv32i/217e7f3debe424d61374d31e33a091a630535937 \ -e DESIGNS=$(TARGET_PATH) \ + -e PDK=$(PDK) \ -e CORE_VERILOG_PATH=$(TARGET_PATH)/mgmt_core_wrapper/verilog \ -e MCW_ROOT=$(MCW_ROOT) \ -u $$(id -u $$USER):$$(id -g $$USER) efabless/dv:latest \ @@ -208,4 +212,3 @@ @$(MAKE) -pRrq -f $(lastword $(MAKEFILE_LIST)) : 2>/dev/null | awk -v RS= -F: '/^# File/,/^# Finished Make data base/ {if ($$1 !~ "^[#.]") {print $$1}}' | sort | egrep -v -e '^[^[:alnum:]]' -e '^$@$$' -
diff --git a/docs/source/index.rst b/docs/source/index.rst index 052fcf7..9bcf741 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst
@@ -55,7 +55,9 @@ Prerequisites ============= -- Docker +- Docker: `Linux <https://hub.docker.com/search?q=&type=edition&offering=community&operating_system=linux&utm_source=docker&utm_medium=webreferral&utm_campaign=dd-smartbutton&utm_location=header>`_ || `Windows <https://desktop.docker.com/win/main/amd64/Docker%20Desktop%20Installer.exe?utm_source=docker&utm_medium=webreferral&utm_campaign=dd-smartbutton&utm_location=header>`_ || `Mac with Intel Chip <https://desktop.docker.com/mac/main/amd64/Docker.dmg?utm_source=docker&utm_medium=webreferral&utm_campaign=dd-smartbutton&utm_location=header>`_ || `Mac with M1 Chip <https://desktop.docker.com/mac/main/arm64/Docker.dmg?utm_source=docker&utm_medium=webreferral&utm_campaign=dd-smartbutton&utm_location=header>`_ + +- Python 3.6+ with PIP Install Caravel =============== @@ -163,19 +165,18 @@ Building the PDK ================ -Make sure you have `Magic VLSI Layout Tool <http://opencircuitdesign.com/magic/index.html>`__ installed on your machine before building the pdk. -The pdk build is tested with magic version ``8.3.265``. +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> + + # set the OPENLANE_ROOT to the openlane installation path + export OPENLANE_ROOT=<openlane-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 + make pdk-with-volare Running Full Chip Simulation ============================ @@ -193,10 +194,8 @@ .. code:: bash export PDK_ROOT=<pdk-installation-path> - # specify simulation mode: RTL/GL - export SIM=RTL # Run RTL simulation on IO ports testbench, make verify-io_ports - make verify-<testbench-name> + make verify-<testbench-name>-rtl Once you have the physical implementation done and you have the gate-level netlists ready, it is crucial to run full gate-level simulations to make sure that your design works as intended after running the physical implementation. @@ -205,10 +204,8 @@ .. code:: bash export PDK_ROOT=<pdk-installation-path> - # specify simulation mode: RTL/GL - export SIM=GL # Run RTL simulation on IO ports testbench, make verify-io_ports - make verify-<testbench-name> + make verify-<testbench-name>-gl This sample project comes with four example testbenches to test the IO port connection, wishbone interface, and logic analyzer. The test-benches are under the
diff --git a/docs/source/quickstart.rst b/docs/source/quickstart.rst index a62dd7e..e538e7e 100644 --- a/docs/source/quickstart.rst +++ b/docs/source/quickstart.rst
@@ -27,6 +27,8 @@ - Docker: `Linux <https://hub.docker.com/search?q=&type=edition&offering=community&operating_system=linux&utm_source=docker&utm_medium=webreferral&utm_campaign=dd-smartbutton&utm_location=header>`_ || `Windows <https://desktop.docker.com/win/main/amd64/Docker%20Desktop%20Installer.exe?utm_source=docker&utm_medium=webreferral&utm_campaign=dd-smartbutton&utm_location=header>`_ || `Mac with Intel Chip <https://desktop.docker.com/mac/main/amd64/Docker.dmg?utm_source=docker&utm_medium=webreferral&utm_campaign=dd-smartbutton&utm_location=header>`_ || `Mac with M1 Chip <https://desktop.docker.com/mac/main/arm64/Docker.dmg?utm_source=docker&utm_medium=webreferral&utm_campaign=dd-smartbutton&utm_location=header>`_ +- Python 3.6+ with PIP + =============================================================================================================================================================== --------------------- @@ -51,7 +53,7 @@ .. code:: bash # Make sure that "caravel_example" matches the empty github repo name in step 1 - git clone -b mpw-5c https://github.com/efabless/caravel_user_project caravel_example + git clone -b mpw-6a https://github.com/efabless/caravel_user_project caravel_example cd caravel_example git remote rename origin upstream
diff --git a/openlane/user_proj_example/config.tcl b/openlane/user_proj_example/config.tcl index c9266ee..b216984 100755 --- a/openlane/user_proj_example/config.tcl +++ b/openlane/user_proj_example/config.tcl
@@ -13,7 +13,7 @@ # limitations under the License. # SPDX-License-Identifier: Apache-2.0 -set ::env(PDK) "sky130A" +set ::env(PDK) $::env(PDK) set ::env(STD_CELL_LIBRARY) "sky130_fd_sc_hd" set script_dir [file dirname [file normalize [info script]]]
diff --git a/openlane/user_project_wrapper/config.tcl b/openlane/user_project_wrapper/config.tcl index f720e39..f0d44fa 100755 --- a/openlane/user_project_wrapper/config.tcl +++ b/openlane/user_project_wrapper/config.tcl
@@ -16,7 +16,7 @@ # Base Configurations. Don't Touch # section begin -set ::env(PDK) "sky130A" +set ::env(PDK) $::env(PDK) set ::env(STD_CELL_LIBRARY) "sky130_fd_sc_hd" # YOU ARE NOT ALLOWED TO CHANGE ANY VARIABLES DEFINED IN THE FIXED WRAPPER CFGS