RTL is not as expressive for algorithms or large structures as most software programming languages.
The concurrency model is that everything executes in lock-step. The programmer keeps all this concurrency in his/her mind.
Users must generate their own, bespoke handshaking and flow control between components.
Higher-level entry forms are ideally needed, perhaps schedulling within a thread at compile-time and between threads at run time ?
Reference algorithms for synthesis and simulation are included in the addtional material on the course web pages. (Non-examinable.)