This layer implements a procedural interface of the PIF syntax, providing administration, access and inquire functions. To improve performance, it uses a structure of the basic layer array node to implement the interface layer nodes. A reserved field of the header word of a basic layer node Fig. 6.4 is used to store the type information of the interface layer node (labelled IL node type) as an integer value.
The tag field of the basic layer node contains the CAR type identifier, stating that this node contains CAR pointers to other nodes as data values. The flags field of the basic layer node has the Array and Cdr bits set, indicating that the interface layer node may have successors (pointed to by the CDR pointer) and multiple CAR data values (the number of which is stored in the Size field of the node).
The corresponding name of the object and all related information is stored in an automatically generated syntax table. This reduces the file size of a PLB significantly.
The IL node type identifies the PIF object type like pointList, geometry or valueType which are defined by the syntax. This field is automatically checked upon creation of a node through the syntax table. All access functions and the syntax table are generated automatically from a syntax description an example of which can be seen in Fig. 6.8.
The snapshot construct is defined as a named PIF object, whose name can be used to search for the object. It has an optional comment, an optional list of references through the nameList construct and an optional list of attributes. Therefore, the node will have four specific slots. The first slot will hold the unique name of the snapshot. The second will hold the comment, the third the references and the last the attribute definition. This information is also used to limit the search depth when traversing the tree (in case not all slots have to be searched) on PLB inquiries, and to check the correctness of the PLB upon node creation.
Figure 6.9: Example of an interface layer data structure
The previously mentioned example of a reference construct represented with interface layer nodes is shown in Fig. 6.9. The ref and valueList constructs have specific interface layer node representations, whereas the symbol name and the valueList indices are genuine basic layer nodes, since they just represent primitive data values. Compared with the basic layer-only representation of the same reference construct in Fig. 6.6, a significant reduction in the number of required nodes and total storage size can be seen, resulting in faster data access.
Since the syntax defines many fields optional to allow a wide range of possible constructs, additional ``language rules'' see Appendix A are needed to define a well constructed PLB which can be understood by different simulators. Many of these rules are implemented by the application layer, others are ensured by wafer-state maintenance tools like the VORONOI [Hala94] re-gridding and interpolation facility, and still others are taken care of by task-level programs like the SFC (Simulation Flow Controller) [IuE94].