Why You Don’t See a Lot of Verilog or VHDL on This Site

August 31, 2008

I get a lot of emails from readers from all over the world. Many want me to help them with their latest design or problem. This is OK, after all this is what this site is all about – giving tips, tricks and helping other designers making their steps through the complex world of ASIC digital design.

Many ask me for solutions directly in Verilog or VHDL. Although this would be pretty simple to give, I try to make sure NOT to do so. The reason is that it is my personal belief that thinking of a design in terms of Verilog or VHDL directly is a mistake and leads to poorer designs. I am aware that some readers may differ, but I repeatedly saw this kind of thinking leading to bigger, power hungry and faulty designs.

Moreover, I am in the opinion that for design work it is not necessary to know all the ins and outs of VHDL or Verilog (this is different if you do modeling, especially for a mixed signal project).
Eventually we all have to write code, but if you would look at my code you’d see it is extremely simple. For example, I rarely use any “for” statement and strictly try not using arrays.

Another important point on the subject is for you guys who interview people for a new position in your company. Please don’t ask your candidates to write something in VHDL as an interview question. I see and hear about this mistake over and over again. The candidate should know how to think in hardware terms; It is of far lesser importance if he can generate some sophisticated code.
If he/she knows what he is aiming for in hardware terms he/she will be a much better designer than a Verilog or VHDL wiz who doesn’t know what his code will be synthesized into. This is btw a very typical problem for people who come from CS background and go for design.



  1. Well you are absolutely correct in your sentiments. Many people including professors in universities often forget that HDL are meant to describe hardware. Too often people try to turn an HDL flow into that of a computing language.

    The design flow of HDL is extremely important and has tremendous potential. However when doing HDL coding, it is essential to know what hardware your code will synthesize too. Therefore, as you code you should always be thinking at the hardware level.

  2. Greetings Nir,

    I agree! I have interviewed many people who knew all the syntax of a particular HDL, but didn’t have the faintest idea what it means to think in parallel. Even though an HDL looks similar to a general purpose programing language, the power and complexity is due to the parallelism of many tasks/functions/modules/always-blocks/processes/whatever-you-call-them running in parallel. It is way more important to have a firm grasp on this principle than to have memorized the BNF of the language LRM. Writing HDL like C, is a quick and easy recipe for disaster.


  3. Hi ,
    can you please provide a reference book for learning the way of visualization you are suggesting ,i.e the moto should not be just realizing the logic ,rather of thinking about the real HW it will ersult into …I really liked this way …


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: