HardLabs
Board simulator

Simulate whole PCBs
with firmware-in-the-loop

Upload the schematic/netlist, BOM and firmware. HardLabs builds a simulator of your board and runs the real firmware against it.

Atmos G4
Ready

Design files

  • NETatmos.netKiCad netlist
  • BOMatmos-bom.csvBill of materials
  • ELFatmos_fw.elfFirmware · 412 KB

Board model

I²C1SPI1SPI2SPI3STM32G474Cortex-M4 · 170 MHzU1DPS368BarometerICM-42688-P6-axis IMUBMP280Pressure + tempW25N01GV1 Gbit NAND
Simulation logUART2
Waiting for design files…
Pressure
—hPa
Temperature
—°C
  1. Read design
  2. Build board model
  3. Attach part models
  4. Run firmware
Built by hardware and software engineers fromNVIDIABloombergAmazonStitch Fix

How it works

See it work on our demo board

Start the board, plug in USB-C, drop it, heat it and talk to its firmware. From your terminal with GDB attached, in the browser, or through your AI agent.

~/demo-board · hardlabs CLI
demo board

What bugs does this find?

Catch an I²C timing violation in software

Replay the bus trace, inspect timing margins, and fail the firmware run when SCL violates the peripheral's contract.

Atmos G4checks · atmos_fw.elf
1 failed · 3 passed
I²C1SPI1SPI2SPI3STM32G474Cortex-M4 · 170 MHzrunning atmos_fw.elfDPS368BarometerICM-42688-P6-axis IMUBMP280Pressure + tempW25N01GV1 Gbit NANDSCL high time too short0.42 µs < 0.60 µs Fast-mode
I²C1 · SCL / SDAfail
  • SPI1ICM-42688-P WHO_AM_I0x47
  • SPI2BMP280 chip id0x58
  • I²C1DPS368 SCL t_HIGH0.42 µs
  • SPI3W25N01GV JEDEC idEF AA 21
at drivers/i2c.c:118 · pc 0x0800_1A4C
I²C clock stretchSCL t_HIGH 0.42µs < 0.60µs Fast-mode.

From design-partner boards

What it found on real boards

Three boards from our pilot program, names withheld. Each team's own firmware ran unchanged on its simulated board.

Agricultural sensor node

  • Firmware

    Plugging in a charger releases the charger's hold. The firmware restores it only on its next 2 s check, so charging can run for up to 2 s while the firmware reports it held. It explained the stop message the team saw after every plug-in on the bench.

  • Hardware

    The resistor dividers on both audio amplifiers' mode pins select a left+right mix, not left and right. A left-channel tone plays on both speakers at half volume.

  • Firmware

    The GNSS receiver's power enable is held low and no command raises it, so position reads come back empty on the real board.

Medical wearable

  • Firmware

    No log output from default builds. In the Makefile line “DEBUG ?= 1 # …”, make keeps the spaces before the comment, so the debug check never matched and logging was compiled out.

  • Design files

    The netlist and the BOM disagree on two parts: the IMU variant and the flash size (256 vs 512 Mbit).

Aerospace motor controller

  • Hardware

    As drawn, the motor driver's data-out pin never reaches the MCU, so driver register readback can't work on this revision.

  • Firmware

    A new microstep setting isn't written to the motor driver while the axis is holding. The driver keeps the old one.

  • Design files

    The encoder part number in the schematic doesn't exist. The connector pinout and the firmware's 16-bit reads match the SSI variant.

Headless in CI

From schematic to CI

Regression-test firmware against the simulated board on every commit.

hardlabs/atmos-firmware #142
i2c: tighten SCL high time
  • boot sequencequeued
  • spi1 WHO_AM_Iqueued
  • i2c1 SCL t_HIGHqueued
  • spi3 chip idqueued

Design-partner program

Send us your design. We'll send you a simulator.

Send schematic, netlist, BOM and firmware. We build a working board simulator you can run, debug and put in CI.

You send
  • schematic / netlist
  • BOM
  • firmware image
We send back
  • working board simulator
  • peripheral models
  • setup that runs your firmware
  • CI integration (pilot scope)

FAQ

Questions engineers ask first.

Schematic/netlist, BOM, and firmware (ELF/bin or source + toolchain). Cadence, Altium, and KiCad exports work at launch. You write no models.