VHDL
VHDL is a hardware description language that can model the behavior and structure of digital systems at multiple levels of abstraction, ranging from the system level down to that of logic gates, for design entry, documentation, and verification purposes. The language was developed for the US military VHSIC program in the 1980s, and has been standardized by the Institute of Electrical and Electronics Engineers as IEEE Std 1076; the latest version of which is IEEE Std 1076-2019. To model analog and mixed-signal systems, an IEEE-standardized HDL based on VHDL called VHDL-AMS has been developed.
History
In 1983, VHDL was originally developed at the behest of the U.S. Department of Defense in order to document the behavior of the ASIC that supplier companies were including in equipment. The standard MIL-STD-454N in Requirement 64 in section 4.5.1 "ASIC documentation in VHDL" explicitly requires documentation of "Microelectronic Devices" in VHDL.The idea of being able to simulate the ASICs from the information in this documentation was so obviously attractive that logic simulators were developed that could read the VHDL files. The next step was the development of logic synthesis tools that read the VHDL and output a definition of the physical implementation of the circuit.
Due to the Department of Defense requiring as much of the syntax as possible to be based on Ada, in order to avoid re-inventing concepts that had already been thoroughly tested in the development of Ada, VHDL borrows heavily from the Ada programming language in both concept and syntax.
The initial version of VHDL, designed to IEEE standard IEEE 1076–1987, included a wide range of data types, including numerical, logical, character and time, plus arrays of
bit called bit_vector and of character called string.A problem not solved by this edition, however, was "multi-valued logic", where a signal's drive strength and unknown values are also considered. This required IEEE standard 1164, which defined the 9-value logic types: scalar
std_logic and its vector version std_logic_vector. Being a resolved subtype of its std_Ulogic parent type, std_logic-typed signals allow multiple driving for modeling bus structures, whereby the connected resolution function handles conflicting assignments adequately.The updated IEEE 1076, in 1993, made the syntax more consistent, allowed more flexibility in naming, extended the
character type to allow ISO-8859-1 printable characters, added the xnor operator, etc.Minor changes in the standard added the idea of protected types and removed some restrictions from port mapping rules.
In addition to IEEE standard 1164, several child standards were introduced to extend functionality of the language. IEEE standard 1076.2 added better handling of real and complex data types. IEEE standard 1076.3 introduced signed and unsigned types to facilitate arithmetical operations on vectors. IEEE standard 1076.1 provided analog and mixed-signal circuit design extensions.
Some other standards support wider use of VHDL, notably VITAL and microwave circuit design extensions.
In June 2006, the VHDL Technical Committee of Accellera approved so-called Draft 3.0 of VHDL-2006. While maintaining full compatibility with older versions, this proposed standard provides numerous extensions that make writing and managing VHDL code easier. Key changes include incorporation of child standards into the main 1076 standard, an extended set of operators, more flexible syntax of case and generate statements, incorporation of VHPI and a subset of PSL. These changes should improve quality of synthesizable VHDL code, make testbenches more flexible, and allow wider use of VHDL for system-level descriptions.
In February 2008, Accellera approved VHDL 4.0, also informally known as VHDL 2008, which addressed more than 90 issues discovered during the trial period for version 3.0 and includes enhanced generic types. In 2008, Accellera released VHDL 4.0 to the IEEE for balloting for inclusion in IEEE 1076–2008. The VHDL standard IEEE 1076-2008 was published in January 2009.
Standardization
The IEEE Standard 1076 defines the VHSIC Hardware Description Language, or VHDL. It was originally developed under contract F33615-83-C-1003 from the United States Air Force awarded in 1983 to a team of Intermetrics, Inc. as language experts and prime contractor, Texas Instruments as chip design experts and IBM as computer-system design experts. The language has undergone numerous revisions and has a variety of sub-standards associated with it that augment or extend it in important ways.IEEE Standard 1076 was and continues to be a milestone in the design of electronic systems.
Revisions
- IEEE 1076–1987 First standardized revision of version 7.2 of the language from the United States Air Force.
- IEEE 1076–1993. Significant improvements resulting from several years of feedback. Probably the most widely used version with the greatest vendor tool support.
- IEEE 1076–2000. Minor revision. Introduces the use of protected types.
- IEEE 1076–2002. Minor revision of 1076–2000. Rules with regard to buffer ports are relaxed.
- * IEC 61691-1-1:2004. IEC adoption of IEEE 1076–2002.
- IEEE 1076c–2007. Introduced VHPI, the VHDL procedural interface, which provides software with the means to access the VHDL model. The VHDL language required minor modifications to accommodate the VHPI.
- IEEE 1076–2008. Major revision released on 2009-01-26. Among other changes, this standard incorporates a basic subset of PSL, allows for generics on packages and subprograms and introduces the use of external names.
- * IEC 61691-1-1:2011. IEC adoption of IEEE 1076–2008.
- IEEE 1076–2019. Major revision.
Related standards
- IEEE 1076.1 VHDL Analog and Mixed-Signal
- IEEE 1076.1.1 VHDL-AMS Standard Packages
- IEEE 1076.2 VHDL Math Package
- IEEE 1076.3 VHDL Synthesis Package
- IEEE 1076.3 VHDL Synthesis Package – Floating Point
- IEEE 1076.4 Timing
- IEEE 1076.6 VHDL Synthesis Interoperability
- IEEE 1164 VHDL Multivalue Logic Packages
Design
A VHDL simulator is typically an event-driven simulator. This means that each transaction is added to an event queue for a specific scheduled time. For example, if a signal assignment should occur after 1 nanosecond, the event is added to the queue for time +1ns. Zero delay is also allowed, but still needs to be scheduled: for these cases, delta delay is used, which represents an infinitely small time step. The simulation alternates between two modes: statement execution, where triggered statements are evaluated, and event processing, where events in the queue are processed.
VHDL has constructs to handle the parallelism inherent in hardware designs, but these constructs differ in syntax from the parallel constructs in Ada. Like Ada, VHDL is strongly typed and is not case sensitive. In order to directly represent operations which are common in hardware, there are many features of VHDL which are not found in Ada, such as an extended set of Boolean operators including nand and nor.
VHDL has file input and output capabilities, and can be used as a general-purpose language for text processing, but files are more commonly used by a simulation testbench for stimulus or verification data. There are some VHDL compilers that build executable binaries. In this case, it might be possible to use VHDL to write a testbench to verify the functionality of the design using files on the host computer to define stimuli, to interact with the user, and to compare results with those expected. However, most designers leave this job to the simulator.
It is relatively easy for an inexperienced developer to produce code that simulates successfully, but that cannot be synthesized into a real device, or is too large to be practical. One particular pitfall is the accidental production of transparent latches rather than D-type flip-flops as storage elements.
One can design hardware in a VHDL IDE to produce the RTL schematic of the desired circuit. After that, the generated schematic can be verified using simulation software, which shows the waveforms of inputs and outputs of the circuit after generating the appropriate testbench. To generate an appropriate testbench for a particular circuit or VHDL code, the inputs have to be defined correctly. For example, for clock input, a loop process or an iterative statement is required.
It is important to note that when a VHDL model is translated into the "gates and wires" that are mapped onto a programmable logic device such as a CPLD or FPGA, then it is the actual hardware being configured, rather than the VHDL code being "executed" as if on some form of a processor chip.
Advantages
The key advantage of VHDL, when used for systems design, is that it allows the behavior of the required system to be described and verified before synthesis tools translate the design into real hardware.Another benefit is that VHDL allows the description of a concurrent system. VHDL is a dataflow language in which every statement is considered for execution simultaneously, unlike procedural computing languages such as BASIC, C, and assembly language, where a sequence of statements is run sequentially, one instruction at a time.
A VHDL project is multipurpose. Being created once, a calculation block can be used in many other projects. However, many formational and functional block parameters can be tuned.
A VHDL project is portable. Being created for one element base, a computing device project can be ported to another element base; for example, VLSI with various technologies.
A big advantage of VHDL compared to original Verilog is that VHDL has a full type system. Designers can use the type system to write much more structured code.