Automated Verification and Validation with TofuPilot
Verification and validation (V&V) in hardware is still largely manual: engineers run tests, record results in documents, and someone reviews the evidence. TofuPilot automates the data capture side so engineers can focus on the analysis instead of the paperwork.
V&V in Hardware Development
Verification answers: "Did we build the product right?" (Does it meet its specifications?) Validation answers: "Did we build the right product?" (Does it meet user needs?)
Both require structured test evidence. In regulated industries (medical devices, aerospace, automotive), this evidence must be traceable, timestamped, and immutable.
| Phase | Purpose | Typical tests | Evidence needed |
|---|---|---|---|
| EVT | Engineering validation | Functional, environmental, reliability | Test reports, measurement data |
| DVT | Design verification | Full spec compliance, regulatory | Formal test records, traceability |
| PVT | Production validation | Manufacturing process qualification | Statistical data, Cpk analysis |
| Production | Ongoing verification | In-line test, final test | Per-unit records, yield data |
The Manual V&V Problem
Traditional V&V workflows look like this:
- Engineer writes a test protocol (Word document)
- Technician runs the tests manually or semi-automatically
- Results are recorded in a spreadsheet or paper form
- Engineer reviews results and writes a test report
- Quality reviews and approves the report
- Documents are filed in a QMS
This process is slow, error-prone, and disconnected from the actual test data. The spreadsheet is a copy of the data, not the data itself. If someone transcribes a number wrong, the V&V record is wrong.
Automating V&V with TofuPilot
Step 1: Define Your Verification Test Procedures
Create a procedure in TofuPilot for each verification test in your protocol.
from tofupilot import TofuPilotClient
client = TofuPilotClient()
# EVT thermal cycling test
client.create_run(
procedure_id="EVT-THERMAL-CYCLE",
unit_under_test={
"serial_number": "EVT-PROTO-003",
"part_number": "PRODUCT-V2.1",
},
run_passed=True,
steps=[{
"name": "Post-Cycle Functional Check",
"step_type": "measurement",
"status": True,
"measurements": [
{
"name": "output_voltage",
"value": 5.02,
"unit": "V",
"limit_low": 4.90,
"limit_high": 5.10,
},
{
"name": "output_ripple_mv",
"value": 12.3,
"unit": "mV",
"limit_high": 50.0,
},
{
"name": "efficiency_pct",
"value": 91.2,
"unit": "%",
"limit_low": 88.0,
},
],
}, {
"name": "Thermal Performance",
"step_type": "measurement",
"status": True,
"measurements": [
{
"name": "junction_temp_max",
"value": 82.4,
"unit": "°C",
"limit_high": 105.0,
},
{
"name": "thermal_resistance",
"value": 3.8,
"unit": "°C/W",
"limit_high": 5.0,
},
],
}],
)Step 2: Map Requirements to Measurements
Each measurement in TofuPilot corresponds to a requirement in your spec. Use consistent naming to create a clear mapping.
| Requirement ID | Requirement | TofuPilot Measurement | Limit |
|---|---|---|---|
| REQ-ELEC-001 | Output voltage: 5V +/- 2% | output_voltage | 4.90-5.10 V |
| REQ-ELEC-002 | Ripple: < 50mV | output_ripple_mv | < 50 mV |
| REQ-ELEC-003 | Efficiency: > 88% | efficiency_pct | > 88% |
| REQ-THERM-001 | Junction temp: < 105C | junction_temp_max | < 105 C |
This mapping turns your test data into verification evidence. Every measurement in TofuPilot is a timestamped, immutable record that a requirement was tested.
Step 3: Run Tests Across V&V Phases
Use the same procedures across EVT, DVT, and PVT. TofuPilot stores all results, so you can compare performance across phases.
EVT (3 prototypes): DVT (30 units): PVT (300 units):
├── EVT-THERMAL ├── DVT-THERMAL ├── PVT-THERMAL
├── EVT-VIBRATION ├── DVT-VIBRATION ├── PVT-PROCESS-QUAL
├── EVT-FUNCTIONAL ├── DVT-EMC └── PVT-YIELD-ANALYSIS
└── EVT-RELIABILITY ├── DVT-SAFETY
└── DVT-FUNCTIONAL
Step 4: Generate V&V Evidence
TofuPilot's stored test data serves as your verification evidence:
- Per-unit test records: Every measurement for every unit, with timestamps and pass/fail status
- Statistical summaries: Cpk, mean, standard deviation, distribution across the test population
- Traceability: Link from requirement to test procedure to test result to specific unit
- Trend data: How measurements changed across EVT, DVT, and PVT phases
Traceability for Audits
When an auditor asks "Show me the evidence that REQ-ELEC-001 was verified," you can:
- Open TofuPilot
- Filter by procedure (e.g.,
DVT-FUNCTIONAL) - Show all
output_voltagemeasurements across the DVT population - Show the pass/fail status, limits, and statistical summary
No digging through binders. No searching shared drives. The data is structured, searchable, and timestamped.
Comparing V&V Across Design Revisions
When you make a design change between EVT and DVT, TofuPilot lets you compare the same measurements across phases.
Did the thermal performance improve with the new heatsink design? Compare junction_temp_max distributions between EVT and DVT. The data answers the question objectively.
Continuous Verification in Production
V&V doesn't end at PVT. Every unit tested in production is a data point that verifies the design continues to meet its specifications.
TofuPilot's production dashboards show ongoing verification:
- Are all measurements still within limits?
- Is the process capability (Cpk) maintained?
- Are there any new failure modes that weren't seen during V&V?
If a measurement that was comfortably within limits during DVT starts approaching a limit in production, you know the process or components have changed. Investigate before it becomes a field issue.