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

Is the array part select +: with variable start synthesizable by Vivado?

If I have a vector and I want to read a part of it starting somewhere. Can I use the syntax vector[staring_point +: output_length] with starting_point being an integer? Is it synthesizable? If I write a code like this: module my_mod( input logic…
dadduni
  • 3
  • 2
-1
votes
2 answers

Is there is a function in system verilog that can return the number of the most significant bits of an array

iam trying to get the number of the effective bits in an array for example: if i have an array that contains these sequence of bits: 0000_0101 the dimension of the array is 8 , i just want way to get the number of the most significant bits which are…
-1
votes
1 answer

Best way to optionally register inputs

I have a systemverilog module with a LOT of input signals of varying sizes. I want to optionally register them before use. Here is my desired criteria for the code that does this optional registering: I should only need to write out the assignments…
Ryan Johnson
  • 102
  • 7
-1
votes
1 answer

Different Clock Domain VHDL

I'm making a custom hardware ARINC 429 Core. For now I have described the module in transmission (TX-FSM), according to the ARINC 429 standard and a FIFO in transmission from which it takes the data and sends them to the outside. The FIFO works at a…
KemKing
  • 11
  • 3
-1
votes
1 answer

Synthesis error of Array Multiplication with an input

Hello I am trying a small section of a project code where the equation is multiplying input with all values of array and then adding them up in one final output. module arraywithinput(input in, output reg [11:0] out0 ); reg [7:0]…
-1
votes
1 answer

Shift n bits out of a register per clock

I am working in Vivado using Verilog. Assume I have 2 registers: reg [3327:0]a; reg [1023:0] b; Each clock cycle Id like to take the 13 bits from a and 4 bits from b and multiply them. Clock 1: a[12:0] * b[3:0] Clock 3: a[25:13] * b[7:4] What is…
Daftyler
  • 5
  • 1
  • 4
-1
votes
2 answers

System Verilog FSM `next state` does not transition when `present state` value in next state combinatorial logic block transitions - ternary operator

in my Verilog code, the ns value does not get assigned to any of the values in the next state logic. As I coded the next state logic to assign a value to the ns state variable whenever there is a transition in the ps. Here is the FSM code snippet …
-1
votes
1 answer

How generate sine wave with vhdl?

I am a beginner in vhdl, I am trying to generate a sinus and square singal with a frequency of 50 Mhz, but first i'm trying to generate the sinus wave. I saw a lot of tutorials but it was quite complicated to understand. Here is the code I made.…
Chuinul
  • 1
  • 1
  • 2
-1
votes
1 answer

How to write this for loop conditions in Verilog design correctly?

I want to write a module in Verilog that outputs the same 32-bit input at positive clock edge. However, I have some trouble with the loop conditions.
user14122738
-1
votes
2 answers

why I get Syntax error near "else" in assertion in verilog?

I am trying to run a testbench which was written for a neuromorphic chip named ODIN. Irun this code in Xilinx ISE. I get some errors that do not make sense. here is a part of code: $display("----- Starting verification of programmed SNN…
dreamer1375
  • 53
  • 1
  • 10
-1
votes
1 answer

How to sample a signal from a continuous time domain in to a input port digital design (Simulink to HDL integration)

I am doing Simulink based Hardware software co-simulation. I have a simulink block which is outputing fixed point 32 bit data in a continuous domain. I want to send this data to an HDL design again in fixed point 32 bit format. Whenever i integrate…
-1
votes
1 answer

Is there a synthesizeable task or port interface way to better assign AXI signals to local modules?

Currently I have a cross bar in my design and I am wiring up several different modules at various offsets (xbarAWADDR and others increment by either 32 or 40 or 4 or 1 depending on the bus name). I am passing the cross bar signals to he various…
Tropical_Peach
  • 1,143
  • 3
  • 16
  • 29
-1
votes
1 answer

Verilog Design Problems

How to fix multiple driver , default value and combinational loop problems in the code below? always @(posedge clk) myregister <= #1 myregisterNxt; always @* begin if(reset) myregisterNxt = myregisterNxt +1; else if(flag == 1) …
-1
votes
2 answers

Verilog HDL always & case errors

I have been working on a FSM which is implemented using Verilog HDL. In the case determining the next state outputs, I have two outputs that need to be assigned. So I tried to use begin and end to put two assignments into a single case. But it still…
-1
votes
1 answer

Is there an efficient way to calculate the smallest N numbers from a set of numbers in hardware (HDL)?

I am trying to calculate the smallest N numbers from a set and I've found software algorithms to do this. I'm wondering if there is an efficient way to do this in hardware (i.e. HDL - in System Verilog or Verilog)? I am specifically trying to…
Varun Govind
  • 983
  • 2
  • 12
  • 23