For the data level, the Profile Interchange Format (PIF) syntax, as initially proposed by S. Duvall [42], has been chosen as starting point and refinements and extensions have been added. Most importantly, obligatory names for every instance of PIF objects and orthogonal language constructs have been introduced. The ASCII version of the PIF is used as an inter-site data exchange format to transfer design information between different hardware platforms.
The binary form of PIF [71] is used as the storage format and for inter-tool communication between applications on a single hardware platform. The binary format uses LISP-conforming constructor nodes (CONS nodes) for the mapping of all ASCII PIF expressions to binary form. To improve performance and data compactness, additional features have been added, such as a symbol hash table for fast object access by name and a compressed array storage format for large arrays which typically occur in TCAD applications for physical values defined over multidimensional grids.
The binary Profile Interchange Format (PIF) database which holds the semiconductor device structure information is accessed via the PIF Application Interface (PAI). The PAI is structured in seven functional layers with strict interfaces between each other. The four most important layers and two applications that use different functional interfaces of the PAI are shown in Figure 2.7.
Figure 2.7: Structure of the PIF application interface
Each layer is responsible for a unique storage concept of the whole PIF Binary File (PBF), with increasing functionality and abstraction towards the upper layers. The application interface works on PBFs (inter-tool format); for data exchange with other hosts and for making the contents of the database human-readable, the PIF ASCII form (inter-site format) is used. The PIF binary file manager (PBFM), implemented as a separate application on top of the PAI (see Figure 2.7), converts PIF files between these two formats.