Merge pull request #308 from efabless/main #1170
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
# Runs on Every Push | |
push: | |
# Runs on Pull Requests | |
pull_request: | |
workflow_dispatch: | |
jobs: | |
pdk: | |
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: Export PDK ROOT | |
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 openlane | |
make pdk-with-volare | |
- name: Tarball PDK | |
run: | | |
tar -cf /tmp/pdk.tar -C $PDK_ROOT . | |
- name: Upload PDK Tarball | |
uses: actions/upload-artifact@v2 | |
with: | |
name: pdk-tarball | |
path: /tmp/pdk.tar | |
- name: Tarball OpenLane | |
run: | | |
tar -cf /tmp/openlane.tar -C $OPENLANE_ROOT . | |
- name: Upload OpenLane Tarball | |
uses: actions/upload-artifact@v2 | |
with: | |
name: openlane-tarball | |
path: /tmp/openlane.tar | |
dependencies: | |
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 Docker Buildx | |
uses: docker/setup-buildx-action@v1 | |
- name: Export env variables | |
run: | | |
echo "CARAVEL_ROOT=/home/runner/work/caravel_user_project/caravel" >> $GITHUB_ENV | |
echo "MCW_ROOT=/home/runner/work/caravel_user_project/mgmt_core_wrapper" >> $GITHUB_ENV | |
- name: Install dependencies | |
run: | | |
make install | |
make install_mcw | |
make install-caravel-cocotb | |
make simenv | |
- name: Tarball caravel | |
run: | | |
tar -cf /tmp/caravel.tar -C $CARAVEL_ROOT . | |
- name: Upload caravel Tarball | |
uses: actions/upload-artifact@v2 | |
with: | |
name: caravel-tarball | |
path: /tmp/caravel.tar | |
- name: Tarball mgmt_core_wrapper | |
run: | | |
tar -cf /tmp/mgmt_core_wrapper.tar -C $MCW_ROOT . | |
- name: Upload mgmt_core_wrapper Tarball | |
uses: actions/upload-artifact@v2 | |
with: | |
name: mgmt_core_wrapper-tarball | |
path: /tmp/mgmt_core_wrapper.tar | |
user_project_flow: | |
timeout-minutes: 720 | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
pdk: ["sky130A", "sky130B"] | |
needs: [pdk, dependencies] | |
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: Export PDK VARIABLES | |
run: | | |
echo "PDK_ROOT=/home/runner/work/pdk" >> $GITHUB_ENV | |
echo "PDK=${{ matrix.pdk }}" >> $GITHUB_ENV | |
echo "PDKPATH=/home/runner/work/pdk/${{ matrix.pdk }}" >> $GITHUB_ENV | |
- name: Export OPENLANE ROOT | |
run: echo "OPENLANE_ROOT=/home/runner/work/caravel_user_project/openlane" >> $GITHUB_ENV | |
- name: Export env variables | |
run: | | |
echo "CARAVEL_ROOT=/home/runner/work/caravel_user_project/caravel" >> $GITHUB_ENV | |
echo "MCW_ROOT=/home/runner/work/caravel_user_project/mgmt_core_wrapper" >> $GITHUB_ENV | |
- name: Download PDK Tarball | |
uses: actions/download-artifact@v2 | |
with: | |
name: pdk-tarball | |
path: /tmp | |
- name: Unpack PDK Tarball | |
run: | | |
sudo mkdir -p ${{ env.PDK_ROOT }} | |
sudo chown -R $USER:$USER ${{ env.PDK_ROOT }} | |
tar -xf /tmp/pdk.tar -C $PDK_ROOT . | |
- name: Download OpenLane Tarball | |
uses: actions/download-artifact@v2 | |
with: | |
name: openlane-tarball | |
path: /tmp | |
- name: Unpack OpenLane Tarball | |
run: | | |
sudo mkdir -p ${{ env.OPENLANE_ROOT }} | |
sudo chown -R $USER:$USER ${{ env.OPENLANE_ROOT }} | |
tar -xf /tmp/openlane.tar -C $OPENLANE_ROOT . | |
- name: Download caravel Tarball | |
uses: actions/download-artifact@v2 | |
with: | |
name: caravel-tarball | |
path: /tmp | |
- name: Unpack caravel Tarball | |
run: | | |
sudo mkdir -p ${{ env.CARAVEL_ROOT }} | |
sudo chown -R $USER:$USER ${{ env.CARAVEL_ROOT }} | |
tar -xf /tmp/caravel.tar -C $CARAVEL_ROOT . | |
- name: Download mgmt_core_wrapper Tarball | |
uses: actions/download-artifact@v2 | |
with: | |
name: mgmt_core_wrapper-tarball | |
path: /tmp | |
- name: Unpack mgmt_core_wrapper Tarball | |
run: | | |
sudo mkdir -p ${{ env.MCW_ROOT }} | |
sudo chown -R $USER:$USER ${{ env.MCW_ROOT }} | |
tar -xf /tmp/mgmt_core_wrapper.tar -C $MCW_ROOT . | |
- name: Harden using Openlane | |
run: | | |
make user_proj_example | |
make user_project_wrapper | |
- name: run 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 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 lvs" | |
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/* | |
- name: setup cocotb environment | |
run: | | |
make setup-cocotb-env | |
- name: Run DV RTL tests | |
run: | | |
make cocotb-verify-all-rtl | |
- name: Run DV GL tests | |
run: | | |
make cocotb-verify-all-gl |