RTL is not as expressive for algorithms or data 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.
Verilog and VHDL do not express when a register is live with data - hence automatic refactoring and certain correctness proofs are impossible.
For programmers wanting conventional software paradigms, High-Level Synthesis (HLS) should be applide to the high-level program to produce RTL.
58: (C) 2008-18, DJ Greaves, University of Cambridge, Computer Laboratory. | ![]() |