An Introduction to VHDL

for Synthesis and Simulation

David Pellerin, President, Accolade Design Automation, Inc.


Note: this is a preliminary version of an on-line introduction to VHDL and VHDL-based design methods. Some of the information in this document is incomplete, and some figures have yet to be included. Your comments on the usefulness of this information are welcome and appreciated. Please send comments to feedback@acc-eda.com

Also, be sure to check out VHDL Made Easy by David Pellerin and Douglas Taylor (Prentice Hall, 1996). VHDL Made Easy is over 400 pages of useful information for new and experienced VHDL users.


Introduction

VHDL (VHSIC Hardware Description Language) is becoming increasingly popular as a way to capture complex digital electronic circuits for both simulation and synthesis. Digital circuits captured using VHDL can be easily simulated, are more likely to be synthesizable into multiple target technologies, and can be archived for later modification and reuse.

In his introduction to A VHDL Primer (Prentice Hall, 1992), Jayaram Bhasker writes, "VHDL is a large and complex language with many complex constructs that have complex semantic meanings...". This statement, with its possibly record-breaking three instances of the word "complex", reflects a common and for the most part correct perception about VHDL: it is a large and complicated language.

VHDL is a rich and powerful language. But is VHDL really so hard to learn and use? VHDL is not impenetrable, if you follow well-established coding conventions and borrow liberally from sample circuits such as those found in this introduction.

Goals Of This Introduction

The intent of this work is to introduce VHDL to engineers who will be using the language to describe circuits for implementation in programmable logic or ASICs. To this end, we will avoid prolonged discussions that are appropriate only for developers of simulation models and system-level simulations, and concentrate instead on those aspects of the language that are most useful for circuit synthesis. We will give you enough information to quickly get started using VHDL, and will suggest coding styles that are appropriate using a wide variety of available synthesis and simulation tools.

Along the way, we'll be examining the many advantages of using VHDL for synthesis and simulation, and we will also explore some of the drawbacks of using VHDL when compared to alternative design capture methods. We'll see how VHDL fits into the overall electronic design process, and will focus closely on the design process as it relates to FPGA, PLD and ASIC design problems. This Introduction to VHDL is derived from a 4-hour seminar on VHDL synthesis and simulation. This is not a sales pitch, but instead provides valuable, detailed information for those considering VHDL (or other hardware description languages) as a design alternative. The introduction to VHDL will provide you with the information you need to begin making effective use of the language for electronic design applications.

What Is VHDL?

VHDL is a programming language that has been designed and optimized for describing the behavior of digital circuits and systems. As such, VHDL combines features of the following:

A Simulation Modeling Language

VHDL has many features appropriate for describing (to an excruciating level of detail) the behavior of electronic components ranging from simple logic gates to complete microprocessors and custom chips. Features of VHDL allow electrical aspects of circuit behavior (such as rise and fall times of signals, delays through gates, and functional operation) to be precisely described. The resulting VHDL simulation models can then be used as building blocks in larger circuits (using schematics, block diagrams or system-level VHDL descriptions) for the purpose of simulation.

A Design Entry Language

Just as high-level programming languages allow complex design concepts to be expressed as computer programs, VHDL allows the behavior of complex electronic circuits to be captured into a design system for automatic circuit synthesis or for system simulation. Like Pascal, C and C++, VHDL includes features useful for structured design techniques, and offers a rich set of control and data representation features. Unlike these other programming languages, VHDL provides features allowing concurrent events to be described. This is important because the hardware being described using VHDL is inherently concurrent in its operation. Users of PLD programming languages such as PALASM, ABEL, CUPL and others will find the concurrent features of VHDL quite familiar. Those who have only programmed using software programming languages will, however, have some new concepts to grasp.

A Test Language

One of the most important (and under-utilized) aspects of VHDL is its ability to capture the performance specification for a circuit, in a form commonly refered to as a test bench. Test benches are VHDL descriptions of circuit stimulus and corresponding expected outputs that verify the behavior of a circuit over time. Test benches should be an integral part of any VHDL project, and should be created in parallel with other descriptions of the circuit.

A Netlist Language

VHDL is a powerful language with which to enter new designs at a high level, but it is also useful as a low-level form of communication between different tools in a computer-based design environment. VHDL's structural language features allow it to be effectively used as a netlist language, replacing (or augmenting) other netlist languages such as EDIF.

A Standard Language

One of the most compeling reasons for you to become experienced with and knowledgable in VHDL is its adoptance as a standard in the electronic design community. Using a standard language such as VHDL will virtually guarantee that you will not have to throw away and re- capture design concepts simply because the design entry method you have chosen is not supported in a newer generation of design tools. Using a standard language also means that you are more likely to be able to take advantage of the most up-to-date design tools, and will have access to a knowledge-base of thousands of other engineers, many of who are solving problems similar to your own.

