Skip to content

Introduction to Sim86

Run real firmware in simulation, with hardware fidelity at the center of how we build and test our models.

Simulator86 (Sim86 for short) runs your compiled firmware on simulated controllers and components. The goal is simple: help you understand how your software will behave before you deploy it to physical devices.

For that to be useful, the simulation has to behave like the hardware you’re building for. Hardware fidelity is central to how we build Sim86. A test is only useful if you can trust what it tells you.

Firmware depends on more than getting the right answer. It depends on when a signal arrives, how a peripheral responds, and what happens when something goes wrong. Those details matter when devices need to communicate or recover from a failed update.

We run our simulation models on FPGA- and GPU-accelerated hardware. We also maintain physical hardware farms to test our models against actual devices. Acceleration helps us run simulations; comparisons with physical boards tell us how closely they match.

We look at both behavior and timing. Does the firmware produce the same signals? Do they happen in the same order? How much does their timing differ? When we find a mismatch, it gives us something concrete to investigate and improve.

You can see that approach in our hardware benchmarks, including the firmware, measurements, and differences we found. Each result says what was tested, so you can judge whether it applies to your own system.

Test the situations that matter to your product

Section titled “Test the situations that matter to your product”

A successful boot is a starting point. You also need to know what happens when devices lose contact, an update is interrupted, or a component responds differently than expected.

Sim86 lets you run firmware across communicating devices, inspect their behavior, and use fault injection to explore failure cases. You can repeat tests as your firmware changes and bring those checks into your development workflow.

The aim is to spend less time arranging boards and repeating manual tests, and more time finding problems before they reach your users. Physical testing remains part of that process, helping you check the behavior your product depends on.

Follow Getting Started to build a circuit and load your firmware, or open a working example. Use the TypeScript SDK to build your own dashboard or integrate simulation into a web application.

For automated testing with pytest, we recommend the CLI. It is currently available to a closed group of users; book a call to request access.

Need a specific controller or component? Talk to us. We add controllers on demand, free of charge for our users when you ship us a development board.

Docs
Open dashboard ↗