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

Verilog: Assigning a localparam to a bit vector wire

I have the following Verilog code snippet: module (...) input wire [7:0] sw; output wire [6:0] LED4; output wire [6:0] LED3; output wire [6:0] LED2; output wire [6:0] LED1; localparam charA = 7'b1110111; localparam charB = 7'b0011111; localparam…
-1
votes
1 answer

Indeterminate register values in hdl simulation

I am trying to simulate an AXI4(Full) master using Vivado. It is supposed to write the following values on the slave side(which, in my case, is gonna be some registers in my zedboard PS) 0x0000fe01 to 0xe000a204 0x0000fe01 to 0xe000a208 0x00000001…
Parth K
  • 587
  • 5
  • 18
-1
votes
1 answer

dont work lappend in proc tcl

I want get list of included files in HDL designer with tcl script. I get example that printed list of files into a log and change it. I add global variable filenames and append all filenames to it, but when proc will be executes my variable is…
-1
votes
1 answer

Two module verilog is not working

module rff_try_1(q,inp,clk); input clk,inp; output q; reg q; DFF dff0(q,inp,clk); endmodule module DFF(q,inp,clk); input inp,clk; output q; reg q; always @ (posedge clk)begin if(clk)begin q=inp; end end endmodule here I'm using two modules but…
-1
votes
1 answer

fwrite variables from sub-modules

I am quite new to Verilog and trying to learn by writing the DSP blocks that I need for my work. I am trying to write the variables of sub-modules to a txt/m file to use in matlab. The top block is TB and the sub-module instance is named …
M.X
  • 195
  • 3
  • 12
-1
votes
1 answer

Making Vivado Synthesis "A process triggered every clock cycle will not have functionality every clock cycle"

This is code for ALU that does addition and multiplication only. An addition is handled in same clock cycle but the multiplication result has to be delayed by 3 clock cycles. module my_addmul( //control signals input i_clk, input i_rst, …
Qazi
  • 345
  • 3
  • 16
-1
votes
1 answer

How do I test if a data is integer ? (vhdl)

Presuming I have: x: IN STD_LOGIC_VECTOR(2 DOWNTO 0); Y: OUT STD_LOGIC_VECTOR(2 DOWNTO 0); y <= x if x is integer How can I test if my x is a integer number?
-1
votes
1 answer

Error (10663): Verilog HDL Port Connection error at DSD_Project.v(34): output or inout port "hit" must be connected to a structural net expression

module DSD_Project(flag0, flag1, hit0, hit1,room_counter,someone_inRoom,someone_Spying,hit0_LED, hit1_LED,echo0_LED, echo1_LED, anti_theft_output,reset_Antitheft_output,echo0, echo1, CLOCK_50,anti_theft, reset_Antitheft); output reg hit0_LED =…
-1
votes
1 answer

unexpected output from signal processing structure module

Undertaking this problem i am getting an unexpected output of X (unknown value) from my Verilog code. Would appreciate if someone could show me where i am going wrong, code is attached. problem module code // Signal processing…
-1
votes
1 answer

Initialize Block RAM with file which contain ASCII data

I want to initialize Block RAM with text file which contain ASCII data like "AGCCT", Is there any idea how can I do this? I am able to initialize BRAM with file which contain binary or hexadecimal data but I don not know how to initialize it with…
Elnaz
  • 21
  • 5
-1
votes
1 answer

How to initialize a class type used as a function parameter

I am trying to get a handle on HDL to C++ conversions and have hit a bit of a snag. The conversion using Verilator on Ubuntu is easy enough but one data type is annoying me. The top code in the hierarchy is... #include #include…
loumbut5
  • 65
  • 8
-1
votes
3 answers

Trying to implement a stack in Verilog. What's wrong with the code?

I'm new to Verilog, so please excuse any newbie mistakes. I'm trying to implement a 3 byte stack in verilog. Using R_W to read write (push/pop) and a 2D Array to store the contents of the stack. `timescale 1ns / 1ps module one(R_W,PUSH,POP); …
-1
votes
1 answer

Begin:comparison Statement in procedural block

As part of a lecture series on verilog HDL for FPGA programming I have been given this piece of code to create a signed 8-bit greater-than comparator. I have simulated this in xillinx ISE and it shows that the syntax is correct. However I do not…
andowt
  • 274
  • 1
  • 4
  • 15
-1
votes
1 answer

How to do matrix multiplication in Verilog?

I am trying to multiply 1x3 * 3X64 matrix, here since each value in matrix is decimal number so for each value I have taken 4 bits that is 4x64 bits in total accessing 4bits of each row at a time. I tried to generalize it. The matrix is of form 1x3…
Swaroop
  • 1
  • 1
  • 4
-1
votes
2 answers

SystemVerilog Task inside Fork

I am executing a piece of code written by someone else, and it works, but I don't understand what is going on! initial begin: running_test fork task1(); task2(); join task3(); end:…
Rudy01
  • 1,027
  • 5
  • 18
  • 32