Questions tagged [hdl]

HDL is a Hardware Description Language, a language used to design chips. The two major ones are Verilog and VHDL.

Taken from G.J. Lipovsky, "Hardware Description Languages: Voices from the Tower of Babel", Computer, Vol. 10, No. 6, June 1977, pp. 14-17. Paper available here.

A hardware description language can be used to describe the logic gates, the sequential machines, and the functional modules, along with their interconnection and their control, in a digital system. In a general sense, Boolean equations, logic diagrams, programrning languages, and Petri nets are hardware description languages: they can be used to describe some aspect of hardware and they have definable syntax and semantics. Specifically, what is more commonly referred to as a hardware description language is a variation of a programming language tuned to the overall needs of describing hardware.

Adapted from Hardware Description Language tutorial with very few modifications:

Hardware description language (HDL) is a specialized computer language used to program electronic and digital logic circuits. The structure, operation and design of the circuits are programmable using HDL. HDL includes a textual description consisting of operators, expressions, statements, inputs and outputs. Instead of generating a computer executable file, the HDL compilers provide a gate map. The gate map obtained is then downloaded to the programming device to check the operations of the desired circuit. The language helps to describe any digital circuit in the form of structural, behavioral and gate level and it is found to be an excellent programming language for FPGAs, CPLDs and ASICs.

The three common HDLs are Verilog, VHDL, and SystemC. Of these, SystemC is the newest. The HDLs will allow fast design and better verification. In most of the industries, Verilog and VHDL are common. Verilog, one of the main Hardware Description Language standardized as IEEE 1364 is used for designing all types of circuits. It consists of modules and the language allows Behavioral, Dataflow and Structural Description. VHDL (Very High Speed Integrated Circuit Hardware Description Language) is standardized by IEEE 1164. The design is composed of entities consisting of multiple architectures. SystemC is a language that consist a set of C++ classes and macros. It allows electronic system level and transaction modeling.

Need for HDLs

The Moore’s Law in the year 1970 has brought a drastic change in the field of IC technology. This change has made the developers to bring out complex digital and electronic circuits. But the problem was the absence of a better programming language allowing hardware and software codesign. Complex digital circuit designs require more time for development, synthesis, simulation and debugging. The arrival of HDLs has helped to solve this problem by allowing each module to be worked by a separate team.

All the goals like power, throughput, latency (delay), test coverage, functionality and area consumption required for a design can be known by using HDL. As a result, the designer can make the necessary engineering tradeoffs and can develop the design in a better and efficient way. Simple syntax, expressions, statements, concurrent and sequential programming is also necessary while describing the electronics circuits. All these features can be obtained by using a hardware description language. Now while comparing HDL and C languages, the major difference is that HDL provides the timing information of a design.

Benefits of HDL

The major benefit of the language is fast design and better verification. The Top-down design and hierarchical design method allows the design time; design cost and design errors to be reduced. Another major advantage is related to complex designs, which can be managed and verified easily. HDL provides the timing information and allows the design to be described in gate level and register transfer level. Reusability of resources is one of the other advantage.

See also:

906 questions
-1
votes
1 answer

Module produces correct output alone but not when instantiated

Ive made a simple ticker module that produces a rick every time the counter reaches 163. Here is the code for it: module baud_gen( input clock, input reset, output tick ); reg [7:0] count; always @ (posedge clock) begin …
StuckInPhDNoMore
  • 2,507
  • 4
  • 41
  • 73
-1
votes
1 answer

Verilog : Use of 'PARAMETER during instantiation

