Coroutines are an elegant and efficient way to build a model of (asynchronous, parallel) electronic hardware, so that software that controls the hardware can be developed independently. Further, the existence of the model can help expose problematic aspects of proposed hardware in time to change the design. See e.g. https://www.youtube.com/watch?v=KmLunUoBcQk