Skip to content

fix: apply poly density workaround to additional projects #45

fix: apply poly density workaround to additional projects

fix: apply poly density workaround to additional projects #45

Workflow file for this run

name: gds
on:
workflow_dispatch:
push:
# Don't run on project submissions:
branches-ignore:
- projects/tt_um_*
pull_request:
# Don't run on project submissions:
paths-ignore:
- projects/tt_um_*/**
jobs:
gds:
env:
PYTHONIOENCODING: utf-8
PDK_ROOT: ${{ github.workspace }}/pdk
TT_CONFIG: sky130.yaml
# Uncomment the following line to build only the specified projects:
#TT_ONLY_PROJECTS: tt_um_chip_rom,tt_um_factory_test
runs-on: ubuntu-24.04
steps:
- name: checkout repo
uses: actions/checkout@v4
with:
submodules: recursive
- name: setup python
uses: actions/setup-python@v5
with:
python-version: '3.11'
cache: 'pip'
- run: pip install -r tt-multiplexer/py/requirements.txt -r tt/requirements.txt
- name: Load OpenLane environment variables
run: cat .github/config/openlane.txt | tee -a $GITHUB_ENV
- name: Checkout OpenLane 2 repo
uses: actions/checkout@v4
with:
repository: efabless/openlane2
path: openlane2
ref: ${{ env.OPENLANE_TAG }}
- name: Patch OpenLane 2 repo
working-directory: openlane2
run:
git apply --allow-empty ../patches/openlane2.patch
- name: Update caravel configuration
run: python ./tt/configure.py --update-shuttle
- uses: cachix/install-nix-action@v26
- uses: cachix/cachix-action@v14
with:
name: ${{ vars.CACHIX_CACHE || 'tinytapeout' }}
extraPullNames: ${{ vars.CACHIX_CACHE_EXTRA || 'openlane' }}
authToken: ${{ secrets.CACHIX_TOKEN }}
- name: Install Sky130 PDK
uses: TinyTapeout/volare-action@v2
with:
pdk_name: sky130
pdk_version: ${{ env.SKY130_PDK_VERSION }}
pdk_root: ${{ env.PDK_ROOT }}
# Patch selected designs + Wokwi projects to work around the poly density issue
- name: Patch projects for poly density issue
working-directory: projects
run: |
for project in tt_um_wokwi_* $DENSITY_REPLACEMENT_PROJECTS; do
if [ -f $project/$project.gds.br ]; then
brotli -jd $project/$project.gds.br
fi
python ../sky130_density_fix/replace_decap.py --design $project --user-gds $project/$project.gds --replacement-gds ../sky130_density_fix/sky130_ef_sc_hd__newfill_12.gds
done
env:
DENSITY_REPLACEMENT_PROJECTS: |
tt_um_A_6_array_multiplier
tt_um_a3_array_multiplier
tt_um_a_0_array_multiplier
tt_um_a_4_array_multiplier
tt_um_array_mult_structural
tt_um_array_mult_structural_GnahsLliw
tt_um_array_mult_structural_sarahherrera
tt_um_arry_mult_structural
tt_um_secA_group5_array_multiplier
tt_um_snn_with_delays_paolaunisa
# run OpenLane to build the GDS
- name: Harden Chip ROM
run: nix-shell $GITHUB_WORKSPACE/openlane2/shell.nix --run "python -m openlane tt/rom/config.json"
- name: Harden tt_ctrl
working-directory: tt-multiplexer/ol2/tt_ctrl
run: nix-shell $GITHUB_WORKSPACE/openlane2/shell.nix --run "python build.py"
- name: Harden tt_mux
working-directory: tt-multiplexer/ol2/tt_mux
run: nix-shell $GITHUB_WORKSPACE/openlane2/shell.nix --run "python build.py"
- name: Copy macros
run: python ./tt/configure.py --copy-macros
- name: Harden tt_top
working-directory: tt-multiplexer/ol2/tt_top
run: nix-shell $GITHUB_WORKSPACE/openlane2/shell.nix --run "python build.py --skip-xor-checks"
- name: Copy final results
run: python ./tt/configure.py --copy-final-results
- name: Create eFabless submission
run: python ./tt/configure.py --create-efabless-submission
- name: upload GDS artifact
if: success() || failure()
uses: actions/upload-artifact@v4
with:
name: GDS
path: tt-multiplexer/ol2/tt_top/runs/RUN_*/*
- name: upload macros artifact
if: success() || failure()
uses: actions/upload-artifact@v4
with:
name: macros
path: |
tt-multiplexer/cfg/*.yaml
tt-multiplexer/ol2/tt_top/gds/*
tt-multiplexer/ol2/tt_top/lef/*
tt-multiplexer/ol2/tt_top/spef/*
tt-multiplexer/ol2/tt_top/verilog/*
- name: upload shuttle_index.json
if: success() || failure()
uses: actions/upload-artifact@v4
with:
name: shuttle_index
path: shuttle_index.json
- name: upload Efabless submission directory
uses: actions/upload-artifact@v4
with:
name: efabless_submission
path: efabless
# Install iverilog, cocotb (required for GL test)
- name: install oss-cad-suite
uses: YosysHQ/setup-oss-cad-suite@v3
with:
version: '2023-05-27'
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: GL simulation
working-directory: verilog/dv/mux
env:
EXPECTED_REPO: ${{ github.repository }}
run: |
make clean test_mux_gl
# make will return success even if the test fails, so check for failure in the results.xml
! grep failure results.xml
- name: upload GL test results
if: success() || failure()
uses: actions/upload-artifact@v4
with:
name: gl_test_vcd
path: |
verilog/dv/mux/results.xml
verilog/dv/mux/test_mux.vcd
verilog/dv/mux/test_mux.gtkw