The PIF application layer provides a set of functions to read and write the
list oriented data from or to a PIF file respectively.
Figure 1.2:
Example point list as used in PIF ASCII files.
|
Figure 1.3:
Example line list as used in PIF ASCII files.
|
Fig. 1.2 and Fig. 1.3 give an example for a point and
a line list respectively as they are stored in the intersite
file format. The PAL defines several functions to read and write such
lists into memory and to disk respectively. For the case of the point list a set
of functions to read data is:
- palReadPointList. Reads the list into a pre-allocated memory
region. The function does not check for memory overflow, thus the user has to
take care that the region provides enough memory to hold the whole list. A
function to count the number of points in the list (palCountPoints) is
provided to help in determining the needed amount of memory.
- palAllocReadPointList. First allocates data suitable to store the
list and then reads the data into the allocated memory region. This function
is a front-end to palReadPointList which can be used in supported
programming languages that are capable of runtime memory allocation (C,
C++, LISP).
The corresponding write functions for a point list are:
- palWritePointList. Writes a list stored in a memory region to the
file.
- palWriteFreePointList. First writes a list stored in a memory
region to a file and frees the region afterwards. This function may only be
used for point lists that are stored in dynamically allocated memory regions.
Functions as the ones shown in the above example exist for
all other lists that are stored in a PIF file. The lists can be
categorized into the ones that describe the geometry of a device and the ones
that describe gridding information and quantities. The geometry description
lists are:
- pointList. Holds the coordinates of the geometry. Coordinates may
be stored in one-, two-, or three dimensions.
- lineList. Holds the line information of the geometry. Stores
references to two points.
- faceList. Holds a list of faces of the geometry. A face is defined
as an arbitrary number of either lines or points.
- solidList. Holds a list of solids. A solid is defined as an
arbitrary number of faces.
- segmentList. Defines a set of solids. This is intended to describe
a simulation domain.
- boundaryList. Defines an arbitrary number of faces (two
dimensions) or lines (one dimension) that comprise the boundary of a domain.
- geometryList. Defines a list of segments and a list of
boundaries.
Note that in above definitions of the various geometry elements no constraints
are applied at all. It is, e.g. not defined whether a face or solid describes a
single connected domain, a multiply connected or disconnected domain, or any
domain at all. Indeed there are no such constraints existing in the
PAL. Instead, there exists a 'cookbook' that accurately describes such (and
other) constraints on the data. Unfortunately, the PAL does not implement the
constraints defined in the cookbook simply because it was released too late. As
a consequence several semantically different representations of PIF are
existing today. Another drawback of the PAL is that it does not provide access
to the full functionality of the underlying libraries. Therefore, some of the
higher level libraries are also using functions that are logically beneath the
top level.
Additionally to the above mentioned lists there are also lists that
store grids, quantities and data like segment descriptions. Segment
descriptions are used to assign a name to a region in order to be able to
identify the different simulation domains from within the simulator.
High level libraries were meant to deal with complex tasks like
the modification of the geometry (for topography simulations) or the handling of
grids and quantities stored thereon (grid generation, point location, interpolation).
Fig. 1.4 depicts the architecture of the high level libraries.
Figure 1.4:
High level PIF
libraries. These libraries support the handling of geometry and grid
issues. The grid support library (GRS) provides functions to
interpolate data on a grid. The two-dimensional geometry support
(G2S) and the three-dimensional geometry support (G3S) libraries are
meant as an aid for two-dimensional and three-dimensional topography
operations respectively. The C list support (CLS) library provides a
distinct view of the PIF data used in the graphical PIF editor
(PED [7]). The material server (MAT) defines a database of
materials used in TCAD simulations.
|
High level libraries are built on top of the PAL. With some exceptions they use
functions as the ones described in the previous section to transfer data from
the file representation into memory and vice versa. Due to the lack of a data
model in the PAL all of the libraries more or less define their own data
representation.
2003-03-27