But instead of running the firmware on the controller, it will be executed
on the development machine (that is, a standard x86 architecture),
allowing for much faster test execution, without requiring the target
hardware. For this to work, all the hardware-dependent parts of the
firmware code need to be replaced by Python code simulating the hardware
functionality, so that all the firmware above this hardware abstraction
layer can be executed unmodified.