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

Verilog: Passing parameters

I have written two verilog modules. The first one is named topmodule.v and the second one is tx.v. The module topmodule.v pass a parameter data[31:0] to tx.v. I want to take the variables Rmax and Cmax from data[31:0]. After that I want to make Rmax…
0
votes
2 answers

Difference between if(rdy) and if(rdy == 1)?

Is there a difference between the two? I have just changed from if(rdy) to if(rdy == 1) in some code for a project, and suddenly the output behaves totally different. Assumes rdy is a 1-bit reg datatype in Verilog.
0
votes
5 answers

Generics in hardware description language

I'm fairly new to HD description languages. I'm finding it a bit hard to change my C-ish programming skills, and I'm looking for a little guaidance to help my throw the following problem. I want to implement a full tree, that its inner nodes are…
DirtyBit
  • 47
  • 1
  • 1
  • 6
0
votes
1 answer

Default values of RAM

I writing in Verilog HDL for synthesis and I want to instantiate a DUAL PORT RAM with default values (zeros), how can do it? Thanks, Netanel
0
votes
1 answer

SystemVerilog parameters for an or function

I have written the following working code to calculate an enable signal. logic l_en [0:N-1]; logic [0:N-1] l_output_grant [0:M-1]; always_comb begin for (int i=0; i
user2646276
0
votes
3 answers

Can I find the execution time of verilog code?

I know that verilog is an HDL and its all about parallel processing but the problem I face is that I have to write a report on why a section of C++ code is better in an HDL environment. So I have the C++ code, which I wrote in Verilog. It works…
StuckInPhDNoMore
  • 2,507
  • 4
  • 41
  • 73
0
votes
2 answers

Verilog disable Statement not Working but $finish works but it is not synthesizable?

I want to design an counter which counts up to some number, lets say it is 3, for this I write a code that work well with "$finish" but not with "disable". I want to use this counter for synthesis so I have to use "disable" statement ..... I have…
Shrikant Vaishnav
  • 80
  • 1
  • 5
  • 13
0
votes
2 answers

What does UInt(0) mean?

I read that UInt(1) refers to a 1-bit decimal literal. I'm confused about what UInt(0) could mean. It is used in a Counter code that goes as follows :- package TutorialSolutions import Chisel._ object Counter {` `def wrapAround(n:…
0
votes
0 answers

IEEE Float input to BCD convertion

If i use one std_logic_vector (31 downto 0) as input of my entity. Exists any form of using this 32 bits (IEEE Format) to convert them to ASCII form ? I have 3.14: input ----> 0100 0000 0100 1000 1111 0101 1100 0011 (in IEEE 32 bits form) output…
0
votes
2 answers

convert a std_logic_vector INPUT to IEEE Float type

How convert a std_logic_vector INPUT of the my entity in a IEEE Float type, to do some operations in my process? My entity need receive a IEEE Float of A/D converter.
0
votes
1 answer

creating 16to4 bit priority encoder with 4to2 bit encoder

I want to make a 16to4 bit priority encoder just using 4 to 2 priority encoder? I am using verilog code, I used six 4 to 2 encoder. at the first I'v used 4 encoders and after that I put their output the input of the other tow encoders; but it…
sarah sh
  • 305
  • 1
  • 5
  • 12
0
votes
0 answers

Get "VHDL Subprogram error" in to_integer call

I want get the integer value of float32 value passed as input parammeters, i am using to_integer() function. but i get the error in compilation step: Warning (10445): VHDL Subtype or Type Declaration warning at float_pkg_c.vhdl(1022): subtype or…
0
votes
2 answers

Design a 256x8 bit RAM using 64 rows and 32 columns programmatically using VHDL

I am new to VHDL programming, I am going to do a project on Built-In Self-Repair.In this project am going to design RAMs of different sizes(256 B,8kB,16kB,32kB)etc. and those rams has to be tested using BIST and then they should be repaired.So…
banupriya
  • 1,220
  • 5
  • 21
  • 51
0
votes
1 answer

Get row or column number if an address is given as input to Memory array

I am new to VHDL programming. The project regards detecting faults in a memory array. I have obtained the faulty data and address. Now I want to get the corresponding row or column number of the particular address found in memory array. Code for…
banupriya
  • 1,220
  • 5
  • 21
  • 51
0
votes
1 answer

Fundamental Verilog Concepts

I have my first verilog assignment due in a few days and for whatever reason these concepts are escaping me. I don't think I'm thinking in terms of parallelism and hardware or something. My question is that I have to and a few switches and buttons…
jmeanor
  • 158
  • 1
  • 17