| name: multi_tool |
| # either manually started, or on a schedule |
| on: [ push, workflow_dispatch ] |
| 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 |
| |
| - name: multi tools |
| run: | |
| cd $HOME |
| git clone https://github.com/mattvenn/multi_project_tools.git |
| |
| # need python |
| - name: setup python |
| uses: actions/setup-python@v2 |
| with: |
| python-version: '3.7.7' |
| cache: 'pip' |
| - run: pip install -r $HOME/multi_project_tools/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 |
| |
| # remove existing compressed gds |
| - name: remove compressed gds |
| run: | |
| rm -f gds/*gz |
| find /home/runner/work/zero_to_asic_mpw7/zero_to_asic_mpw7/ |
| |
| # 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: | |
| mkdir /home/runner/projects |
| python $HOME/multi_project_tools/multi_tool.py --clone-repos --clone-shared-repos --openram |
| gunzip -r /home/runner/projects |
| find /home/runner/projects -name '*gds*' |
| |
| # install projects |
| - name: install project |
| run: python $HOME/multi_project_tools/multi_tool.py --create-openlane-config --copy-project --openram --copy-gds --force |
| |
| # tests |
| - name: test gds |
| run: python $HOME/multi_project_tools/multi_tool.py --test-gds |
| |
| # - name: test prove tristate - fails due to logic loop in silife |
| # run: python $HOME/multi_project_tools/multi_tool.py --prove-tristate --openram |
| |
| - name: test ports |
| run: python $HOME/multi_project_tools/multi_tool.py --test-ports |
| |
| - name: test module |
| run: python $HOME/multi_project_tools/multi_tool.py --test-module |
| |
| - name: prove wrapper |
| run: python $HOME/multi_project_tools/multi_tool.py --prove-wrapper |
| |
| # needs netgen |
| # - name: lvs |
| # run: python ./multi_tool.py --test-lvs --local github_local.yaml |
| |
| # needs local directory from multi_project |
| # - name: tristate-z |
| # run: python $HOME/multi_project_tools/multi_tool.py --test-tristate-z |
| |
| - name: docs |
| run: python $HOME/multi_project_tools/multi_tool.py --generate-doc --openram --force |
| |
| # run the caravel test |
| - name: caravel test |
| run: python $HOME/multi_project_tools/multi_tool.py --test-caravel |
| |
| # build gds |
| - 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 |