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
0
votes
1 answer

Found 'module' keyword inside a module before the 'endmodule'

I am working on a simple cpu with a register in system verilog as follows: module register( input clk, e, input [7:0]in, output reg [7:0]out ); always@(posedge clk or posedge e) begin if(e == 1) out <= in; else out <= out;…
anthozep
  • 333
  • 5
  • 16
0
votes
2 answers

VHDL testbench for Modelsim (Altera)

I'm in the process of writing the VHDL code for Salsa20 stream cipher. Its main function is the 'quarterround' which I have successfully written. I want to test it in Modelsim before moving on but I am encountering difficulties. I understand I have…
0
votes
2 answers

"This port will be preserved and left unconnected if it belongs to a top-level block...." in VHDL

I am getting the following warning in Xilinx when I synthesize my code of a 4-bit multiplier: "This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is…
0
votes
1 answer

Infinite HDL synthesis

Whenver I try to synthesize my code, it is caught in an infinite loop i.e it is stuck at HDL SYNTHESIS. I have not used any loops. But problem persists. ---------------------------------------------------------------------------------- library…
0
votes
3 answers

Error code not working

Hello I am trying to implement the gate MiniALU but the howard simulator give me this error: "has no source pin". I would be happy if you can help me solve this. my code- CHIP MiniALU { IN x[16], y[16], // 16-bit inputs zx, //…
user3332897
  • 23
  • 2
  • 8
0
votes
1 answer

If statement bug in VHDL

I am facing a problem in VHDL via ModelSim. It is an error in my if statement. if ((s(0) = c(0)) AND (NOT(x1(0)))) THEN I:= (others => '0'); end if; Here is my if statement and the error is: No feasible entries for infix operator…
user3300910
  • 19
  • 1
  • 2
  • 6
0
votes
2 answers

VHDL MUX select with constant

I have a constant defined in my VHDL package. constant USE_OSD : integer := 0; And this is something that I change prior to synthesis in my package. I would like to use this constant as my MUX select line in my VHDL code. How can I do this? for…
Rudy01
  • 1,027
  • 5
  • 18
  • 32
0
votes
2 answers

sequential vs combinatorial logic (Verilog and VHDL)

Is this true to say that the following Code-1 and Code-2 are equivalent in Verilog: Code 1 always@(posedge Clock or B or C) begin if (B) A <= 0; else if (C) A <= 1; end Code 2 always@(posedge Clock or B or C) begin if (B) …
Rudy01
  • 1,027
  • 5
  • 18
  • 32
0
votes
1 answer

Unable to find bug in Simulator, because $display & Wave window of simulator Show Different Result?

I am try to design a BIST (Built in Self Test System) For Multiplier. I created a Multiplier which is working fine and now I try to compare its result(Multiplier's output) with the correct result of(ORA's output). I am simulating with the Modelsim's…
Rocky_s
  • 1
  • 3
0
votes
2 answers

Why is adding one operation causing my number of logic elements to skyrocket?

I'm designing a 464 order FIR filter in Verilog for use on the Altera DE0 FPGA. I've got (what I believe to be) a working implementation; however, there's one small issue that's really actually given me quite a headache. The basic operation works…
Radrider33
  • 557
  • 1
  • 4
  • 17
0
votes
1 answer

Behavioral to Structural Conversion Problems VHDL

I designed a primality testing for Rabin Miller algorithm in behavioral type. I used functions to create my modules. Unfortunately, when I tried to synthesize it by my Altera Kit via Quartus, I realized that function are not synthesize. Here I will…
user3300910
  • 19
  • 1
  • 2
  • 6
0
votes
1 answer

Calling a Component Inside Another Component "Port Mapping" (Illegal Statement) VHDL

I am facing a confusing problem in my program. I need in my program to port map (calling) a component. Also, inside the component, I need to do another port mapping (calling) which is illegal in VHDL. Do you have an alternative solution to this…
user3300910
  • 19
  • 1
  • 2
  • 6
0
votes
2 answers

Assigning wires deep in a nested set of modules

I have a wire that is about 4 levels deep and I really don't want the hassle of having to propagate it up the hierarchy. Is there any way to assign the wire using some sort of referencing? I know I can access the wire by…
Adam
  • 463
  • 2
  • 6
  • 14
0
votes
2 answers

Right shifting a carry save number

Carry save arithmetic uses twice the number of bits, one word to hold the "virtual sum", one to hold the "virtual carry" to avoid propagating the carry which is the limiting factor in hardware speed. I have a system that requires dividing these…
StanOverflow
  • 557
  • 1
  • 5
  • 21
0
votes
3 answers

What is the correct implementation of handling asynchronous signals in an FSM?

We are implementing an Ethernet MAC controller in VHDL.. To start of, here is a code snippet of my code.. -- next state PROCESS(p_state, phy_start, phy_ctr, phy_clk) BEGIN CASE p_state IS WHEN sIDLE => IF(phy_start = '1' or…
Xegara
  • 563
  • 2
  • 10
  • 23