Open-source tools for the complete post-silicon validation pipeline.
Lab Automation · Instrument Control · Silicon Bring-up · Protocol Validation · SerDes · Power & Thermal · Test Sequencing · Triage · Hardware CI/CD · Agentic Workflows
- 💡 Why This Exists
- 🚀 Quick Start
- 🔥 Featured This Month
- 🗺 Workflow Map
- 📂 Tools by Stage
- 📋 Test Planning & Coverage
- 🏭 Lab Infrastructure & Board Farms
- 🔌 Instrument Control & Measurement
- 🚀 Silicon Bring-up & Boot
- 📡 Protocol & Interface Validation
- 📶 SerDes & High-Speed Signal Integrity
- ⚡ Power & Energy Validation
- 🌡️ Thermal & Environmental Stress
▶️ Test Execution & Sequencing- 📊 Results, Triage & Dashboards
- 🔄 CI/CD & Hardware Regression
- 🔍 Platform Diagnostics & Fleet Ops
- 🤖 AI & Agentic Lab Automation
- 🎓 Learning Resources
- 🔌 Stack Integration Cheatsheet
- ⭐ Star History
Most "hardware test" lists stop at oscilloscopes and logic analyzers. Real post-silicon validation is a 12-stage pipeline, and broken toolchains in any stage kill bring-up velocity. This repo covers everything — from test planning to fleet regression — with open-source tools that plug into your existing lab stack or replace proprietary stages entirely.
- 🏭 Full pipeline coverage — planning, lab infra, instruments, bring-up, protocols, SerDes, power, thermal, execution, triage, CI/CD, and agents.
- 🔧 Stack-first integration notes — every tool documents how it connects to OpenTAP, labgrid, PyMeasure, pytest, and SCPI/LXI instruments.
- 🤖 Agent-ready — modern scripting and AI patterns for log triage, report parsing, and lab orchestration.
- 📦 Curated, not dumped — each entry is verified, actively maintained, with a one-line "why use it" note.
- 🆓 100% open source — no vendor lock-in, no paywalls, no telemetry.
Scope: Post-silicon and platform hardware DVT. Pre-silicon RTL verification lives in awesome-open-hardware-verification. PCB design workflows live in awesome-pcb-workflow.
Get a minimal open-source DVT lab stack running in under 5 minutes:
# 1. Instrument control + VISA stack
pip install pymeasure pyvisa pyvisa-py
# 2. Lab board control + pytest integration
pip install labgrid pytest
# 3. Protocol capture and analysis
pip install scapy
# 4. Clone this repo for workflow guides and discovery config
git clone https://github.com/piyushbag/awesome-dvt-automation.git
cd awesome-dvt-automation
pip install -r requirements.txtSee docs/labgrid-pytest-quickstart.md for a full pytest + labgrid bring-up walkthrough.
| Tool | What it does | Stage |
|---|---|---|
| 🏭 labgrid | Python library for remote board-farm control with a pytest plugin for automated DUT tests. | Lab Infra |
| Cross-platform open-source test sequencer with a plugin ecosystem for instruments and result listeners. | Execution | |
| 🐍 PyMeasure | Python instrument drivers for Keysight, Tektronix, R&S, and other SCPI/LXI benches. | Instruments |
| 🔍 ocp-diag-core | Portable OCP diagnostics framework for platform health checks across heterogeneous hardware. | Diagnostics |
| ✅ pytest | De facto Python test runner — pairs with labgrid fixtures and hardware markers for lab CI. | Execution |
📬 Watch this repo to get notified when new tools are added each month.
┌──────────────────────────────────────────────────────────────────────┐
│ POST-SILICON VALIDATION WORKFLOW │
├──────────────────────────────────────────────────────────────────────┤
│ │
│ 📋 Test Planning & Coverage Traceability │
│ │ │
│ ▼ │
│ 🏭 Lab Infrastructure & Board Farms │
│ │ │
│ ▼ │
│ 🔌 Instrument Control & Measurement (SCPI / LXI / VISA) │
│ │ │
│ ▼ │
│ 🚀 Silicon Bring-up & Boot (JTAG, UART, BMC, firmware) │
│ │ │
│ ▼ │
│ 📡 Protocol & Interface Validation (PCIe, Ethernet, I2C, …) │
│ │ │
│ ▼ │
│ 📶 SerDes & High-Speed SI (link training, eye, compliance) │
│ │ │
│ ▼ │
│ ⚡ Power & Energy Validation │
│ │ │
│ ▼ │
│ 🌡️ Thermal & Environmental Stress │
│ │ │
│ ▼ │
│ ▶️ Test Execution & Sequencing (OpenTAP, pytest, OpenHTF) │
│ │ │
│ ▼ │
│ 📊 Results, Triage & Dashboards │
│ │ │
│ ▼ │
│ 🔄 CI/CD & Hardware Regression │
│ │ │
│ ▼ │
│ 🤖 AI & Agentic Lab Automation │
│ │
└──────────────────────────────────────────────────────────────────────┘
Define what to test, trace requirements to execution, and track coverage before silicon hits the bench.
| Tool | Description | Stack Integration | License |
|---|---|---|---|
| 📝 Doorstop | Git-native requirements management — trace test plans to design docs and validation artifacts. | Markdown → CI reports | MIT |
| 🥝 Kiwi TCMS | Open-source test case management with API, plans, runs, and bug tracker integration. | REST API, webhooks | GPL-2.0 |
| 📋 Nitrate | Fedora QA test-plan manager — cases, runs, and automation metadata in a Django web app. | XML-RPC / REST API | GPL-2.0 |
| 📊 texttest | Approval-test framework for capturing and diffing complex CLI and log output across regressions. | CI diff artifacts | LGPL-2.1 |
| 🗂️ Obsidian | Engineering notebook for test plans, bring-up notes, and lab runbooks with versioned vaults. | Git sync | Free |
| 🏗️ Mermaid | Diagram-as-code for validation architecture, state machines, and pipeline flowcharts in docs. | Markdown in repo | MIT |
Coordinate power, serial, JTAG, and remote access across a bench or distributed lab.
| Tool | Description | Stack Integration | License |
|---|---|---|---|
| 🏭 labgrid | Embedded board-control library with coordinator/exporter architecture and pytest plugin. | pytest fixtures, YAML places | LGPL-2.1 |
| 🌋 LAVA | Linaro Automated Validation Architecture — distributed lab scheduling and device management. | REST API, Django UI | GPL-2.0 |
| 🔧 LAVA Dispatcher | Worker daemon that executes LAVA test jobs on lab devices with bootloader and deploy support. | LAVA master API | GPL-2.0 |
| 🐍 PyFixate | Framework for hardware test fixtures — coordinate relays, power, and DUT interfaces in Python. | pytest / standalone | LGPL-3.0 |
| 🧪 labgrid-examples | Reference configs for common board-farm topologies and pytest patterns. | Copy-paste YAML targets | LGPL-2.1 |
| 🔌 usbrelay | Control USB HID relay boards for remote power cycling from scripts or CI runners. | CLI / Python ctypes | GPL-2.0 |
Talk to scopes, analyzers, power supplies, and data-acquisition hardware programmatically.
| Tool | Description | Stack Integration | License |
|---|---|---|---|
| 🐍 PyMeasure | High-level Python instrument drivers with procedures, GUIs, and SCPI abstractions. | OpenTAP plugins, pytest | MIT |
| 📡 PyVISA | Python VISA bindings for GPIB, USB-TMC, LXI, and serial instrument communication. | Backend for PyMeasure | MIT |
| 🔌 pyvisa-py | Pure-Python VISA backend — no NI-VISA install required on Linux lab hosts. | PyVISA @py backend |
MIT |
| 🌐 python-vxi11 | LXI/VXI-11 RPC client for LAN-connected bench instruments without vendor drivers. | Standalone SCPI transport | MIT |
| 🔬 linux-gpib | Kernel driver and userspace library for GPIB/IEEE-488 instrument buses on Linux. | PyVISA GPIB backend | GPL-2.0 |
| 📊 usbtmc | USB Test & Measurement Class driver and utilities for Linux USB-TMC instruments. | PyVISA USB-TMC | MIT |
| 🛠️ lxi-tools | CLI utilities for discovering and querying LXI instruments on the lab network. | SCPI discovery | GPL-3.0 |
| 📈 matplotlib | Plot instrument sweeps, eye diagrams, and pass/fail thresholds in automated reports. | PyMeasure / pytest hooks | PSF |
| 🔢 NumPy | Numerical arrays for captured waveforms, BER curves, and statistical pass/fail analysis. | Foundation for lab scripts | BSD |
Reset, flash, and debug silicon through JTAG, serial consoles, and firmware loaders.
| Tool | Description | Stack Integration | License |
|---|---|---|---|
| 🔌 OpenOCD | Open On-Chip Debugger — JTAG/SWD for CPU, FPGA, and SoC bring-up and boundary-scan access. | labgrid JTAGDriver | GPL-2.0 |
| 🔍 UrJTAG | Universal JTAG boundary-scan tool with BSDL support for interconnect and chain debug. | Standalone CLI | GPL-2.0 |
| 💾 flashrom | Identify, read, write, and verify flash ROM chips on boards during firmware bring-up. | labgrid flash scripts | GPL-2.0 |
| 📱 fastboot | Android-style USB flashing protocol for bootloaders and partition images. | CLI / libfastboot | Apache-2.0 |
| 🐧 barebox | Bootloader with sandbox and hardware targets — labgrid ships BareboxStrategy for auto-boot. | labgrid Strategy | GPL-2.0 |
| 📟 minicom | Serial terminal for interactive console bring-up and scripted expect-style sessions. | labgrid SerialDriver | GPL-2.0 |
| 🔬 pyBSL | Python boundary-scan library for board-level interconnect and chain validation. | Custom pytest | MIT |
| 🛠️ OpenFPGALoader | Program FPGAs and CPLDs over JTAG, SPI, or Cypress USB — useful for prototype silicon bring-up. | CLI in labgrid hooks | Apache-2.0 |
Verify PCIe, Ethernet, I2C, and other interfaces at the system level after silicon integration.
| Tool | Description | Stack Integration | License |
|---|---|---|---|
| 🦅 scapy | Craft, inject, and dissect network packets for L2–L7 protocol validation and fuzzing. | pytest + pcap | GPL-2.0 |
| 🌊 Wireshark | Industry-standard protocol analyzer with dissectors for Ethernet, PCIe TLP (via plugins), and more. | pcap export from tests | GPL-2.0 |
| 📡 iperf3 | Measure TCP/UDP throughput and loss for networking silicon line-rate validation. | pytest subprocess | BSD-3-Clause |
| 🌐 netperf | RFC-style network performance benchmarking — latency, throughput, and burst tests. | Remote client/server | GPL-2.0 |
| ⚡ DPDK testpmd | Poll-mode driver test app for high-speed NIC validation, forwarding, and stats. | Bare-metal / VM DUT | BSD-3-Clause |
| 📦 pktgen-dpdk | High-packet-rate traffic generator for stress-testing network ASICs and switch silicon. | Pairs with DPDK testpmd | GPL-2.0 |
| 🔧 i2c-tools | Userspace utilities for I2C/SMBus bus probing, register peek/poke, and EEPROM access. | Shell / Python smbus2 | GPL-2.0 |
| 🐍 smbus2 | Python SMBus/I2C access for PMIC, sensor, and EEPROM validation on Linux hosts. | pytest on DUT | MIT |
| 💾 spd-tools | Parse and validate DDR SPD EEPROM contents against JEDEC profiles during memory bring-up. | CLI | GPL-2.0 |
| 🔬 nvmemi-cli | NVMe Management Interface CLI for SSD and storage-controller validation over SMBus/I2C. | Platform BMC paths | GPL-2.0 |
Validate high-speed links, eye diagrams, and compliance after silicon integration.
| Tool | Description | Stack Integration | License |
|---|---|---|---|
| 📡 scikit-rf | Python RF/microwave analysis — S-parameters, de-embedding, calibration, and network synthesis. | NumPy + instrument CSV | BSD |
| 🌊 serdes-validation-framework | Open Python framework for PCIe/USB4/Ethernet SerDes validation with pytest and mock modes. | pytest markers hardware |
MIT |
| 📊 sigrok | Open-source logic analyzer stack with 100+ protocol decoders for parallel bus debug. | PulseView GUI, Python bindings | GPL-3.0 |
| 👁️ PulseView | GUI for sigrok — capture and decode high-speed parallel and serial buses on the bench. | sigrok CLI | GPL-3.0 |
Measure rail efficiency, PMIC behavior, and power-state transitions on real silicon.
| Tool | Description | Stack Integration | License |
|---|---|---|---|
| ⚡ powerstat | Sample RAPL and sysfs power counters on Linux for CPU and platform energy measurements. | Shell / cron in regression | GPL-3.0 |
| 🔋 powertop | Identify software wakeups and C-state residency — useful for power-debug during validation. | DUT Linux host | GPL-2.0 |
| 📊 turbostat | Intel turbostat for package power, frequency, and thermal telemetry on x86 DUTs. | Kernel tools on DUT | GPL-2.0 |
| 🐍 pyRAPL | Python bindings for Intel RAPL energy counters — scriptable power sweeps in pytest. | pytest on Linux DUT | MIT |
Burn-in, thermal throttling validation, and environmental stress beyond nominal conditions.
| Tool | Description | Stack Integration | License |
|---|---|---|---|
| 🔥 stress-ng | Stress CPU, memory, I/O, and cache subsystems to provoke thermal and reliability failures. | pytest subprocess on DUT | GPL-2.0 |
| 🌡️ lm-sensors | Hardware monitoring sensors for temperature, voltage, and fan speeds on Linux platforms. | sysfs + labgrid polling | GPL-2.0 |
| 💾 memtester | Userspace memory stress tester for DRAM margin and thermal soak campaigns. | Long-run soak jobs | GPL-2.0 |
| 💿 fio | Flexible I/O tester for storage and memory bandwidth stress under thermal load. | pytest + JSON output | GPL-2.0 |
Orchestrate multi-step validation campaigns with pass/fail gates and structured results.
| Tool | Description | Stack Integration | License |
|---|---|---|---|
| Open-source cross-platform test sequencer with plugin model for instruments and listeners. | .NET + Python plugins | MPL-2.0 | |
| ✅ pytest | Python test framework with fixtures, markers, and plugins — the lab automation lingua franca. | labgrid plugin | MIT |
| 🏭 OpenHTF | Google's hardware test framework — phases, measurements, plugs, and station dashboards. | gRPC / web frontend | Apache-2.0 |
| 🤖 Robot Framework | Keyword-driven acceptance-test framework used in production and R&D hardware stations. | Python / Java libraries | Apache-2.0 |
| 🔬 HardPy | pytest-based test bench runner with browser UI and database-backed result storage. | Web dashboard | MIT |
| 📦 mats | Manufacturing-oriented test environment for structured station tests and operator workflows. | Station PCs | MIT |
| 🔧 crappy | Command and Real-time Acquisition in Parallelized Python — parallel hardware test orchestration. | Multi-instrument sweeps | GPL-3.0 |
| 🧪 tox | Multi-environment test orchestrator — matrix Python versions against shared lab fixtures. | CI matrix | MIT |
Capture, search, and visualize validation output — the difference between data and decisions.
| Tool | Description | Stack Integration | License |
|---|---|---|---|
| 📈 Grafana | Dashboard and alerting for time-series lab metrics — power, temp, throughput, error rates. | InfluxDB / Prometheus | AGPL-3.0 |
| 📊 InfluxDB | Time-series database for high-cardinality instrument and DUT telemetry during test runs. | Grafana, OpenTAP listeners | MIT |
| 🔍 OpenSearch | Search and analytics engine for log triage across large validation campaigns. | ELK-style pipelines | Apache-2.0 |
| 📋 Allure | Rich HTML test reports from pytest/JUnit output — attachments, history, and failure trends. | pytest --alluredir | Apache-2.0 |
| 🎯 ReportPortal | AI-assisted test-report aggregation with defect clustering and historical analysis. | pytest / Robot adapters | Apache-2.0 |
| 📦 junitparser | Parse and merge JUnit XML from distributed lab runners into unified CI artifacts. | CI aggregation | Apache-2.0 |
Run validation on every firmware build — self-hosted runners, artifacts, and gating.
| Tool | Description | Stack Integration | License |
|---|---|---|---|
| ⚙️ GitHub Actions | Self-hosted runners on lab VLANs execute pytest/labgrid jobs against physical DUTs. | Hardware runner labels | MIT |
| 🔧 Buildbot | Continuous integration framework with custom workers — common in long-running hardware labs. | Lab worker agents | GPL-2.0 |
| 🌿 Zuul | Gating CI for multi-repo firmware + validation pipelines with speculative merge testing. | OpenStack / kernel labs | Apache-2.0 |
| 📦 artifacts | Store waveforms, logs, and junit XML from hardware jobs as versioned CI artifacts. | GitHub Actions | MIT |
| 🐳 act | Run GitHub Actions locally — dry-run lab workflows before pushing to self-hosted runners. | Local dev | MIT |
Health checks, BMC telemetry, and fleet-wide diagnostics for production-like validation.
| Tool | Description | Stack Integration | License |
|---|---|---|---|
| 🔍 ocp-diag-core | Standardized OCP diagnostic routines for CPUs, memory, storage, and NICs. | JSON output → dashboards | Apache-2.0 |
| 🛠️ ipmitool | Out-of-band power, sensor, and SEL access for server-class DVT platforms. | BMC scripts | BSD-3-Clause |
| 📋 dmidecode | Decode SMBIOS/DMI tables — verify BOM, DIMM layout, and board identity in regression. | DUT shell | GPL-2.0 |
| 🔬 lshw | Detailed hardware inventory report — buses, NUMA, and device tree for bring-up sanity checks. | JSON output (-json) |
GPL-2.0 |
| 🌐 Redfish | RESTful BMC API for thermal, power, and firmware inventory on modern platforms. | Out-of-band validation | BSD-3-Clause |
| 📡 ethtool | Query and configure Ethernet NIC registers, link modes, and statistics. | Network DVT scripts | GPL-2.0 |
Let agents and LLMs handle log triage, report parsing, and orchestration — not replace instruments.
| Tool | Description | Stack Integration | License |
|---|---|---|---|
| 🤖 LangChain | Compose LLM chains for parsing unstructured lab logs and suggesting failure buckets. | pytest log hooks | MIT |
| 📓 Jupyter | Interactive notebooks for exploratory validation analysis and waveform post-processing. | PyMeasure / NumPy | BSD |
| 🔧 pydantic-ai | Structured LLM outputs for extracting measurements and pass/fail fields from report PDFs. | Triage pipelines | MIT |
| 📊 pandas | Tabular analysis of CSV instrument exports, BOM correlation, and regression diffs. | Report generation | BSD |
| 🐍 pytest-regressions | Data regression testing for numerical instrument captures across firmware builds. | Golden-file workflows | MIT |
| Resource | Description |
|---|---|
| 📏 OCP Specifications | Open Compute platform specs — diagnostics, thermal, and mechanical validation baselines. |
| 📡 PCI-SIG | PCIe compliance and electrical specifications for post-silicon link validation. |
| 🔬 Wilson Research Group | Industry surveys on verification and validation methodology — context for tool gaps. |
| Resource | Description |
|---|---|
| 💬 r/embedded | Bring-up, lab automation, and embedded validation Q&A. |
| 🌐 EEVblog Forum | Veteran EE community — bench instruments, test fixtures, and debug. |
| 📖 OpenTAP Documentation | Official guides for building instrument plugins and result listeners. |
| 🏭 labgrid Read the Docs | Board-farm setup, strategies, and pytest integration tutorials. |
| 📋 Pre-silicon verification list | Companion list for RTL/HDL verification before tape-out. |
| 🖥 PCB workflow list | Companion list for board-level design through fabrication and test. |
Quick reference for plugging common lab stacks into the open-source ecosystem:
OpenTAP sequencer ──(TestStep plugins)──────▶ PyMeasure / SCPI instruments
pytest runner ──(labgrid fixtures)───────▶ Remote board farm / power control
PyVISA / LXI ──(SCPI strings)───────────▶ Scopes, analyzers, supplies
labgrid Strategy ──(boot state machine)─────▶ U-Boot / barebox / Linux shell
ocp-diag-core ──(JSON results)───────────▶ Grafana / OpenSearch dashboards
OpenHTF phases ──(measurements + plugs)───▶ Station UI + cloud upload
GitHub Actions ──(self-hosted runner)─────▶ pytest on lab VLAN DUTs
| Enterprise Pattern | Open-Source Equivalent | Integration Guide |
|---|---|---|
| TestStand / LabVIEW | OpenTAP + PyMeasure | docs/opentap-integration.md |
| Custom board farm | labgrid + pytest | docs/labgrid-pytest-quickstart.md |
| SCPI instruments | PyVISA + PyMeasure | docs/scpi-instrument-patterns.md |
| Manual regression | GitHub Actions self-hosted | docs/git-for-hardware-labs.md |
Full integration guides →
docs/
Star the repo to get notified when new tools are added, and to help other validation engineers find this resource.