What Is HALT and HASS Testing with TofuPilot
HALT (Highly Accelerated Life Test) pushes a product beyond its design limits to find failure modes early. HASS (Highly Accelerated Stress Screen) applies controlled stress during production to catch latent defects before they reach customers. This guide covers how both methods work, when to use each, and how to track stress test results with TofuPilot.
HALT: Find the Weak Spots
HALT is a design-phase test. You put prototype units in a chamber and ramp temperature and vibration until something breaks. The goal is not to simulate field conditions. The goal is to find the fundamental limits of your design.
A typical HALT profile includes:
| Step | What Happens |
|---|---|
| Cold step stress | Step temperature down in increments until failure |
| Hot step stress | Step temperature up in increments until failure |
| Rapid thermal transitions | Cycle between cold and hot limits at max chamber rate |
| Vibration step stress | Increase random vibration in steps until failure |
| Combined environment | Apply thermal cycling and vibration simultaneously |
Each time a failure occurs, you analyze the root cause, fix it if possible, and continue. HALT is iterative. A single HALT run typically uncovers 3 to 8 distinct failure modes.
HALT Output
| Result | What It Tells You |
|---|---|
| Operating limits | Temperature and vibration where the product stops working but recovers |
| Destruct limits | Where permanent damage occurs |
| Design margin | Gap between operating limits and product specification |
| Failure modes | Ranked list of weaknesses (solder joints, connectors, components) |
HALT runs on 5 to 15 units during EVT or DVT. It's qualitative, not statistical. You're looking for failure modes, not predicting field life.
HASS: Screen Every Production Unit
HASS applies stress levels between the product's specification and the destruct limits found in HALT. It runs on every production unit (or a defined sample) to precipitate latent defects that would cause early field failures.
| Aspect | HALT | HASS |
|---|---|---|
| When | Design phase (EVT/DVT) | Production |
| Sample size | 5-15 units | Every unit or sample |
| Stress level | Beyond spec, until failure | Below destruct limits |
| Goal | Find design weaknesses | Screen manufacturing defects |
| Duration | 1-2 weeks | Minutes to hours per unit |
| Output | Failure modes, design margins | Pass/fail per unit |
HASS stresses are derived from HALT. If HALT found a destruct limit at -60C, a HASS screen might cycle to -40C. The stress is high enough to catch latent defects but low enough to avoid damaging good units.
Proof of Screen (POS)
Before running HASS on production units, you validate the screen itself:
- Run the HASS profile on units known to be good. Verify zero failures.
- Seed units with known defects. Verify the screen catches them.
- Document the detection rate. If the screen misses seeded defects, increase stress.
Prerequisites
- Python 3.10+
- OpenHTF installed (
pip install openhtf) - TofuPilot Python SDK installed (
pip install tofupilot)
Step 1: Define Functional Check Phases
Both HALT and HASS require functional checks between stress cycles. These detect when a unit degrades or fails.
import openhtf as htf
from openhtf.util import units
@htf.measures(
htf.Measurement("output_voltage_V")
.in_range(
minimum=3.0, maximum=3.6,
marginal_minimum=3.1, marginal_maximum=3.5,
)
.with_units(units.VOLT),
htf.Measurement("current_draw_mA")
.in_range(minimum=40, maximum=65)
.with_units(units.MILLIAMPERE),
)
def phase_electrical_check(test):
"""Verify core electrical parameters after stress cycle."""
test.measurements.output_voltage_V = 3.29
test.measurements.current_draw_mA = 51.3
@htf.measures(
htf.Measurement("comms_loopback").equals("PASS"),
)
def phase_comms_check(test):
"""Verify communication interfaces still respond."""
test.measurements.comms_loopback = "PASS"Step 2: Log Each Cycle to TofuPilot
Run the functional check after each stress step. Each execution creates a new test run linked to the same serial number, building a degradation timeline.
from tofupilot.openhtf import TofuPilot
test = htf.Test(
phase_electrical_check,
phase_comms_check,
)
with TofuPilot(test):
test.execute(test_start=lambda: input("Scan unit serial: "))Step 3: Track Degradation in TofuPilot
TofuPilot tracks every run per serial number. Open the unit history to see:
- Measurement trends across stress cycles (voltage drift, current increase)
- Marginal results flagged before hard failures
- Control charts showing when a parameter trends toward a limit
- Failure analysis identifying which stress step causes the most failures
For HASS, the pass/fail result of the production screen feeds directly into yield tracking. TofuPilot shows HASS yield alongside your other production test stages.
When to Use HALT vs HASS vs ESS
| Method | Phase | Stress Level | Sample | Best For |
|---|---|---|---|---|
| HALT | EVT/DVT | Beyond spec | 5-15 units | Finding design weaknesses |
| HASS | Production | Below destruct | Every unit | Screening latent defects |
| ESS | Production | Within spec | Every unit | Precipitating infant mortality |
| ALT | DVT | Above spec | 20-50 units | Predicting field life |
| ORT | Production | Per spec | Periodic sample | Monitoring ongoing reliability |
HALT and HASS work as a pair. HALT defines the design margins. HASS uses those margins to build a production screen. Without HALT data, HASS stress levels are guesswork.