-
Notifications
You must be signed in to change notification settings - Fork 2
50 lines (38 loc) · 1.75 KB
/
Copy pathci.yml
File metadata and controls
50 lines (38 loc) · 1.75 KB
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
name: smoke
on:
push:
pull_request:
jobs:
verify:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Install BLAS/LAPACK for DEVSIM
run: sudo apt-get update && sudo apt-get install -y libopenblas-dev
- name: Install Python packages
run: pip install devsim numpy scipy matplotlib
# The fast verification chain: every script asserts its own physics
# checks (analytic formulas, cross-simulator agreement) and exits
# non-zero on failure. The slow silicon-calibration stages (4x) need
# the measured-data clones and ~15-20 min each; they are run locally.
- name: "Stage 0: DEVSIM toolchain (capacitor vs eps/d)"
run: python 00_smoke/cap1d.py
- name: "Stage 1: from-scratch drift-diffusion solver vs theory"
run: python 01_pn_1d/pn1d.py
- name: "Stage 2: cross-validation vs DEVSIM"
run: python 02_devsim_diode/diode_devsim.py
- name: "Stage 3: MOS capacitor vs analytic VT"
run: python 03_moscap/moscap.py
# Stage 6 needs no measured data: the quantum solver is checked against
# closed-form wells, the Airy function, numerical quadrature, and its own
# classical limit. sky130_cv.py is NOT run here -- it needs the refs/
# clone and ~20 min of eigensolves.
- name: "Stage 6: Schrodinger solver vs Airy zeros + classical limit"
run: python 06_schrodinger/validate_schrodinger.py
- name: "Stage 6: quantum-corrected C-V of the sky130 stack"
run: python 06_schrodinger/sp_moscap.py
- name: "Stage 6: refinement ladder (barrier / XC / oxide charge)"
run: python 06_schrodinger/refinements.py