Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Книги2 / 1993 P._Lloyd,__C._C._McAndrew,__M._J._McLennan,__S._N

.pdf
Скачиваний:
51
Добавлен:
11.03.2016
Размер:
14.08 Mб
Скачать

S. Halama et al.: The Viennese Integrated System for Technology CAD Applications

217

{

1* local variables *1 paiObject valuelist, ref; paiLong points[2];

points [0]

'" 1;

 

 

 

 

 

points [1]

= 2;

 

 

 

 

 

ref = pilCreateRef(

 

1* parent nameList construct *1

namelist,

 

pointlist,

 

1*

referenced pointList P

*1

pilCREATEJlESTED);

 

1*

create a new reference construct

valuelist = pilCreateValueList(

 

 

 

ref,

 

1* parent ref construct *1

pilDATA..INTEGER,

 

1*

data type is integer

*1

points,

 

1*

data points indices

*1

*1

0,

2,

 

1*

which values to write

pilCREATEJlESTED);

 

1*

create a new valueList construct

 

Figure 15: Interface layer code example.

 

 

{

 

 

 

 

 

 

1* local variables *1

 

 

 

 

 

paiDbject linelist;

 

 

 

 

 

paiLong endindices[l];

 

 

 

 

 

paiLong objdx[2];

 

 

 

 

 

endindices[O] = 2;

 

 

 

 

 

objdx[O]

= 1;

 

 

 

 

 

objdx[1]

= 2;

 

 

 

 

 

linelist = palWriteLineList1(

 

 

 

parent,

1*

handle to PIF file *1

 

 

ImyLine",

1*

name of the lineList *1

 

 

1,

 

1*

number of lines *1

 

 

endindices,

1*

endindices of the lines *1

 

2,

 

1*

number of used points *1

 

 

pointlist,

1*

handle to referenced pointlist P *1

objdx,

1*

point indices *1

 

 

palCREATEJlEW)

1*

create a new lineList *1

 

 

}

 

 

 

 

 

 

 

Figure 16: Application layer code example.

 

 

(lineList ImyLine"

 

 

 

 

 

(nameList (ref P (valueList

1 2))))

 

 

Figure 17: PIF construct produced by example code.

218S. Halama et al.: The Viennese Integrated System for Technology CAD Applications

4.4PIF Binary File Manager

As mentioned above, the whole PAl works on a binary representation of the data for fast access. This type of data storage is optimized for architecture-dependent coupling of simulators in non human-readable form. For data exchange via eMail or FTP, or making PLBs human-readable, there is the ASCII PIF representation holding the same information. The PBFM (Fig. 18) is able to convert the binary to ASCII PIF and vice versa. Thus data exchange between machines with different byte ordering (little and big endian) and floating point formats (e.g. IEEE, VAX and IBM) is possible by converting PLBs to ASCII PIF and back to binary format on a machine with different architecture. The maintenance functions of the PBFM allow the user to list all PLBs of a PBF, delete any PLB within a PBF, repair a not cleanly closed PBF and check PIF ASCII files for lexical correctness.

~;aIChOCk

(PIF

(pointL.st

Binary (intertool)

ASCII (intersite)

Figure 18: Using the PIF Binary File Manager.

4.5Semantic Issues and High-Level Functionality

The PIF itself, be it its ASCII or binary form, only defines a syntax. It does not prescribe any interpretation of the stored TCAD data. This is one issue which accounts for the flexibility and general-purposeness of the PIF. On the other hand, many ambiguities arise from the possible multilateral description of the same physical problem in terms of PIF syntax. There are many ways to describe a geometry, ambiguities in recognizing a grid or an attribute, and general PIF semantics. These ambiguities arise from different coordinate systems, hierarchical or non-hierarchical geometry specifications and using one or many lists of primitive geometric objects, with or without references to other PLBs. Grids can be of unstructured or tensor product type, defined on a segment or the whole geometry and attributes can be defined on the grid, its points, lines, faces I)r solids. Moreover, the application interface has to know what to do with different units of measure, when to write and what to

reference in a snapshot, geometry or written construct, where to define attributes, what attribute types to use, ... ).

However, ambiguities and multilateral descriptions are a general problem, because the more general a syntax is and the more functionality a procedural interface has, the more semantic standardizations are needed to make applications work properly in a common environment.

S. Halama et al.: The Viennese Integrated System for Technology CAD Applications

219

In order to unambiguously interpret PIF data, there have to be both semantic constraints which applications have to adhere to (losing PIF flexibility), and ambiguity resolution mechanisms built into the application interface. However, only few additional semantic rules specified in the PIF CookBook [26] have to be obeyed. The PAl takes care of different coordinate systems through a transformation matrix applied to geometrical data, and accounts for different units of measure through a unit conversion system (e.g. point coordinates can be written in micrometers and read in inches, different spatial axes can have different units). It automatically resolves links to other PLBs and provides a multitude of inquiry functions for locating a certain PIF construct wherever it appears in the PLB.

The more severe semantic differences between simulators (e.g. a simulator working on an unstructured grid coupled to a simulator using a tensor product grid) are dealt with in the PIF ToolBox, comprised of generic PIF tools such as grid generators, interpolators, attribute and geometry manipulators using the PAl and preparing a PLB according to the semantic standards of the PIF CookBook [26J. However, these tools are controlled by the task level and belong to the tool rather than to the data level.

A particularily difficult problem is the support mechanism for the innumerable different grid types used today. A distinction between tensor product and unstructured grids has been made, because we didn't want to lose an orthogonal grid's unique features by decomposing it into rectangles/cuboids. Therefore the special orthoProduct construct was introduced, which significantly enhances the efficiency of storing tensor product grids while preserving its advantageous structure. However, since the number of different unstructured grid types increases steadily, a specification mechanism for dynamically adding new grid types just by providing a unique name, an interpolation and a decomposition function has been implemented. Using automatic code generation tools, these routines are linked into generic PIF ToolBox functions, thus adding support for the new grid element to the whole framework. Fig. 19 shows some example elements and how they are referenced in a PIF grid. Through using an attribute defined over the faceList it is possible to specify different element types in one and the same grid.

New element types are introduced by specifying the name, dimensionality, number of nodes and a decomposition and interpolation function in a element definition table. After recompiling the PAL, the new element type is known to applications through a unique constant identifier. But most applications need not explicitly take care of new element types: Reading attributes defined over a grid can be done without knowledge of the grid, since there is a generic interpolation function, which is automatically invoked when requesting an attribute value at a location (x, y). The generic inter-

polation routine knows the grid type the attribute is defined on, and correspondingly invokes the orthoProduct interpolation or determines the element in which the re-

quested location lies, then invoking the element interpolation function defined for that element type.

Tensor product grids are supported through the orthoProduct construct. The grid has an origin point, may have different topological and topographical dimensions and each dimension may have a different base vector. Conforming to the PIF syntax, the number of supported dimensions is infinite. The example Fig. 20 shows a tensor product grid of topological dimension 2 lying in three-dimensional space. This capability is needed e.g. to describe distributed boundary conditions of a three-dimensional device.

The assembly of solver matrices is not supported by the PAl, since we believe that this task is very problem-specific and current networks don't exhibit the necessary

220

S. Halama et al.: The Viennese Integrated System for Technology CAD Applications

(grid grd_l

 

 

(pointList pgrd

 

(valueList

•••• )

 

)

 

interpolTRI3()

(faceList fgrd

decomposeTRI3()

(nameList

 

 

(ref pgrd 1 2 3»)

 

(attribute elemgrd

 

(nameList

 

 

(ref fgrd»

interpo'lTRI6 ()

(attributeType

decomposeTRI6()

"elementType")

 

(valueType

 

 

asciiString)

 

(valueList

 

 

"TRI3"

 

 

"TRI6"

 

interpolTETlO()

 

..G -, decomposeTETlO()

)

£~~ ~~:7 interpolPRISM6()

)

)

 

decomposePRISM6()

Figure 19: Support for unstructured grids.

(orthoProduct my_tensor~rid

;the 3D base point (origin

(units "urn")

(valueType (point 3 real)) (valueList 1.0 1.0 0.0))

;the two axis vectors (base

(valueType (vector 3 real)) (valueList 1.0 0.0 0.0

0.01.0 0.0))

;the two axis specifications (axes

(valueType real) (valueRange 0.0 5.0 0.23)

(valueList 0.0 0.1 0.22 0.37 0.4))

)

Figure 20: Tensor product grid example.

S. Halama et al.: The Viennese Integrated System for Technology CAD Applications

221

performance to transfer these large amounts of data in an acceptable time frame to a solver server. The "know how" of a simulator is always contained in its physical models, the knowledge of which is essential in matrix assembly. A simulator using a standard matrix assembly method would lose much of it's advantages. This holds true for grid generation and the partial differential equation solver too.

4.6Performance Evaluation

Besides the goals of classical intertool PIF implementations featuring object-oriented- ness (PIF/Gestalt, [14]) or suitability for TCAD environments (BPIF, [13]) our implementation stresses efficiency in terms of run-time performance and database compactness. Thus, writing and reading 10000 points (in three-dimensional space) of a PIF pointList takes 0.51 and 0.66 seconds (real time) respectively on a DECstation 3100; the database written is 250 kB in size. Therefore, linking a TCAD application to the VISTA environment is not a performance issue. In contrast to a client-server approach, the administrative and communication overhead is negligible for any application consuming a few seconds of CPU time - the commonly used argument, that PIF is not practical because of its low run-time performance no longer holds true.

5.Implementation of the VISTA User Interface

5.1Structure

The structure of the VISTA user interface is shown in Fig. 21. The bottom layer is the X Toolkit[18J, an object-oriented subroutine library, designed to simplify the development of X Window applications. The X Toolkit defines methods for creating and using widgets, which appear to the user as pop-up windows, scrollbars, textediting areas, labels, buttons, etc. Basic functionality is provided by the generic Athena widgets, which are part of the MIT Xll distribution. We have decided to use this widget set rather than any other open standard, because a migration from these generic widgets to another widget set (like OSF/Motif, or Open Look) is significantly easier than vice versa.

A widget-wrapping layer has been put on top of these widgets in order to achieve some widget-set independence. All widgets are created and modified via specific functions rather than via the generic interface of the X Toolkit. This facilitates the potential migration of the entire user interface onto another X Toolkit-based platform.

In addition specialized VISTA widgets have been developed on top of the widgetwrapping layer for supporting TCAD-related information flow. The VISTA widgets are also created and accessed via specific functions, so that they can more easily be replaced by other widgets, should the need arise.

The top layer, the VUI (VISTA User Interface) library serves two purposes. It provides some often needed higher-level operations and it simultanously contains most of the policy which is shared among VISTA applications. In other words, the VUI library takes care that different parts of VISTA look alike and behave similar. Interactive applications (like visualization clients or the device editor) have their own VUI-based user interface, whereas applications requiring no user interaction (like simulators or converters) are provided with a front-end user interface which is executed by the XLISP interpreter.