I am trying to understand a piece of Verilog code as below: module_name instance_name ( ..... .signal1(signal1_local['SIGNAL_WIDTH - 1 : 0]), .... ); I am not able to understand the 'SIGNAL_WIDTH , why is the apostrophe (') used here? Can anyone…
-1
votes
1 answer

Verilog: 3D synthesizable parameter

Is it possible to create a synthesizable 3D parameter in Verilog? I want to do something similar to this C style code: parameter [8][5]test [5] = { { {0, 1, 2, 3, 4}, {5, 6, 7, 8, 9}, {10, 11, 12, 13, 14}, {15, 16, 17, 18, 19}, {20,…
MKT
  • 655
  • 1
  • 6
  • 18
-1
votes
2 answers

Are there any advantages to having fewer levels of wrappers in verilog?

Specifically I am asking if there are any advantages of fewer levels in a hierarchical design. Ex. 5 levels vs 6. The only pro's/ cons I am seeing are readability and maybe faster compilation depending on the tools? Thanks!
Sam
  • 238
  • 3
  • 14
-1
votes
1 answer

uninitialized input signal isim

I am stuck with the following situation I am designing a vhdl project for uart. There are two components namely uart_rx.vhd and uart_tx.vhd. I suppose uart_tx goes in Mark state initially upon receiving the value '0' to signal: ready. Signal Ready…
Muss76
  • 9
  • 2
-1
votes
1 answer

Make HTTP Request from Verilog

Is it possible to call a C/C++/Python/Java function that makes an HTTP request inside of a Verilog module?
Orca Ninja
  • 823
  • 1
  • 15
  • 29
-1
votes
1 answer

VHDL Error (Simple Expression Expected)

I'm new to VHDL and I'm having a problem with my code that I can't seem to fix. We're supposed to do this using either selected signal assignment or table lookup. Mine is kind of a combination of the two since we are supposed to use don't cares for…
audiFanatic
  • 2,296
  • 8
  • 40
  • 56
-1
votes
1 answer

Undefined result for Ripple Counter

I am writing a test bench for Ripple counter using d flip flop. My program is compiling without errors, however, I get undefined result. How can I solve this problem? Here is the code: module RCounter; reg d,d2,d3,d4,clk; wire…
James Aflred
  • 87
  • 2
  • 5
  • 12
-1
votes
1 answer

Quick Verilog HDL Prompt (Beginner)

I am a beginner with Verilog HDL and trying to model a few modules from logic diagrams. If two wires are input into a NAND gate followed by another inverter afterwards, would that just be a AND gate in theory? Since the output wire desired is on the…
Lakeside
  • 35
  • 1
  • 4
-2
votes
1 answer

Need help in converting verilog module without input & output ports into synthesizable. Because module without input/output ports is not synthesizable

I created a verilog module for my project, and getting the expected output (but it doesn't has a testbench, it takes required input data by reading a .txt file using $readmemh) But a module without input or output ports cant be synthesized. Need to…
Sunil.B
  • 27
  • 5
-2
votes
1 answer

How does verilog concatenation work when used as both sides of a non-blocking assignement?

I am a beginner when it comes to verilog or any HDL. While working on a project I found a post where someone uses concatenation in both sides of the non-blocking assignment. Like so: {tf0, th0,tl0} <= {1'b0, th0, tl0}+ 1'b1; I don't really…
Gundi
  • 1
-2
votes
2 answers

what is wrong with the following code in verilog?

I am working on rs232 for over one week. My program takes a 13bit dataframe[from testbench] and serially transmits it. Now, I am testing the TX side. I think this[as commented below -here1, here2] is where the problem is. module…
-2
votes
1 answer

How can i use enum in a testbench while passing a file with vectors?

basically i declared a typedef enum in a package (in a file called Definition.sv): typedef enum logic[3:0] { AND = 4'b0000, //AND EOR = 4'b0001, //XOR …
Gabbed
  • 37
  • 1
  • 7
-2
votes
1 answer

Can parameters be variable

I know that we can use parameters to make generic modules, and to improve readability of code. My question is whether we can have these parameters themselves as a variable. Something like this: module parameterModule #(parameter p1, ...)(); …
-2
votes
1 answer

How to write exponential function in verilog?

I am beginner,I have to complete a project which uses exponential to calc with piecewise interpolation.