There are two primary, high-level entry styles we can consider (in practice use a blend of them ?):
There are also purely generative approaches, like Lava, that just 'print out' a circuit diagram. These cannot handle data-dependent IF statements. »Lava Compiler (Singh)
Using a parallel set of guarded atomic actions is pure RTL: which is declarative (since no threads).
(The core of Bluespec RTL is declarative, but much nicer to use than pure RTL and it has a scheduler and a behavioural-sub language and an advanced generative elaborator that is a functional language.)
All higher-level styles are amenabale to automatic datapath and schedule generation, including re-encoding and re-pipelining to meet timing closure and power budgets.
|6: (C) 2008-13, DJ Greaves, University of Cambridge, Computer Laboratory.|