blob: fde7ad5bca35abff4a80dfd64ae9b82710d77bf4 [file] [log] [blame]
name: CI
on:
# Runs on Every Push
push:
# Runs on Pull Requests
pull_request:
workflow_dispatch:
env:
MPW_TAG: gfmpw-0f
USER_ID: '18100001'
CACHE_KEY: 0
PDK: gf180mcuC
STD_CELL_LIBRARY: gf180mcu_fd_sc_mcu7t5v0
STD_CELL_LIBRARY_OPT: gf180mcu_fd_sc_mcu7t5v0
jobs:
gds:
timeout-minutes: 360
runs-on: ubuntu-latest
defaults:
run:
shell: bash -el {0}
steps:
- name: checkout repo
uses: actions/checkout@v3
with:
submodules: true
- name: cache conda
uses: actions/cache@v3
with:
path: ~/conda_pkgs_dir
key:
${{ runner.os }}-${{ env.CACHE_KEY }}-conda
- name: setup miniconda
uses: conda-incubator/setup-miniconda@v2.2.0
with:
installer-url: https://github.com/proppy/conda-eda/releases/download/v0.0-1452-g75fd8b9/mixed-signal.gf180mcuc-0-Linux-x86_64.sh
auto-activate-base: true
activate-environment: ""
channel-priority: strict
use-only-tar-bz2: true
- name: setup env
run: |
echo $CONDA/bin >> $GITHUB_PATH
echo "PDK_ROOT=$CONDA/share/pdk" >> $GITHUB_ENV
echo "PDK=gf180mcuC" >> $GITHUB_ENV
- name: test tools
run: |
yosys --version
openroad -version
magic -dnull -noconsole --version
netgen -batch quit
klayout -zz -v
- name: run flow
run: |
#(cd gf180_teststructures && magic -T gf180mcuC -dnull -noconsole < lef.tcl)
(cd gf180_teststructures && magic -T gf180mcuC -dnull -noconsole < mag.tcl)
cp gf180_teststructures/gf180_teststructures_flat.mag mag/gf180_teststructures.mag
make user_project_wrapper
- name: archive openlane runs
if: always()
uses: actions/upload-artifact@v3
with:
name: openlane-runs
path: |
${{ github.workspace }}/openlane/user_proj_example/runs/
${{ github.workspace }}/openlane/user_project_wrapper/runs/
${{ github.workspace }}/gds/
${{ github.workspace }}/gf180_teststructures/
- name: cache gds
uses: actions/cache@v3
with:
path: |
def/
gds/
lef/
mag/
maglef/
sdc/
sdf/
signoff/
spef/
spi/
verilog/
key: ${{ runner.os }}-gds-${{ github.run_id }}
precheck:
needs:
- gds
runs-on: ubuntu-latest
steps:
- name: checkout repo
uses: actions/checkout@v3
with:
submodules: true
- name: cache conda
uses: actions/cache@v3
with:
path: ~/conda_pkgs_dir
key:
${{ runner.os }}-${{ env.CACHE_KEY }}-conda
- name: setup miniconda
uses: conda-incubator/setup-miniconda@v2.2.0
with:
installer-url: https://github.com/proppy/conda-eda/releases/download/v0.0-1452-g75fd8b9/mixed-signal.gf180mcuc-0-Linux-x86_64.sh
auto-activate-base: true
activate-environment: ""
channel-priority: strict
use-only-tar-bz2: true
- name: setup env
run: |
echo $CONDA/bin >> $GITHUB_PATH
echo "PDK_ROOT=$CONDA/share/pdk" >> $GITHUB_ENV
echo "PDK=gf180mcuC" >> $GITHUB_ENV
- name: test tools
run: |
yosys --version
openroad -version
magic -dnull -noconsole --version
netgen -batch quit
klayout -zz -v
- name: restore gds cache
uses: actions/cache@v3
with:
path: |
def/
gds/
lef/
mag/
maglef/
sdc/
sdf/
signoff/
spef/
spi/
verilog/
key: ${{ runner.os }}-gds-${{ github.run_id }}
- name: run precheck
run: |
python -m pip install -r requirements.mpw_precheck.txt
make run-precheck
- name: archive precheck results
if: always()
uses: actions/upload-artifact@v3
with:
name: precheck-results
path: |
${{ github.workspace }}/gds
${{ github.workspace }}/verilog
${{ github.workspace }}/precheck_results/
tapeout:
needs:
- gds
runs-on: ubuntu-latest
steps:
- name: checkout repo
uses: actions/checkout@v3
with:
submodules: true
- name: cache conda
uses: actions/cache@v3
with:
path: ~/conda_pkgs_dir
key:
${{ runner.os }}-${{ env.CACHE_KEY }}-conda
- name: setup miniconda
uses: conda-incubator/setup-miniconda@v2.2.0
with:
installer-url: https://github.com/proppy/conda-eda/releases/download/v0.0-1452-g75fd8b9/mixed-signal.gf180mcuc-0-Linux-x86_64.sh
auto-activate-base: true
activate-environment: ""
channel-priority: strict
use-only-tar-bz2: true
- name: setup env
run: |
echo $CONDA/bin >> $GITHUB_PATH
echo "PDK_ROOT=$CONDA/share/pdk" >> $GITHUB_ENV
echo "PDK=gf180mcuC" >> $GITHUB_ENV
- name: test tools
run: |
yosys --version
openroad -version
magic -dnull -noconsole --version
netgen -batch quit
klayout -zz -v
- name: restore gds cache
uses: actions/cache@v3
with:
path: |
def/
gds/
lef/
mag/
maglef/
sdc/
sdf/
signoff/
spef/
spi/
verilog/
key: ${{ runner.os }}-gds-${{ github.run_id }}
- name: run tapeout
if: always()
run: |
make set_user_id
make gpio_defaults
sed -i -e "s@\$PDK_ROOT/\$PDK@$PDK_ROOT/$PDK@g" mag/*.mag
sed -i -e "s@\$PDKPATH@$PDK_ROOT/$PDK@g" mag/*.mag
sed -i -e "s@\$PDK_ROOT/\$PDK@$PDK_ROOT/$PDK@g" caravel/mag/*.mag
sed -i -e "s@\$PDKPATH@$PDK_ROOT/$PDK@g" caravel/mag/*.mag
make ship
- name: archive caravel tapeout
if: always()
uses: actions/upload-artifact@v3
with:
name: caravel-tapeout
path: |
${{ github.workspace }}/gds/caravel_*.gds
${{ github.workspace }}/signoff/