VHDL: As Simple or Complex as You Want It To Be

While it is true that VHDL is a large and complex language, it is not actually difficult to get started with. Use it as you need it, and explore advanced features as you become more confident. It won't take long before you are coding with the masters!

A Brief History Of VHDL

VHDL (which stands for VHSIC Hardware Description Language) was developed in the early 1980s as a spin-off of a high-speed integrated circuit research project funded by the U.S. Department of Defense. During the VHSIC program, researchers were confronted with the daunting task of describing circuits of enormous scale (for their time) and of managing very large circuit design problems that involved multiple teams of engineers. With only gate-level design tools available, it soon became clear that better, more structured design methods and tools would need to be developed.

To meet this challenge, a team of engineers from three companies -- IBM, Texas Instruments and Intermetrics -- were contracted by the Department of Defense to complete the specification and implementation of a new, language-based design description method. The first publicly available version of VHDL, version 7.2, was made available in 1985.

IEEE Standard 1076-1987

In 1986, the IEEE was presented with a proposal to standardize the language, which it did in 1987 after substantial enhancements and modifications were made by a team of commercial, government and academic representatives. The resulting standard, IEEE 1076-1987, is the basis for virtually every simulation and synthesis product sold today. An enhanced and updated version of the language, IEEE 1076-1993, was released in 1994, and VHDL tool vendors have been responding by adding these new language features to their products.

IEEE Standard 1164

