fix: apply the poly density workaround to all digital designs #46
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: 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 all digital projects to work around the poly density issue | |
- name: Patch projects for poly density issue | |
working-directory: projects | |
run: | | |
for project in tt_um_*; do | |
if [ -f $project/$project.gds.br ]; then | |
brotli -jd $project/$project.gds.br | |
fi | |
if [[ "$(jq -r '.openlane_version' $project/commit_id.json)" != "OpenLane2 2"* ]]; then | |
continue | |
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 | |
# 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 |