-
Notifications
You must be signed in to change notification settings - Fork 0
137 lines (119 loc) · 4.61 KB
/
precheck.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
name: mpw_precheck
on:
workflow_dispatch:
workflow_run:
workflows: ['gds']
types: [completed]
jobs:
mpw_precheck:
env:
PYTHONIOENCODING: utf-8
PDK_ROOT: /home/runner/pdk
# ubuntu
runs-on: ubuntu-24.04
steps:
# need the repo checked out
- name: checkout repo
uses: actions/checkout@v4
with:
submodules: recursive
- name: Load OpenLane environment variables
run: cat .github/config/openlane.txt | tee -a $GITHUB_ENV
- name: Checkout Precheck Repo
uses: actions/checkout@v4
with:
repository: efabless/mpw_precheck
path: mpw_precheck
- name: Install Sky130 PDK
uses: TinyTapeout/volare-action@v2
with:
pdk_name: sky130
pdk_version: ${{ env.SKY130_PDK_VERSION }}
pdk_root: ${{ env.PDK_ROOT }}
- name: Download artifact (run id = ${{ github.event.workflow_run.id }})
uses: dawidd6/action-download-artifact@v3
id: download_artifact
with:
workflow: gds.yaml
run_id: ${{ github.event.workflow_run.id }}
workflow_conclusion: success
name: efabless_submission
path: tinytapeout-submission
- name: Run precheck (run id = ${{ fromJSON(steps.download_artifact.outputs.artifacts)[0].workflow_run.id }})
working-directory: mpw_precheck
run: |
docker run -v $(pwd):/opt/mpw_precheck \
-v "$INPUT_DIRECTORY":"$INPUT_DIRECTORY" -v "$PDK_PATH":"$PDK_PATH" \
-e INPUT_DIRECTORY="$INPUT_DIRECTORY" -e PDK_PATH="$PDK_PATH" -e PDK_ROOT="$PDK_ROOT" \
-u $(id -u "$USER"):$(id -g "$USER") \
-w /opt/mpw_precheck \
efabless/mpw_precheck:latest ./run_precheck.sh --private --skip_checks $SKIP_CHECKS
env:
# magic_drc - it's slow and we're already running it in the gds job
# lvs - slow, currently failing (GL netlist doesn't include user modules), and we're already doing LVS in the gds job
SKIP_CHECKS: |
magic_drc
lvs
PDK_PATH: ${{ env.PDK_ROOT }}/sky130A
INPUT_DIRECTORY: ${{ github.workspace }}/tinytapeout-submission
- name: Upload precheck results
uses: actions/upload-artifact@v4
if: always()
with:
name: precheck_results
path: tinytapeout-submission/precheck_results
mpw_tapeout_checks:
env:
KLAYOUT_VERSION: 0.29.2
MAGIC_VERSION: 8.3.471
PDK_ROOT: /home/runner/pdk
CARAVEL_ROOT: /home/runner/caravel
runs-on: ubuntu-22.04
steps:
- name: checkout repo
uses: actions/checkout@v4
with:
submodules: recursive
- name: Checkout Caravel
uses: actions/checkout@v4
with:
repository: efabless/caravel
path: ${{ env.CARAVEL_ROOT }}
- name: Install KLayout
run: |
wget https://www.klayout.org/downloads/Ubuntu-22/klayout_${KLAYOUT_VERSION}-1_amd64.deb
sudo apt-get install -y ./klayout_${KLAYOUT_VERSION}-1_amd64.deb
- name: Install magic VLSI
run: |
sudo apt-get install -y m4 python3 libx11-dev tcl-dev tk-dev libcairo2-dev mesa-common-dev libglu1-mesa-dev
git clone -b ${MAGIC_VERSION} https://github.com/RTimothyEdwards/magic magic
cd magic
./configure
make -j4
sudo make install
- name: Download artifact (run id = ${{ github.event.workflow_run.id }})
uses: dawidd6/action-download-artifact@v3
id: download_artifact
with:
workflow: gds.yaml
run_id: ${{ github.event.workflow_run.id }}
workflow_conclusion: success
name: efabless_submission
path: tinytapeout-submission
- name: Create final .oas file
working-directory: tinytapeout-submission
run: |
make -C $CARAVEL_ROOT openframe
make -C $CARAVEL_ROOT generate_fill USER_ID=1 PROJECT=caravel_openframe
make -C $CARAVEL_ROOT final USER_ID=1 PROJECT=caravel_openframe
- name: Publish final .oas file
uses: actions/upload-artifact@v4
if: always()
with:
name: final_oas
path: tinytapeout-submission/tapeout/outputs/oas/*
# TODO:
#
# klayout -b -r fom_density.drc -rd gds_input=gds/caravel_1.gds -rd top_cell=caravel_1 -rd report_file=fom_report.xml
# Check the klayout report file, and publish it as an artifact (even if case of failure)
# https://github.com/efabless/foss-asic-tools/blob/main/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/fom_density.drc#L4 ?