The digital designer begins the design flow by writing a high-level behavioral description of the circuit. This is normally in a Hardware Description Language, or HDL. HDLs are powerful but dangerous tools. They offer easy to learn, read, and understand syntax. However, this ease is a double-edged sword. Many inexperienced designers resort to using programming practices while writing HDL. HDL is not programming, it is a description of hardware. And good HDL code must always be cognizant of what synthesis results will look like. Fortunately, there are good design and coding practices, which when followed, will yield synthesizable and predictable circuits.