
|
Legacy of Languages
Culture in Code
Using VHDL or Verilog to design FPGAs is just plain wrong.
Talk with any expert in languages, in logic synthesis, in hardware architecture. If you get past the “but that’s how we do it” layer of defenses, you’ll pretty quickly uncover a vast ocean of oddity that will make you wonder just why anyone ever considered the idea of doing FPGA design with HDLs, let alone how HDL-based design became the de-facto standard.
First, taking VHDL as an example: most of the things you can write in VHDL cannot be synthesized into hardware with any degree of efficiency. In fact, to paraphrase one of my favorite college math professors, if you wrote all the possible VHDL on a big wall, and threw tomatoes at the wall all day long, you’d probably never hit any code that would synthesize well. (This is a variant of what my professor called the “tomato theorem.”) Those of us that successfully write VHDL for synthesis have learned through experience how to step on a select few hidden rocks just under the water’s surface in order to keep our footing through synthesis. Deviate from those rocks, however, and you’re likely to take a dunk in code that won’t synthesize at all or will create hardware that’s impractically inefficient if not completely un-buildable.
Of course, VHDL wasn’t intended for designing hardware. Yes, the D stands for “Description,” but in its original context, that “Description” was more like “Documentation.” VHDL was intended to solve a documentation problem for the US Department of Defense. The advent of application-specific chips had created a daunting documentation problem for both the DoD and its suppliers, and VHDL was developed to address that challenge. Now, ASIC designs could be described in a standard, machine-readable language instead of through piles of ad-hoc paper documentation. [more]
|