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

Verliog- comparator

For two 3-bit unsigned numbers a (a2a1a0)and b (b2b1b0), build a logic circuit to output the larger number. I want to compare three bits number and show the larger number. But the code can not work. I cannot find the mistake i have made. 4.ABTB=A…
Henry
  • 13
  • 3
-1
votes
2 answers

Illegal redeclaration of 'synaptic_core'

I am compiling an SNN simulator named "ODIN" in Xilinx. for the name of the module i get this error. Can you help me with this? Illegal redeclaration of 'synaptic_core' module synaptic_core #( parameter N = 256, parameter M = 8 )( // Global inputs…
dreamer1375
  • 53
  • 1
  • 10
-1
votes
1 answer

setting the output reg of one device to be the input of another device in verilog

i want the value of the output reg of a module to be used as input of another module .How can I do so ? the following code shows errors when i try to connect the output of a 3 bit upcounter to a 3to8 decoder module combouno(clk,enb,rest,dec); input…
-1
votes
2 answers

System Verilog parameterise class with interface

A protocol may be implemented over different physical layers, e.g. interface async_if; logic tx; task send(int n); tx <= 0; // stop bit #10; // etc. endtask endinterface interface clkd_if; logic data; …
user234461
  • 1,133
  • 12
  • 29
-1
votes
2 answers

System Verilog: ref class member

It should be possible to have a reference as a class member, like in C++. However... covergroup smurf_car_covergroup(ref smurf_transaction tx) ; covpt_tx_direction_TURN_LEFT …
user234461
  • 1,133
  • 12
  • 29
-1
votes
1 answer

Why multiple driver issue with some assignments but not others in verilog simulation

Hi why is it that VCS simulation allows for some assignments from 2 different always block, while for some others it is not allowed In the code below: While compiling with the variable pass_val but without rollover_n the compile and run of the…
-1
votes
1 answer

Approach to design valid/ready handshake

I have implemented valid/ready handshake signals in verilog. I just wanted to know if my approach is right or something is wrong. I shall be happy to know of any improvement. A simple counter is used as an input to fifo. So when fifo is almost full…
-1
votes
1 answer

How to fix "Unknown formal identifier" error in VHDL

I am facing an error with my VHDL code. I am using ModelSim software for it. I am new in it. There are similar questions posted but that were not solve my problem. Actual issue in port map. I assigned a signals for intermediate wires but it is still…
Ali Raza
  • 1
  • 2
-1
votes
2 answers

Learn VHDL when coming from strong Verilog background

I have a strong Verilog and digital design background. I'm now in a position where I have to learn VHDL quickly, preferably in a few weeks. What would be the best way to approach this?
-1
votes
1 answer

Basic Verilog Circuit Questions

I'm trying to write a basic circuit in Verilog using Quartus Prime as a side project for a professor. That said, I'm having trouble with Verilog syntax. The circuit that I want to make is a collection of AND and OR gates that theoretically determine…
bpryan
  • 51
  • 1
  • 10
-1
votes
1 answer

Can't resolve multiple constant drivers for net "sda_reg"

I was trying to make a simple Master in Verilog. For now it should just send a Slave adress. It seems there is a problem in my process clock == 0. Because I get the following Error Message: Error (10028): Can't resolve multiple constant drivers for…
Tobias
  • 9
  • 8
-1
votes
1 answer

4 bit S R latch in verilog

I am writing verilog code for 4 bit S R latch. I have considered the latch to be asynchronous. So I have not included the clock. At first I have written code for 1 bit S R latch then I have used that code for 4 bit S R latch. module srlatch (S, R,…
Subhadip
  • 11
  • 1
  • 2
  • 7
-1
votes
1 answer

Design of "simple" VHDL module still drives me mad

Thanks to all your input, I implemented your suggestions, however the problem remains the same. The result in simulation works fine, but the hardware outputs something different. Just to briefly recap, I have two ctrl signals that determine the…
-1
votes
1 answer

implementing components of a computer processor using .hdl and the Hardware Simulator (nand2tetris)

I'm having trouble getting my .hdl files to loads in the HardwareSimulator. So far I have implemented FullAdder.hdl and Add16.hdl. The error message I'm recieving is line 22, zab has no source pin Here is the relevant code for the Add16: CHIP…
-1
votes
1 answer

How do I "nest" modules in Verilog?

I am making a single cycle cpu that follows MIPS assembly instructions and am wondering how to clean up the schematic. So for example I have several different modules instantiated together as shown by the code below. Now when this comes up under…
proCrow
  • 29
  • 1
  • 5