1LIBPAT(3) cao-vlsi reference manual LIBPAT(3)
2
3
4
6 PAT - Generic pattern data structure
7
8
10 PAT is a generic data structure supporting vlsi concepts. It allows
11 representation of a sequence of simulation patterns in a data struc‐
12 ture.
13
14
15 The goal of PAT is to define an ad hoc single data structure (object),
16 with well known fixed meaning for each concept manipulated in pattern
17 description. So any tools that needs to access simulation patterns can
18 be build upon it, using these structures.
19
20
21 For each object (data structure), a set of functions has been defined
22 in order to add, delete or access it. These functions are defined in a
23 low-level library libPat106.a. Some other functions are higher level.
24 They are defined in a high-level library libPhl106.a. There are also
25 some parsers-drivers. A parser reads a pattern description file in a
26 given format and build up a complete PAT data base. A driver creates a
27 text file in a given format from a PAT data base. A pat format
28 parser-driver is available in the libPpt106.a library.
29
30
31 Pattern description envolves the following notions (for further details
32 see pat(5)):
33
34
35 input port controlled by the user
36
37 output signal or port observed by the user
38
39 initialization forcing the value of a register
40
41 pattern sequence list of values to be forced on inputs or to be
42 checked as the result of the simulation on outputs
43
44
45 The input-output list is represented by two data structures: pagrp con‐
46 tains informations relative to actual or virtual arraies and, paiol
47 represents a one-bit input-output. Both are simply chained lists. How‐
48 ever, to make a more efficient access to paiol structures, they are
49 organized in a table. So, a paiol can also be addressed using an off‐
50 set.
51
52
53 Another group of data structures is used to represent a pattern. paini
54 contains values to be forced into registers before processing the pat‐
55 tern. An event (a modification of value) on an input-output is given
56 by a paevt structure. A third structure, papat gathers all information
57 concerning a pattern (including initializations - paini - and events -
58 paevt).
59
60
61 A pacom is used to represent a comment.
62
63
64 Finally, all these structures can be accessed through a unique struc‐
65 ture, paseq, designed to represent a complete sequence of simulation
66 patterns.
67
68
70 In order to use PAT, concepts on use of libraries are needed. And,
71 since these libraries are under development, the code is subject to
72 change.
73
74
75 To enable work, a static version of each library is always present for
76 the user. Libraries and header files are suffixed by a number (the
77 library's version). The programmer can prefer to work with an earlier
78 version of a library rather than the most recent one. However, it is
79 recommended to adapt softwares to libraries as soon as possible in
80 order to spotlight potential compatibility problems before old
81 libraries are removed.
82
83
84 A makefile is necessary for all PAT applications. This is required
85 because any soft must be easily recompilable, and knowing the needed
86 libraries for a PAT based program is not an easy matter. It can't be
87 achieved by an other way, so do use makefile.
88
89
90 In terms of software organization, PAT is splitted into two libraries
91 for the basic functions, a header file for structures and variable dec‐
92 larations and, up to now, one parser-driver library for pat format.
93
94
95 It is to be noticed that library's version number is incremented when,
96 at least, one function composing the library has been modified. There‐
97 fore, PAT libraries may evolve independently form each other.
98
99
100 Here follows the list of the libraries and their contents.
101
102
103 libPat106.a: pat_addpaseq, pat_addpagrp,
104 pat_addpaiol, pat_addpapat,
105 pat_addpaevt, pat_addpaini, pat_addpa‐
106 com, pat_frepaini, pat_frepaiol, pat_frepacom,
107 pat_frepapat, pat_frepaevt, pat_crtpaiol
108
109
110 libPhl106.a: pat_debug, pat_getcount
111
112
113 libPpt106.a: pat_lodpaseq, pat_savpaseq, pat_drv‐
114 pat, pat_prspat
115
116
117 The libraries are organized in such a way that no cycle can appear
118 through calls. It means that, if in a given library a function calls
119 another function in another library, then none of the functions of this
120 one does call any function that belongs to the first library.
121
122
124 In order to use PAT libraries, one needs something like this in its
125 makefile:
126
127 HEADER = -I/labo/include
128 LIB = -L/labo/lib -lPat106 -lPhl106 -lPpt106 -lMut315
129
130
132 mbk(1), pat(5)
133
134
135
136
137
138
139ASIM/LIP6 October 1, 1997 LIBPAT(3)