The Advanced Intermediate Representation with Extensibility (AIRE) specifications address the HDL user's need for efficient mechanisms for sharing of design information between tool components. The AIRE specifications includes coordinated internal intermediate representation (IIR) and file intermediate representation (FIR) specifications. This document specifies the IIR; a companion document specifies FIR.
Existing tools, by their very nature, are already tied to proprietary representations and generally have little ongoing development resource available with which to change the underlying design representation. For practical reasons, such tools are unlikely candidates for use of a new intermediate representation, such as AIRE.
AIRE targets tools beginning early in the development cycle or at a major system redesign. AIRE's designers have concentrated on providing powerful new capabilities intended to facilitate system design well into the next century rather than operating within the tight constraints of backward compatibility. AIRE delivers on key user requirements including performance, capacity, portability, extensibility, security, availability and reusability; keys to advanced system design.
This chapter introduces AIRE's file intermediate representation through a discussion of this document's purpose, and an overview of the specification's remaining chapters and an introduction to the specification change process. Hypertext renderings of this document provide linkages, beginning with this chapter, into the remainder of the document.
As an extensible representation, your version of this document may include non-core extensions. For example, extensions may support VHDL language extensions, other languages or implementation-specific information. Additions to the core AIRE representation are the result of a careful coordination process open to all those using the intermediate representations. All such extensions are denoted by underlined text, as in extension.
Through compliance with this specification, a development group should be able to design and develop inter-operable implementations of the file representation (foundation) or component tools which work with information present in the file representation (applications).
This FIR specification is designed to allow transport of the representation between machines of differing architectures. The FIR data will be written according the writer's architecture. There will be information in the FIR that specifies the architectural assumptions, so the data can be transformed on reading. The extraction of an IIR (Internal Intermediate Representation) from the FIR can use mechanisms described in this document.
The FIR like the IIR is useful following source code analysis, integration of separately analysed units, elaboration, in-line expansion, machine-independent optimization, backend code generation/synthesis and execution (simulation). The FIR is the likely mode of integration of component tools from different development groups.
AIRE's purpose is to meet the evolving needs of advanced tool developers. Therefore, the specification is still evolving. Some changes to the core specification are still being made as a result of experience with early implementations. Implementation-specific extensions are being added to the core specification. For the latest information on AIRE, please join the AIRE mail reflector by sending a request to:
aire-request@vhdl.org
and tracking on-line copies of the AIRE specifications via the following WWW sites:
http://www.vhdl.org/~aire/
http://www.ftlsys.com/aire/
http://www.ece.uc.edu/~paw/aire/
http://www.mtl.com/projects/savant
...
Intermediate representations have been moderately successful in facilitating Ada compiler implementations. DIANA[] serves as the basis for Ada compilers from the Ada Group Ltd.[]., Bell Labs[], Burroughs[], The University of California[], Berkeley[], Intermetrics[], The University of Karlsruhe[], Rational[], Rolm[], SoftTech Microsystems[], Stanford[], and Verdix[].
IVAN[] was initially conceived, in 1985, as the corresponding interface description language IR for VHDL. Unfortunately IVAN was not nearly as successful as DIANA. It never saw wide-spread use in the development of VHDL compilers beyond the initial Intermetrics VHDL implementation Relatively few implementations of IVAN are believed to remain in use and no new development efforts are believed under way using IVAN
In the late 1980s, CAD Language Systems (CLSI) developed an IR and associated VHDL analyser. This analyser achieved substantial commercial success and is still in use by some VHDL compilers. CLSI's intermediate representation is proprietary and limited to representation of IEEE Std. 1076-87. Experience with CLSI's intermediate identified several intrinsic design decisions which were later recognized to limit an implementation's performance.
For several years, ending in 1991, an IEEE Design Automation Standards Committee (DASC) Working Group attempted to develop VIFASG []. This effort is generally believed to be closely patterned after CLSI intermediate. Despite substantial effort by the working group, a standard failed to materialize and the IEEE has withdrawn the associated PAR. The group's inability to reach a standard is generally attributed to competing commercial concerns and sub-optimal technical characteristics.
The unsuccessful VIFASG effort was picked up by Leda SA, updated to represent IEEE Std. 1076-93, and is currently the basis for an analyser product by Leda []. While this interface has seen some commercial success, it has less than optimal compaction, leads to relatively slow tools, does not benefit from IDL advances over the last five to ten years and does not address the complete design life-cycle of VHDL and Verilog designs. Leda's interface is supported by an expensive, single-source implementation. Until at least recently, Leda's interface has also been proprietary.
By the middle of 1995, HDL "power" users and advanced tool developers recognized that a fundamentally new intermediate representation was needed. Today, AIRE offers a widely-available, high-capacity, high-performance intermediate which takes maximal advantage of contemporary, object-oriented software techniques. Multiple IIR implementations are available, including a free non-commercial implementation and at least one low-cost commercial implementation. Over a dozen advanced applications using AIRE's IIR foundation are in development.
The FIR follows the IIR class hierarchy (See the AIRE Internal Intermediate Representation). The record names will begin with FIR instead of IIR. A base record class, called FIR, is located at the top of the class hierarchy. Each record class will be composed of the root (FIR) data first, followed by the data for each derived class as the hierarchy is descended. The IR class hierarchy is shown abstractly in Figure 1 on page 11. Records of a specific record class are differentiable by an enumerated value denoting the records's IR_Kind.
At the start of an FIR will be a header that has information on the FIR. It will contain information on the version of FIR, on the source architecture of the IR for transformation of the data to the reading architecture and on other data about the FIR.
FIGURE 1.
Structure of IR1.4 Document Structure
The remainder of this specification describes requirements for and details of the internal intermediate representation. The material may loosely be divided into requirements, basic data types, class hierarchy, and hierarchy details (many chapters).
Chapter 3 describes the basic file layout and the basic data types used to specify the record structure within specific classes. These basic data types include integers, characters, and floating point values with specific ranges.
Details of the FIR base class and IR_Kind enumeration are found in Chapter 5. The IR_Kind enumerated type distinguishes between the classes in the file.
Chapter 6 through Chapter 16 describe the IR_Kind, and data layout for the various classes descended from the FIR base class. Each chapter begins with a table illustrating the class derivation hierarchy described by the following chapter. Then distinct sections describe each intermediate and terminal derived class.
Finally, Chapter 18 records changes made to this document from one version to the next. This log begins with the trial implementation draft (Version 2.3).
On-line copies of this specification provide hypertext linkages, generally highlighted by a viewer or browser. These linkages allow the reader to rapidly navigate from use of a particular identifier back to its definition. In a like fashion the reader may directly step from a table of contents or index entry to the corresponding point in the document's body. Since these linkages greatly facilitate usage of the specification, access to an on-line version of this specification is strongly recommended.
1.5 Change Review Process
Changes and extensions to AIRE are accomplished by a consensus-process open to all those implementing substantial tools compliant to AIRE. Changes to a complex, shared document involving multiple implementations with distinct (and often conflicting) requirements are never easy. It is always easier for someone to "do their own thing" at the price of inter-operability. A commitment, by all parties involved in AIRE, to real inter-operability and fully open communication is essential.