HDL Overview

General Overview

 * Hardware Description Languages (HDLs) are a way of formally expressing the composition of logic circuits.
 * I prefer not to use the term "program" for a given instance of HDL. A better terminology is "module."
 * While HDL often bares a resemblance to a software program, thinking of it through that lens is wrought with peril.
 * The key thing thing that distinguishes FPGA programming from computer programming is parallelism
 * All the assignments that you make in an FPGA module happen at the same time and do so continuously
 * There are constructs that can lead to inherent non-determinism if one is not mindful of this
 * It's also easy to fool yourself into thinking the order you express yourself in the module is relevant to the module's operation. It is not, except in a declarative sense.