1.1.1 VISTA

VISTA, the Viennese Integrated System for TCAD applications, is a framework that was designed to meet all needs of a TCAD user. VISTA introduced three levels of abstraction [3].

The data level of the VISTA system is realized as the PIF file format and a set of supporting libraries [4,5]. It is intended as a data base for TCAD simulation data. The PIF implementation provides an ASCII and a binary representation of the data and a conversion tool to convert data between the two representations. The ASCII representation (intersite representation) is used to transfer PIF files between different architectures1.1, and is based on a proposal by S. G. Duvall [6]. The binary representation provides fast access to the data and was intended to exchange data between tools (intertool representation). It follows a client server architecture that was realized by several layered low level libraries (the so-called PIF application interface -- PAI) which handle the data access. Language bindings of the PAI application layer (PAL) ensure availability of the data in the programming languages C, FORTRAN, and LISP.
Figure 1.1: The PIF application interface (PAI) is comprised of several layered libraries. They are organized hierarchically, where each layer presents a certain level of abstraction. The file layer is responsible to handle the I/O operations with the underlying operating system. The (optional) networking layer adds a way to transparently access the data over a network. The functional interface of the networking layer is equivalent to that of the file layer. The caching layer takes care to hold a certain amount of the PIF data in memory in order to speed up data access. The basic and interface layers provide a structured view of the PIF data. Finally, the top level layer (PAL) comprises the application programming interface (API) as it is used from within the tools (simulator).
\begin{figure}\centering\psfig{file=pics/pif, width=0.3\linewidth}\par\end{figure}

Data in a PIF file are organized as a set of nested lists. The PAI presents access to this data by providing functions to read lists into memory and to write lists to file respectively. The functions closely follow the PIF syntax and are implemented according to the procedural programming paradigm. Although the PAL offers structural access to the data it does not contain any compound data types (structs, classes and data manipulation functions or methods respectively) as they are used in state of the art, object-oriented programming paradigms. Therefore, high level libraries and tools have to provide their own basic data models to hold the data and solve the targeted problem. Fig. 1.1 depicts the stack of low-level PIF libraries.

In the following a short overview of the functionality provided by the various low- and high-level libraries is sketched to point out the functional programming paradigm according to which the whole set of PIF libraries was designed.