mirror of
https://github.com/NawfalMotii79/PLFM_RADAR.git
synced 2026-06-10 23:41:18 +00:00
ci(fpga): PR-M.3 — wire T-6 drift cosim into regression + CI deps
Adds the T-6 independent reference drift cosim (PR-M.1, c30be89) as a
gated regression check so any future hand-edit drift in NCO_SINE_LUT,
fft_twiddle_*.mem, or DOPPLER_WINDOW_COEFF surfaces on every run.
run_regression.sh: new "Independent Reference Drift (T-6)" check after
the RX-B autocorrelation block in Phase 3. Plain `python3` (no path
sniffing). Distinguishes three states from the script's exit code +
markers:
rc=0, PASS markers -> PASS (counts toward `passed`)
rc=2, no markers -> SKIP (counts toward `skipped`)
rc!=0, FAIL markers -> FAIL (gates the regression)
compare_independent.py: detects missing numpy/scipy at startup and exits
with code 2 plus a [SKIP] marker pointing at `uv sync --group dev`.
Without that, an environment without scipy crashed mid-script and the
regression captured a partial 3-of-13 PASS count.
pyproject.toml: scipy>=1.13 added to the dev dependency group (used by
fpga_reference.doppler_window_ideal() for analytical Cheby ground truth).
.github/workflows/ci-tests.yml: fpga-regression now installs Python
3.12, sets up uv, runs `uv sync --group dev`, and activates the
resulting .venv before bash run_regression.sh. Without the activate
line the runner's system python3 (no scipy) would resolve first and
the drift check would [SKIP] in CI.
Verified locally:
with venv: Drift PASS (13 checks), Tests: 43 passed / 0 / 0
no scipy: Drift SKIP (msg points at install cmd), 42p / 0f / 1s
This commit is contained in:
@@ -35,7 +35,28 @@ import math
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
import numpy as np
|
||||
# Required: numpy + scipy. If either is missing, exit code 2 with a [SKIP]
|
||||
# marker so the regression can distinguish missing-deps from real failures
|
||||
# (see run_regression.sh "Independent Reference Drift (T-6)" block).
|
||||
_MISSING = []
|
||||
try:
|
||||
import numpy as np # noqa: F401
|
||||
except ImportError:
|
||||
_MISSING.append("numpy")
|
||||
try:
|
||||
import scipy.signal.windows # noqa: F401
|
||||
except ImportError:
|
||||
_MISSING.append("scipy")
|
||||
if _MISSING:
|
||||
print(
|
||||
" [SKIP] T-6 drift cosim requires Python packages: "
|
||||
f"{', '.join(_MISSING)}.\n"
|
||||
" Install with: uv sync --group dev (from repo root)\n"
|
||||
" or: pip install numpy scipy"
|
||||
)
|
||||
sys.exit(2)
|
||||
|
||||
import numpy as np # re-import to get module binding now that we know it's there
|
||||
|
||||
# Make local imports work when invoked from anywhere
|
||||
THIS_DIR = Path(__file__).resolve().parent
|
||||
|
||||
Reference in New Issue
Block a user