github action wip
diff --git a/.github/workflows/tinytapeout.yaml b/.github/workflows/tinytapeout.yaml
new file mode 100644
index 0000000..510af36
--- /dev/null
+++ b/.github/workflows/tinytapeout.yaml
@@ -0,0 +1,82 @@
+name: tinytapeout
+# either manually started, or on a schedule
+on: [ push, workflow_dispatch, pull_request ]
+jobs:
+ multi_tool:
+ env:
+ OPENLANE_ROOT: /home/runner/openlane
+ PDK_ROOT: /home/runner/pdk
+ PDK: sky130B
+ # ubuntu
+ runs-on: ubuntu-latest
+ steps:
+ # need the repo checked out
+ - name: checkout repo
+ uses: actions/checkout@v2
+
+ # build pdk
+ - name: pdk & openlane & precheck
+ run: |
+ make setup
+ make precheck
+
+ # need python
+ - name: setup python
+ uses: actions/setup-python@v2
+ with:
+ python-version: '3.7.7'
+ cache: 'pip'
+ - run: pip install -r requirements.txt
+
+ # install riscv gcc
+# - name: riscv gcc
+# run: |
+# cd $HOME
+# wget https://static.dev.sifive.com/dev-tools/riscv64-unknown-elf-gcc-8.3.0-2020.04.1-x86_64-linux-ubuntu14.tar.gz
+# tar -xzf riscv64-unknown-elf-gcc-8.3.0-2020.04.1-x86_64-linux-ubuntu14.tar.gz
+
+ # pwd
+ - name: pwd
+ run: |
+ pwd # /home/runner/work/zero_to_asic_mpw6/zero_to_asic_mpw6
+
+ # uncompress
+ - name: uncompress gds
+ run: |
+ make uncompress
+
+ # install oss fpga tools
+# - name: install oss-cad-suite
+# uses: YosysHQ/setup-oss-cad-suite@v1
+# with:
+# python-override: true # don't want to use that python
+# - run: |
+# yosys --version
+# iverilog -V
+
+ # fetch the repos
+ - name: fetch all
+ run: python ./configure.py --update-projects
+
+ # install projects
+ - name: configure
+ run: python ./configure.py --update-caravel
+
+ - name: user project wrapper GDS
+ run: make user_project_wrapper
+
+ - name: precheck
+ run: make run-precheck
+
+ # archive the gds and final report for the user project wrapper
+ - name: Archive Wrapper GDS
+ uses: actions/upload-artifact@v2
+ with:
+ name: Wrapper GDS
+ path: gds/user_project_wrapper.gds
+
+ - name: Archive Wrapper Signoff
+ uses: actions/upload-artifact@v2
+ with:
+ name: Wrapper Report
+ path: openlane/user_project_wrapper/runs/user_project_wrapper/reports/final_summary_report.csv
diff --git a/.github/workflows/user_project_ci.yml b/.github/workflows/user_project_ci.yml
deleted file mode 100644
index fd56dd9..0000000
--- a/.github/workflows/user_project_ci.yml
+++ /dev/null
@@ -1,224 +0,0 @@
-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
-
-
- mpw_precheck:
- timeout-minutes: 720
- runs-on: ubuntu-latest
- needs: [pdk]
- 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 PDKPATH
- run: echo "PDKPATH=/home/runner/work/pdk/sky130A" >> $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: 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-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: 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_sky130A:
- timeout-minutes: 720
- runs-on: ubuntu-latest
- needs: [pdk]
- 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 PDK
- run: echo "PDK=sky130A" >> $GITHUB_ENV
-
- - name: Export OPENLANE ROOT
- run: echo "OPENLANE_ROOT=/home/runner/work/caravel_user_project/openlane" >> $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: Install dependencies
- run: |
- make install
- make install_mcw
- make openlane
- make simenv
-
- - name: Harden using Openlane
- run: |
- make user_proj_example
- make user_project_wrapper
-
- - name: Run DV RTL tests
- run: |
- make verify-io_ports-rtl
- make verify-la_test1-rtl
- make verify-la_test2-rtl
- make verify-mprj_stimulus-rtl
- make verify-wb_port-rtl
-
- - name: Run DV GL tests
- run: |
- make verify-io_ports-gl
- make verify-la_test1-gl
- make verify-la_test2-gl
- make verify-mprj_stimulus-gl
- make verify-wb_port-gl
-
- user_project_flow_sky130B:
- timeout-minutes: 720
- runs-on: ubuntu-latest
- needs: [pdk]
- 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 PDK
- run: echo "PDK=sky130B" >> $GITHUB_ENV
-
- - name: Export OPENLANE ROOT
- run: echo "OPENLANE_ROOT=/home/runner/work/caravel_user_project/openlane" >> $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: Install dependencies
- run: |
- make install
- make install_mcw
- make openlane
- make simenv
-
- - name: Harden using Openlane
- run: |
- make user_proj_example
- make user_project_wrapper
-
- - name: Run DV RTL tests
- run: |
- make verify-io_ports-rtl
- make verify-la_test1-rtl
- make verify-la_test2-rtl
- make verify-mprj_stimulus-rtl
- make verify-wb_port-rtl
-
- - name: Run DV GL tests
- run: |
- make verify-io_ports-gl
- make verify-la_test1-gl
- make verify-la_test2-gl
- make verify-mprj_stimulus-gl
- make verify-wb_port-gl
diff --git a/requirements.txt b/requirements.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/requirements.txt