Timing is a requirement. Test it like one.
Assert runs your firmware on real hardware inside CI and fails the build when timing regresses: deadlines, jitter, ordering, inversion. Asserted on the trace, not on a simulator's opinion.
No simulation gap.
Tests execute on the actual target, over the actual probe. The timing you assert is the timing your users get, including the flash wait states nobody models.
Assertions on behavior over time.
Beyond pass and fail on return values: periods, deadlines, latencies, ordering constraints, and scheduler pathologies, checked against the captured timeline.
A failed build, not a field report.
Runs on every push. When timing regresses, the build fails and the offending trace is archived next to the diff that caused it.
WHAT A RUN LOOKS LIKE
One suite, every board on the bench. Each cell is a single target built a single way: its OS, its transport, its debug server. When a cell goes red the build goes with it, and that run's trace is kept beside the result.
SPECIFICATIONS
Request beta access.
BKPT Studio and the ViewAlyzer visualizer, in private beta. Bring your own debug probe; ours is still on the bench.