1ABL(1) cao-vlsi reference manual ABL(1)
2
3
4
6 abl - Prefixed representation for boolean functions
7
8
10 This software belongs to the ALLIANCE CAD SYSTEM developed by the ASIM
11 team at LIP6 laboratory of Université Pierre et Marie CURIE, in Paris,
12 France.
13
14 Web : http://asim.lip6.fr/recherche/alliance/
15 E-mail : alliance-users@asim.lip6.fr
16
18 libablmmm.a is a library that enables to represent a boolean function
19 in a LISP-like form. An ABL is a prefixed internal representation for a
20 boolean function having standard operators as OR,NOR,NAND,XOR,NOT and
21 AND. An ABL is only made up of doublets. A doublet is composed of two
22 fields which are accessible by the functionnal #define CAR and CDR. A
23 doublet is implemented with a MBK chain_list.
24 Expression is the generic term for a boolean function represented by an
25 ABL. An expression can be an atomic expression or an operator expres‐
26 sion. The function f = a is represented by an atomic expression whereas
27 f = (or a b) is represented by an operator expression. An atomic
28 expression is made up of a single doublet having the NEXT pointer equal
29 to NULL and DATA pointer equal to the identifier pointer. A constant
30 atomic expression is an atomic expression having the string "'0'" or
31 "'1'" as identifier.
32 An operator expression is more complicated than an atomic expression.
33 It's a list of items, the first item is the head operator of the
34 expression and the following items are the arguments of the expression.
35 It's possible to go trough the arguments by calling the functionnal
36 #define CDR. Then each argument is accessible by the functionnal
37 #define CAR. An argument can be recursively an atomic or an operator
38 expression. The arity of an operator expression is the number of argu‐
39 ments of the first level.
40 Functions are divided into two groups, the low level functions are
41 written with #define and are used to manage the ABL internal form, the
42 high level functions are used to manage the boolean expressions. All
43 functions are defined in the file "prefbib.c" (#define in "logmmm.h").
44
45 Functionnal #define
46
47 ATOM - checks the kind of an expression (atomic or oper‐
48 ator expression).
49
50 CAR - returns the DATA pointer of a doublet.
51
52 CADR - returns the DATA pointer of the NEXT pointer of a
53 doublet.
54
55 CDR - returns the NEXT pointer of a doublet.
56
57 OPER - returns the operator number of an operator
58 expression.
59
60 VALUE_ATOM - returns the associated char * of an atomic
61 expression.
62
63 Functions and procedures
64
65 addHExpr - adds a new arguments at the head of an operator
66 expression.
67
68 addQExpr - adds a new arguments at the queue of an operator
69 expression.
70
71 anyExpr - returns the value of a logical OR applied on the
72 results of the application of a function on the
73 arguments of an operator expression.
74
75 changeOperExpr - changes the operator of the head of an expres‐
76 sion.
77
78 charToOper - converts an operator string into an operator num‐
79 ber.
80
81 copyExpr - copies an expression.
82
83 createAtom - creates an atomic expression.
84
85 createBinExpr - creates a binary operator expression with an
86 eventual merging of the operator.
87
88 createExpr - creates the head of an operator expression.
89
90 deleteNumExpr - removes the i-th argument in an operator expres‐
91 sion.
92
93 devXor2Expr - converts XOR 2 to OR-AND.
94
95 devXorExpr - removes XOR in an expression.
96
97 displayExpr - displays an expression in a prefixed notation.
98
99 displayInfExpr - displays an expression in infixed notation.
100
101 equalExpr - checks that two expressions are strictly equal.
102
103 equalVarExpr - checks that two expressions are syntactically
104 equal.
105
106 everyExpr - returns the value of a logical AND applied on the
107 results of the application of a function on the
108 arguments of an operator expression.
109
110 exprToChar - converts an expression into a string.
111
112 charToExpr - converts a string into an expression.
113
114 flatArityExpr - flattens the operators of an expression.
115
116 flatPolarityExpr - translates the inverters of an expression to the
117 level of atomic expressions.
118
119 freeExpr - frees an expression.
120
121 identExpr - gives an identifier from an operator expression.
122
123 lengthExpr - returns the number of arguments in an expression.
124
125 mapCarExpr - creates a new expression by applying a function
126 to all arguments of an operator expression.
127
128 mapExpr - applies a procedure to all the arguments of an
129 operator expression.
130
131 maxExpr - returns the highest argument of an operator
132 expression.
133
134 minExpr - returns the lowest argument of an operator
135 expression.
136
137 normExpr - normalizes an expression.
138
139 notExpr - complements an expression and eventually does a
140 simplification.
141
142 numberAtomExpr - returns the number of atoms in an expression.
143
144 numberOccExpr - returns the number of time an atom appears in an
145 expression.
146
147 numberOperBinExpr - returns the number of equivalent binary operators
148 in an expression.
149
150 operToChar - converts an operator number into an operator
151 string.
152
153 profExpr - returns the depth of an expression.
154
155 profAOExpr - returns the depth of an expression without taking
156 the inverters into account.
157
158 searchExpr - searches for a specific atom in an expression.
159
160 searchNumExpr - fetches the i-th argument in an operator expres‐
161 sion.
162
163 searchOperExpr - searches for an operator in an expression.
164
165 simplif10Expr - makes simplifications on an expression including
166 constant atomic expressions.
167
168 simplifNotExpr - makes simplifications on an expression including
169 inverters.
170
171 sortExpr - sorts an expression.
172
173 substExpr - copies an expression by substituting a given atom
174 by an expression.
175
176 substPhyExpr - substitutes an atomic expression by an expression
177 within an expression.
178
179 supportChain_listExpr
180 - returns the support of an expression in a
181 chain_list.
182
183 supportPtype_listExpr
184 - returns the support of an expression in a
185 ptype_list.
186
187 wPMExpr - returns 1 if the pattern matching is possible
188 between two expressions.
189
190
192 log(1), mbk(1), addHExpr(3), addQExpr(3), anyExpr(3), changeOper‐
193 Expr(3), charToExpr(3), charToOper(3), copyExpr(3), createAtom(3), cre‐
194 ateBinExpr(3), createExpr(3), deleteNumExpr(3), devXor2Expr(3), devXor‐
195 Expr(3), displayExpr(3), displayInfExpr(3), equalExpr(3), equalVar‐
196 Expr(3), everyExpr(3), exprToChar(3), flatArityExpr(3), flatPolarity‐
197 Expr(3), freeExpr(3), identExpr(3), lengthExpr(3), mapCarExpr(3), map‐
198 Expr(3), maxExpr(3), minExpr(3), notExpr(3), normExpr(3), numberAtom‐
199 Expr(3), numberOccExpr(3), numberOperBinExpr(3), operToChar(3), prof‐
200 Expr(3), profAOExpr(3), searchExpr(3), searchNumExpr(3), searchOper‐
201 Expr(3), simplif10Expr(3), simplifNotExpr(3), sortExpr(3), subst‐
202 Expr(3), substPhyExpr(3), supportChain_listExpr(3), supportPtype_list‐
203 Expr(3). PMExpr(3).
204
205
206
207
208
209ASIM/LIP6 October 1, 1997 ABL(1)