Could someone give a hint, in plain english, what it means to debug an HDL program?

Debugging is understandable as far as it concerns software but at this low level what does debugging means?

  • 1
  • 2
    HDL stands for hardware description language (HDL) and is a specialized computer language used to describe the structure and behavior of electronic circuits, and most commonly, digital logic circuits. This counts as software in my book so I would not say it is hardware debugging. – Paulo Scardine Feb 25 '19 at 22:41
  • 3
    Debugging is, generally speaking, trying to find what causes an error. Even when you're trying to find out why your car won't start, or when the bread didn't rise according to the recipe, you're still, technically, debugging :-) Same with hardware debugging -- you try to understand what causes the hardware to not function as you expect it. – ACEG Feb 26 '19 at 8:09
  • 1
    Debugging is understandable as far as it concerns software- The term "bug" came from hardware, though: en.wikipedia.org/wiki/Software_bug#/media/File:H96566k.jpg – 8bittree Feb 26 '19 at 17:52
  • Debugging usually starts because the designer had poor specs to ensure the design results met the requirements. I once worked a brilliant Engineer who designed an automated motherboard self test in 2 days and it worked first time. He went on to become a Rabbi. With all the HW loop-back and analog sensing and coding in the uC – Tony Stewart Sunnyskyguy EE75 Mar 1 '19 at 18:35

Debugging HDL normally has 2 major steps after just looking at the code.

Analysing the logic: this is normally done but simulating the behaviour of the hardware and the usual software process kicks in, but its abit more convoluted.

Analysing the behaviour on an real system, which sometimes differs due to timing etc: this is not easy and usually involves blinking LEDs and swearing.

  • +1 for “and swearing” – Dave M Feb 28 '19 at 14:43

Well it’s pretty much the same, but you look for values in registers and signals instead of plain variables.

  • 2
    write more about this if you have time – veronika Feb 26 '19 at 8:09

For debugging, use a HDL simulator. Modern HDL simulators have full-featured GUIs,  complete with a suite of debug tools. See wikipedia list of HDL simulators for some examples.


HDL debugging used to mean to me, that the Design or Test Engineer would write a TestBench code to create vector inputs (matrix of logical inputs) to test all output vectors against the design spec* to try all variations of inputs and check the expected output vs the model and "the spec*" after the design was completed.

The discrepancies in the validation of the timing or functional logic were part of the debug process. Often this process was part of a larger process called Design Verification Testing or DVT for product testing that included environmental limits and supply/component tolerances.

Normally Design includes DFT and DFM so fault detection, reporting and correction are included with metrics on fault coverage for in-circuit and/or self-test.

In so far as automated GUI simulation can be done, one still has to define the "hierarchical input process output" specs* or HIPO as IBM used to call it for any design. This would start as a high level description. That is part of the Design Spec.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.