FR

In-house Python toolchains for
power and analog electronics analysis.

Reference documentation for the analytical pipelines used on every ADEV project. Written for engineers reviewing or specifying our deliverables.

WCA, Worst-Case Analysis

WCA computes how an electronic function drifts under the combined effects of manufacturing tolerance, temperature, ageing and radiation. The user describes this function as the analytical equations linking its components, and the tool propagates the variability through to every monitored output, returning Begin-of-Life and End-of-Life margins as PPM rejection rates with explicit confidence intervals.

The whole pipeline runs locally on the engineer's workstation. Nothing is sent over the internet, and no data ever leaves the machine.

1 Method

At each Monte Carlo iteration, every component value is drawn from its statistical distribution and propagated through the user-supplied transfer function. After N draws (default 10⁶), the resulting population of output values is compared against the acceptance interval, and the rejection rate is reported together with its statistical confidence interval.

WORKFLOW, 5 STEPS From component database to archived run. Passive parts (R, C, L) are derived automatically from your BOM; only active devices require a manual database entry.
// 01

Update component database

actives only, passives auto

// 02

Import BOM

KiCad · Altium · CSV · …

// 03

Define your system equations

Define your equations in Python functions

// 04

Set run parameters

samples · laws · plots

// 05

Run & auto-archive

CSV · plots

1.1, Sampling distributions

Component models follow datasheet conventions and typical practice in space and defense electronics:

ComponentVariableDefault distribution
ResistorRUniform on ±tol (BOL); +TC·ΔT and +drift (EOL)
Capacitor, X7R / X7SCUniform on ±tol; multiplicative DC-bias derating curve; thermal coefficient; aging shift
Capacitor, Tantalum polymerC, ESRUniform ±tol on C; ESR drift law from manufacturer datasheet
InductorL, DCRUniform ±tol; saturation curve from manufacturer datasheet
Op-ampVos, Ib, GBW, SRGaussian truncated to ±3σ on each parameter
Voltage referenceVref, TCGaussian on Vref; uniform on TC
DiodeVF, ISShockley model with temperature-dependent saturation current

1.2, Confidence interval on rejection rate

Rejection rate is reported with a Clopper-Pearson exact 95% confidence interval. For an observed count of k rejections out of N samples:

p_lo = Beta⁻¹(α/2; k, N − k + 1)
p_hi = Beta⁻¹(1 − α/2; k + 1, N − k)

with α = 0.05. Both bounds are reported in the verdict CSV. The exact form is preferred over the normal approximation because the rejection rate is typically below 1000 PPM, where the Gaussian approximation diverges.

1.3, Extreme quantile estimation (Wilks)

For non-parametric estimation of extreme quantiles without assuming a distribution shape, the framework supports Wilks order statistics. For a target quantile p covered with confidence γ, using the r-th order statistic X(N−r+1) as estimator, the coverage condition is exact:

P( X_(N−r+1) ≥ F⁻¹(p) ) = 1 − I_p(N − r + 1, r) ≥ γ

where Ip(a, b) is the regularized incomplete Beta function (scipy.stats.beta.cdf). Minimum sample size Nmin is solved numerically. Typical values used by the toolchain:

Order rp = 99.73% (≈ ±3σ)p = 99.9%p = 99.99%
r = 1 (max only)N ≥ 1 109N ≥ 2 994N ≥ 29 956
r = 2N ≥ 1 572N ≥ 4 045N ≥ 39 994
r = 3N ≥ 1 988N ≥ 5 020N ≥ 49 419

All values for confidence γ = 95%. Higher r trades sample size for robustness against an isolated extreme draw. Default Monte Carlo runs (10⁶) cover all combinations comfortably.

1.4, Sensitivity ranking

Per-component sensitivity combines a local partial derivative around the nominal point with the Spearman rank correlation ρ between sampled inputs and the chosen output. The ranked result is plotted as a sorted horizontal bar chart. In practice, a small subset of the BOM accounts for more than 80% of the spread, and that is exactly where the next design iteration should focus.

1.5, BOL → EOL drift coverage

Each component is sampled across its full drift envelope, from Begin-of-Life to End-of-Life. On top of the manufacturing tolerance, the following contributions are stacked:

Drift contributionModeled asTypical scale
Manufacturing toleranceUniform on ±tol (datasheet)0.1–10% depending on grade
Temperature driftTC × ΔT, additive−40°C to +125°C junction
DC-bias derating (X7R / X7S)Multiplicative curve, manufacturer datasheetup to −60% at rated voltage
AgingLogarithmic decay (datasheet)over mission profile (5–18 years)
Radiation (TID)Lot-tested coefficient, additive0 / 25 / 50 krad trajectory

Radiation drift is fed from actual TID test results when available; otherwise default coefficients from the component database are used and flagged explicitly in the report.

2 Inputs

2.1, Run configuration

Each WCA run is configured through a small set of top-level constants. Component definitions and transfer functions are declared in native Python alongside this configuration:

# ─── Run configuration ─────────────────────────────────────
PPM_THRESHOLD     = 100         # OK/NOK verdict cutoff (PPM)
N_SAMPLES         = 1_000_000   # Monte Carlo sample size
CONFIDENCE_LEVEL  = 0.95        # Clopper-Pearson CI on PPM
WILKS_QUANTILE    = 0.9973      # Wilks target quantile (≈ ±3σ)
WILKS_CONFIDENCE  = 0.95        # Wilks coverage probability
TEMPERATURE_RANGE = (-40, +125) # °C, junction

2.2, Component database

Active components (regulators, op-amps, references, transistors, GaN) are declared in a maintained internal database with all their drift contributions per ECSS-Q-ST-30-11C class. Passive components (resistors, ceramic / tantalum capacitors, inductors) are derived automatically from the BOM, with default drift envelopes pulled from the manufacturer datasheet (TC, DC-bias, aging, TID).

2.3, Optional simulation hooks

For circuits where the transfer function is too complex to write analytically, WCA can call out to an external simulator on each Monte Carlo run:

  • Commercial SPICE engines, via batch-mode .cir netlist substitution; results parsed from .csv output.
  • LTspice, via .raw binary parser (ltspice Python package).
  • Python-only, closed-form expressions evaluated directly with vectorized numpy operations (~10⁷ samples in seconds).

3 Outputs

Every run produces a deterministic, archivable set of artefacts:

FileFormatContent
verdict.csv UTF-8 CSV Per-output rejection rate with Clopper-Pearson 95% CI; OK / NOK verdict against the configured PPM threshold
distrib_*.png PNG Histogram of sampled output values with acceptance bounds overlaid; Wilks bins if requested
sensitivity_*.png PNG Horizontal bar chart of each component's contribution to the output variance, sorted by absolute value
config.archive.json JSON Full input configuration and seed values for bit-exact reproducibility
report.docx Word ECSS-formatted report with embedded figures, tables, methodology and version stamp

All figures follow ECSS chart conventions: labelled axes with units, boxed legend, no chartjunk.

3.1, Sample figures

Three figures produced by every run, illustrating the verdict table, the sensitivity decomposition and the output distribution overlay.

WCA results table, Typ, Init min/max, BOL min/max, EOL min/max, Spec limits, Risk in PPM, OK/NOK status.
FIG. 1, Verdict table For each output parameter: typical value, initial spread, BOL spread, EOL spread, specification limits, statistical PPM risk, and a binary OK / NOK status. The single most-consulted figure during qualification reviews.
WCA EWC sensitivity analysis, pie charts showing the dominant component contributors to the worst-case min and max bounds at BOL.
FIG. 2, Sensitivity decomposition Per-component contribution to each worst-case bound. Identifies the dominant drift drivers at a glance, typically a small subset of the BOM accounts for > 80% of the spread.
Output probability distribution overlay across mission phases, Init (initial state), BOL (begin of life, max temperature, full load), EOL (end of life with ageing and radiation), with specification limits drawn.
FIG. 3, Distribution overlay Sampled output distribution across mission phases (Init / BOL / EOL) with specification limits overlaid. PPM risk reads directly from the tail mass beyond each limit.

3.2, Reproducibility

Every run archives its random seed, numpy version, and component datasheet revision. Re-running with the archive file produces bit-exact results, even years later, even on a different machine.

4 Standards

StandardScopeImplementation in WCA
ECSS-Q-ST-30-11C Rev. 2 Component derating Per-component derating limits enforced as upper bounds on stress; verdict flags any sample exceeding limits
ECSS-Q-ST-60C Rev. 3 EEE component selection Used for class assignment and EOL drift assumptions per quality level
ESCC-25500 Diode characterization for space Shockley model parameters extracted from ESCC-compliant datasheets
MIL-HDBK-217F Reliability prediction (informative) Optional, failure-rate cross-check on critical components
IPC-2221 PCB design rules (informative) Used as input bound when WCA is run jointly with thermal models

4.1, Class mapping

Component derating limits are loaded from a class-indexed table (Class 1 / Class 2 / Class 3 per ECSS-Q-ST-60C). The class is set per run; switching from Class 3 (deep-space) to Class 1 (terrestrial) only requires changing one configuration field, the toolchain re-runs unchanged.

5 Limitations

WCA is an analytical tool. It complements physical characterization but does not replace it. Honest limitations:

  • Distribution assumptions. Default distributions, uniform on tolerance and truncated Gaussian on op-amp parameters, reflect typical practice but are not verified for any specific production lot. Lot-specific characterisation is recommended for Class 1 missions.
  • Component coupling. Components are sampled independently by default. Correlated drift, for example a matched resistor pair on the same die, has to be modelled explicitly via shared random variables. The framework supports this, but the coupling has to be declared manually.
  • Sample size vs computation time. 10⁶ runs are typical; 10⁷ has been tested and takes about 2 minutes per Monte Carlo on a standard workstation. Below 10⁵ runs, the Clopper-Pearson interval widens noticeably, and PPM verdicts become unreliable.
  • Simulator coupling overhead. When an external SPICE simulator is invoked at each Monte Carlo iteration, throughput drops to about 1 000 runs per minute. For runs above 10⁵, batch substitution is required.

Need this analytical depth
on your next project?

Every WCA and PSA we deliver runs through this exact toolchain, bundled into the Design Justification Document we hand over with the hardware.