Open source / v0.1.1

Check waveforms against your limits.

Map signals from a waveform CSV, set voltage and timing limits in YAML, then run the checks. Each requirement returns PASS, FAIL or INDETERMINATE with the measured value and margin.

Python 3.11+ · MIT · CSV input · YAML requirements

Choose the signals and the checks.

Commercial power-analysis tools cover much broader measurement workflows. PowerContract is deliberately smaller: it checks saved waveform data against requirements you can review, version and run again, without tying the contract to one instrument's software.

A YAML contract maps columns to signal names and defines threshold crossings, optional stability periods, voltage limits, delays, and rise or fall times. You decide which limits apply and when to measure them.

Voltage checks can cover the full capture or a window between two events. Each requirement can include measurement uncertainty and a reference to its source. If a required event is missing or an uncertainty interval crosses a limit, PowerContract reports INDETERMINATE.

Reuse the contract for later captures with the same signal mapping. Ordinary multichannel CSV files and several documented oscilloscope export formats are supported. See the input formats for parser coverage and its testing limits.

Project write-up ↗ · Engineering note: checking power-up timing against a datasheet ↗

Run a check on saved waveform data.

Install with python -m pip install powercontract. Then run powercontract check capture.csv power.yaml --json report.json.