Although IEEE standard 1076 defines the complete VHDL language, there are aspects of the language that make it difficult to write completely portable design descriptions (descriptions that can be simulated identically using different vendors' tools). The problems stems from the fact that VHDL supports many abstract data types, but does not directly address the problem of characterizing different signal strengths or commonly used simulation conditions such as unknowns and high- impedence. Soon after IEEE 1076-1987 was adopted, simulator companies began enhancing VHDL with new signal types (typically through the use of syntactically legal, but non-standard enumerated types) to allow their customers to accurately simulate complex electronic circuits. This causes problems because design descriptions entered using one simulator were often incompatible with other simulation environments. VHDL was quickly becoming a non-standard.

To get around this problem of non-standard data types, another standard was developed by commitee and adopted by the IEEE. This standard, numbered 1164, defines a standard package (a VHDL feature that allows commonly used declarations to he collected into an external library) containing definitions for a standard nine-valued data type. This standard data type is called standard logic, and the IEEE 1164 package is often referred to as the standard logic package, or sometimes MVL9 (for mutivalued logic, nine values).

The IEEE 1076-1987 and IEEE 1164 standards together form the complete VHDL standard in widest use today. (IEEE 1076-1993 is slowly working its way into the VHDL mainstream, but does not add significant new features for synthesis users.)

VITAL Initiative

The VITAL initiative (VHDL Initiative Toward ASIC Libraries) is an effort to enhance VHDL's abilities for modeling timing in ASIC and FPGA design environments. VITAL borrows liberally from existing methods for timing annotation used in Verilog HDL. Specifically, the VITAL standard (standard 1076.4, which as of this writing is in balloting phase) describes a method for annotating delay information using the same underlying tabular format as specified in Verilog. The adoptance of this standard will make it much easier for ASIC and FPGA vendors to create timing-annotated netlists and other data describing the detailed behavior of their devices.

How Is VHDL Used?

VHDL is a general-purpose programming language optimized for electronic circuit design. As such, there are many points in the overall design process at which VHDL can help.

For design specification

VHDL can be used right up front, while you are still designing at a high level, to capture the performance and interface requirements of each component in a large system. This is particularly useful for large projects involving many team members. Using a top-down approach to design, a system designer may define the interface to each component in the system, and describe the acceptance requirements of those components in the form of a high-level test bench. The interface definition (typically expressed as a VHDL entity declaration) and high-level performance specification (the test bench) can then be passed on to other team members for completion or refinement.

For design capture

Design capture is that phase in which the details of the system are entered (captured) in a computer-based design system. In this phase, you may express your design (or portions of your design) as schematics (either board-level or purely functional) or using VHDL descriptions. If you are going to be using synthesis technology, then you will want to write the VHDL portions of the design using a style of VHDL that is appropriate for synthesis.

The design capture phase may include tools and design entry methods other than VHDL. In many cases, design descriptions written in VHDL are combined with other representations, such as schematics, to form the complete system.

For design simulation

Once entered into a computer-based design system, you will probably want to simulate the operation of your circuit to find out if it will meet the functional and timing requirements developed during the specification process. If you have created one or more test benches as a part of your design specification, then you will use a simulator to apply the test bench to your design as it is written for synthesis (a functional simulation) and possibly using the post-synthesis version of the design as well.

For design documentation

The structured programming features of VHDL, coupled with its configuration management features, make VHDL a natural form in which to document a large and complex circuit. The value of using a high-level language such as VHDL for design documentation is pointed out by the fact that the U.S. Department of Defense now requires VHDL as the standard format for communicating design requirements between government subcontractors.

As an alternative to schematics

Schematics have long been a part of electronic system design, and it is unlikely that they will become extinct anytime soon. Schematics have their advantages, particularly when used to depict circuitry in block diagram form. For this reason many VHDL design tools now offer th ability to combine schematic and VHDL representations in a design.

As an alternative to proprietary languages

If you have used programmable logic devices in the past, then you have probably already used some form of hardware description language (HDL). Proprietary languages such as PALASM, ABEL, CUPL and Altera's AHDL have been developed over the years by PLD device vendors and design tool suppliers, and remain in widespread use today. In fact, there are probably more users of PLD-oriented proprietary languages in the word today than all other HDLs (including Verilog and VHDL) combined.

The FPGA/ASIC Design Process

The following diagram shows a simplified design process including both synthesis and simulation, assuming that the target of the process is one or more programmable logic or ASIC chips. The key to understanding this process, and to understanding how best to use VHDL, is to remember the importance of test development. Test development should begin as soon as the general requirements of the system are known.

Where does VHDL fit in this diagram? VHDL (along with other forms of entry, such as schematics and block diagrams), will be used for design entry: after being captured into a design entry system using a text editor (or via a design entry tool that generates VHDL from higher-level graphical representations), the VHDL source code can be input to simulation, allowing it to be functionally verified, or can be passed directly to synthesis tools for implementation in a specified type of device.

On the test development side, VHDL test benches can be created that exercise the circuit to verify that it meets the functional and timing constraints of the specification. These test benches may be entered using a text editor, or may be generated from other forms of test stimulus information, such as graphical waveforms.

For accurate timing simulation of post-route circuits, you will probably use a timing model generation program obtained from a device vendor or third party simulation model supplier. Model generation tools such as this typically generate timing-annotated VHDL source files that support very accurate system-level simulation.

Why Should You Use VHDL?

Why choose to use VHDL for your design efforts? There are many likely reasons; if you ask most VHDL tool vendors this question, the first answer you will get is, "It will dramatically improve your productivity." But just what does this mean? Can you really expect to get your projects done faster using VHDL than using your existing design methods? The answer is yes, but probably not the first time you use it, and only if you apply VHDL is a structured manner. VHDL, like any high-level design language, is of most benefit when you use a structured, top-down approach to design. Real increases in productivity will come later, when you have climbed higher on the VHDL learning curve and have accumulated a library of re-usable VHDL components. Productivity increases will also occur when you begin to use VHDL to enhance communication between team members, and take advantage of the more powerful tools for simulation and design verification that are available.

How will VHDL increase your productivity? By making it easy to build and use libraries of commonly-used VHDL modules, VHDL makes design reuse feel natural. As you discover the benefits of reusable code, you will soon find yourself thinking of ways to write your VHDL statements in ways that will make them general-purpose; writing portable code will become an automatic reflex.

Another important reason to use VHDL, and another way that your productivity can be improved (or destroyed, if you are not careful), is the rapid pace of development in electronic design automation (EDA) tools and in target technologies. Using a standard language such as VHDL can greatly improve your chances of moving into more advanced tools without having to re-enter your circuit descriptions. Your ability to retarget circuits to new types of device targets will also be improved by using a standard design entry method.

Why Should You Not Use VHDL?

To be fair, let's examine some of the most common reasons why you might not want to use VHDL as your primary method of design entry.

Steep learning curve?

As described previously, there is a popular (and to some extent deserved) perception that VHDL is hard to learn and use. While it is true that VHDL is a big and complex language, there is certainly no need to learn all of its features before beginning with your first few designs. Many of the advanced (and obscure) features of VHDL are useful only for simulation modeling, or are intended for advanced configuration management. These parts of the language are rarely used when you are designing for synthesis. If you stick with well-established coding conventions, then you should have little trouble getting started. As you gain confidence and experience in the language, you will naturally begin to explore some of the more advanced features.

Scarcity of low-cost tools?

VHDL related design tools have historically carried a higher price tag than other alternatives, due in part to the fact that most of these tools were only available as smaller parts of large, workstation-based EDA tools. More recently, however, lower cost simulation and synthesis tools have appeared that make VHDL tools more competitive. FPGA vendors are now offering low-cost, but powerful synthesis tools optimized for their devices, and lower-cost simulation packages are also beginning to appear.

Lack of technology-specific features?

One of VHDL's major strengths, its general-purpose design, is also one of its primary weaknesses when compared to other existing tools, most notably PLD and FPGA design tools. While a PLD language such as PALASM, ABEL or CUPL provides specialized language features for accessing common device features (such as flip-flops and I/O buffers) and for specifying physical data such as pin numbers, VHDL provides no such features. This means that synthesis tool developers must publish conventions (such as special attributes, comment fields or VHDL coding standards) to allow their users to pass such information into the synthesis tool. These conventions are rarely common between different tools, so users are faced with a choice: either write completely technology- independent VHDL code that may not be appropriate for the target device or technology, or write VHDL code that is specific to a particular vendor's tools.

This problem is actually not as bad as it sounds; the conventions published and used by VHDL synthesis vendors are designed in such a way that their use does not conflict with the use of similar features in alternative tools. Special attributes for pin numbers, for example, will be ignored by tools that do not have those attributes defined. Most probably, if you will be writing VHDL source code that is intended for use with more than one synthesis tool, then you will use VHDL's design management and modularity features to isolate the technology-specific statements to easily-modified sections of your design.

Lack of VHDL applications expertise?

If you have made extensive use of PLDs and FPGAs, you may have become used to calling your local device vendor representative for help and advice. PLD and FPGA applications engineers generally possess craniums full of useful knowledge about PLD and FPGA applications, and are often well versed in the use of PLD and FPGA tools. Unfortunately, these same application engineers may not be completely familiar with VHDL, and are probably not experts in using VHDL for PLD and FPGA applications. This situation is changing, however, as PLD and FPGA vendors adopt VHDL as a standard design entry method for their devices.

What About Verilog?

When it comes to hardware description languages, VHDL is not the only game in town. Verilog HDL has been around for many years as well, and has a large number of fans who use it for both simulation and synthesis.

How does Verilog differ from VHDL? First, Verilog has some advantage in availability of simulation models. Soon after its introduction (by Gateway Design Automation in the mid 1980s), Verilog established itself as the de facto standard language for ASIC simulation libraries. The widespread popularity of Verilog HDL for this purpose has left VHDL somewhat behind in support for a wide range of ASIC devices. The VITAL initiative enhances VHDL with a standard method of delay annotation that is similar to that used in Verilog. VITAL will make it easier for ASIC vendors and others to quickly create VHDL models from existing Verilog libraries.

Another feature that is defined in Verilog (in the Open Verilog International published standard) is a programming language interface, or PLI. The PLI makes it possible for simulation model writers to go outside of Verilog when necessary to create faster simulation models, or to create functions (using the C language) that would be difficult or inefficient to implement directly in Verilog.

In VHDL's favor are its adoptance as an IEEE standard (standard 1076) and its higher-level design management features. These design management features, which include the configuration declaration and VHDL's library features, make VHDL an ideal language for large project use.

In most respects, however, VHDL and Verilog are identical in function. The syntax is different (with Verilog looking very much like C, and VHDL looking more like Pascal or Ada), but basic concepts are the same. Both languages are easy to learn, but hard to master. Once you have learned one of these languages, you will have no trouble transitioning to the other.

The bottom line is this: arguing about language features is pointless, and best left to late night sessions at the local tavern. You should choose a set of tools to help you do your job. Select these tools based on their features and their support for your specific application and technology. Don't choose a hardware description language based only on how it looks.

What About PLD Languages?

Many new users of VHDL have previous experience with simpler PLD-oriented languages such as PALASM, ABEL or CUPL. How do these languages differ from VHDL? The most important thing to keep in mind about VHDL and these simpler languages is that VHDL was developed primarily as a general-purpose simulation modeling language, while PLD languages were developed as specialized languages for capture and synthesis of relatively small digital circuits.

PLD languages, because of their modest roots, are generally quite simple in the feature sets and easy to master. They include features (such as built-in register primitives, pin numbering and output polarity controls) that are specific to the PLD and FPGA devices that they are intended to support. Because these languages have been designed specifically for synthesis, they do not include features (such as delay specifiers) that are not synthesizable.

Perhaps just as important as the general features of PLD and FPGA design languages is their low cost: many of these tools are actually available free from vendors of PLDs and FPGA, or are sold at prices far below what you would expect to pay for VHDL or Verilog based synthesis tools.

[NEXT CHAPTER]



Copyright 1995, Accolade Design Automation, Inc., All rights reserved.

For more information about this Web Page contact webmaster@acc-eda.com.