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
2
votes
2 answers

checking next condition in the if statement when whole condition will be true

Does the VHDL language standard defines the behavior of checking conditions in the if statement in the following situation: constant one: std_logic: = '1'; -- always '1' signal vector: std_logic_vector (2 downto 0); (...) if (one or vector(3) )…
J. Doe
  • 59
  • 8
2
votes
1 answer

How can I see why a file is listed in "syntax error files" in vivado

Syntax error files: I want to know where I can see the exact error info.There's no hint in vivado. Thanks!
mathgeek
  • 23
  • 4
2
votes
3 answers

What's a good way to "fuse" the locations pointed to by different pointers?

I have many pointers pointing to different (or same) locations in memory. I want to implement a mechanism that allows us to "fuse" the locations pointed to by a given subset of the pointers. I am using perl 5.6.1 right now, but I am open to…
Akhil
  • 115
  • 7
2
votes
1 answer

Driving bidirectional lines in Verilog

this question probably wont be explained very well and that's because I don't really understand what's happening in my design. I need to use an I2C communication bus to talk to a camera (Terasic D5M) so I tried to write one using Verilog. I only…
Student
  • 25
  • 3
2
votes
2 answers

Simulation vs hardware mismatch

I have a very simple problem but I do not get my head around what is going wrong. Essentially, the whole thing works fine when simulating it, however, having it in hardware gives me the wrong result. Basically I have two ctrl signals that determine…
Patrick
  • 39
  • 1
  • 3
2
votes
1 answer

Chisel, Generate Blocks and Large Intermediate/Output Files

Is there a construct in Chisel to generate Verilog generate blocks instead of unrolling Scala for-loops into very large (>100k line) output Verilog and FIRRTL files. For example, I have the following code, that constructs a 2D lattice of…
ssb
  • 7,422
  • 10
  • 36
  • 61
2
votes
0 answers

Array of Variable size in VHDL

I am trying to write code that uses a variable array for some computations.I am having a bit of trouble with declaring the array for this. currently I have Generic(Y: integer:= ) ;---enter array width Z: integer:= );---enter array height …
D.P
  • 23
  • 4
2
votes
4 answers

Verilog linting tools?

What are some good linting tools for verilog? I'd prefer one that can be configured to either handle or ignore certain vendor specific primitives like LUT's, PLL's, etc. I recently tried verilator-3.810, but out of the box it needs a little help…
mrflibble
  • 67
  • 1
  • 1
  • 3
2
votes
1 answer

Vivado Sim Error: "root scope declaration is not allowed in verilog 95/2K mode"

When I go to simulate my top-level module in Xilinx Vivado 2016.4, I receive the peculiar error: ERROR: [VRFC 10-1342] root scope declaration is not allowed in verilog 95/2K mode [<...>/header.vh] I am using the built-in Vivado Simulator with…
craymichael
  • 4,578
  • 1
  • 15
  • 24
2
votes
1 answer

AXI4 delay transactions

I am just looking for advice. I currently have a custom IP integrated in VHDL which has a AXI4 slave input and an AXI4 master output, and currently the signals are directly tied together. I would like to add a customizable latency to the AXI…
MateoConLechuga
  • 561
  • 4
  • 23
2
votes
4 answers

Verilog strange simulation results post synthesis

I am facing a strange problem. The code is for a simple ALU. Only code of interest is pasted here: always @(posedge clk or posedge rst) begin if (rst == 1) begin mul_valid_shr = 3'b000; end else begin if…
Qazi
  • 345
  • 3
  • 16
2
votes
1 answer

Reading an image to FPGA from PC and Back

I need to read a small image (tif format) from PC to FPGA kit (ALTERA DE2-70) for processing, then write it back to PC. I have no idea how to do it in Verilog? Can it be done in C? if so, how can I combine my C/HDL code to work together? Thank you!
The Byzantine
  • 619
  • 1
  • 6
  • 21
2
votes
1 answer

What's the minimum clock cycles number to read and write with AXI4Lite

I'm wondering what is the minimum number of clock cycle to do a simple access on an AXI4Lite bus. I think it's 4, but I'm not sure.
FabienM
  • 3,421
  • 23
  • 45
2
votes
3 answers

If there are 2 always blocks which block will be executed first

I am new to verilog and I have a question Suppose I have 2 always blocks in a module, which block will be executed first or will they be executed at the exact same time. If so what is the value of r1. For example module example(clk); input clk; reg…
sandywho
  • 353
  • 1
  • 7
  • 16
2
votes
2 answers

RANDOM 0, 1, -1 IN VERILOG

I would like to generate random decimal number 0, 1 or -1 in verilog, that I can add it to my basic signal and get some noise on it with it. I tried with reg [1:0] SIGNAL_noise_ii; SIGNAL_noise_ii <= {$random}%2; but it doesnt work the way I…
surfer113
  • 45
  • 1
  • 7