abc-master
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
kitFactor.c File Reference
#include "kit.h"

Go to the source code of this file.

Macros

#define KIT_FACTOR_MEM_LIMIT   (1<<20)
 DECLARATIONS ///. More...
 

Functions

static Kit_Edge_t Kit_SopFactor_rec (Kit_Graph_t *pFForm, Kit_Sop_t *cSop, int nLits, Vec_Int_t *vMemory)
 
static Kit_Edge_t Kit_SopFactorLF_rec (Kit_Graph_t *pFForm, Kit_Sop_t *cSop, Kit_Sop_t *cSimple, int nLits, Vec_Int_t *vMemory)
 
static Kit_Edge_t Kit_SopFactorTrivial (Kit_Graph_t *pFForm, Kit_Sop_t *cSop, int nLits)
 
static Kit_Edge_t Kit_SopFactorTrivialCube (Kit_Graph_t *pFForm, unsigned uCube, int nLits)
 
int Kit_SopFactorVerify (Vec_Int_t *cSop, Kit_Graph_t *pFForm, int nVars)
 
Kit_Graph_tKit_SopFactor (Vec_Int_t *vCover, int fCompl, int nVars, Vec_Int_t *vMemory)
 FUNCTION DEFINITIONS ///. More...
 
Kit_Edge_t Kit_SopFactorTrivialCube_rec (Kit_Graph_t *pFForm, unsigned uCube, int nStart, int nFinish)
 
Kit_Edge_t Kit_SopFactorTrivial_rec (Kit_Graph_t *pFForm, unsigned *pCubes, int nCubes, int nLits)
 
void Kit_FactorTest (unsigned *pTruth, int nVars)
 

Macro Definition Documentation

#define KIT_FACTOR_MEM_LIMIT   (1<<20)

DECLARATIONS ///.

CFile****************************************************************

FileName [kitFactor.c]

SystemName [ABC: Logic synthesis and verification system.]

PackageName [Computation kit.]

Synopsis [Algebraic factoring.]

Author [Alan Mishchenko]

Affiliation [UC Berkeley]

Date [Ver. 1.0. Started - Dec 6, 2006.]

Revision [

Id:
kitFactor.c,v 1.00 2006/12/06 00:00:00 alanmi Exp

]

Definition at line 31 of file kitFactor.c.

Function Documentation

void Kit_FactorTest ( unsigned *  pTruth,
int  nVars 
)

Function*************************************************************

Synopsis [Testing procedure for the factoring code.]

Description []

SideEffects []

SeeAlso []

Definition at line 308 of file kitFactor.c.

309 {
310  Vec_Int_t * vCover, * vMemory;
311  Kit_Graph_t * pGraph;
312 // unsigned uTruthRes;
313  int RetValue;
314 
315  // derive SOP
316  vCover = Vec_IntAlloc( 0 );
317  RetValue = Kit_TruthIsop( pTruth, nVars, vCover, 0 );
318  assert( RetValue == 0 );
319 
320  // derive factored form
321  vMemory = Vec_IntAlloc( 0 );
322  pGraph = Kit_SopFactor( vCover, 0, nVars, vMemory );
323 /*
324  // derive truth table
325  assert( nVars <= 5 );
326  uTruthRes = Kit_GraphToTruth( pGraph );
327  if ( uTruthRes != pTruth[0] )
328  printf( "Verification failed!" );
329 */
330  printf( "Vars = %2d. Cubes = %3d. FFNodes = %3d. FF_memory = %3d.\n",
331  nVars, Vec_IntSize(vCover), Kit_GraphNodeNum(pGraph), Vec_IntSize(vMemory) );
332 
333  Vec_IntFree( vMemory );
334  Vec_IntFree( vCover );
335  Kit_GraphFree( pGraph );
336 }
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
Definition: bblif.c:37
static Vec_Int_t * Vec_IntAlloc(int nCap)
FUNCTION DEFINITIONS ///.
Definition: bblif.c:149
void Kit_GraphFree(Kit_Graph_t *pGraph)
Definition: kitGraph.c:131
Kit_Graph_t * Kit_SopFactor(Vec_Int_t *vCover, int fCompl, int nVars, Vec_Int_t *vMemory)
FUNCTION DEFINITIONS ///.
Definition: kitFactor.c:55
int Kit_TruthIsop(unsigned *puTruth, int nVars, Vec_Int_t *vMemory, int fTryBoth)
FUNCTION DEFINITIONS ///.
Definition: kitIsop.c:55
static int Vec_IntSize(Vec_Int_t *p)
Definition: bblif.c:252
static int Kit_GraphNodeNum(Kit_Graph_t *pGraph)
Definition: kit.h:210
#define assert(ex)
Definition: util_old.h:213
static void Vec_IntFree(Vec_Int_t *p)
Definition: bblif.c:235
Kit_Graph_t* Kit_SopFactor ( Vec_Int_t vCover,
int  fCompl,
int  nVars,
Vec_Int_t vMemory 
)

FUNCTION DEFINITIONS ///.

Function*************************************************************

Synopsis [Factors the cover.]

Description []

SideEffects []

SeeAlso []

Definition at line 55 of file kitFactor.c.

56 {
57  Kit_Sop_t Sop, * cSop = &Sop;
58  Kit_Graph_t * pFForm;
59  Kit_Edge_t eRoot;
60 // int nCubes;
61 
62  // works for up to 15 variables because division procedure
63  // used the last bit for marking the cubes going to the remainder
64  assert( nVars < 16 );
65 
66  // check for trivial functions
67  if ( Vec_IntSize(vCover) == 0 )
68  return Kit_GraphCreateConst0();
69  if ( Vec_IntSize(vCover) == 1 && Vec_IntEntry(vCover, 0) == 0 )
70  return Kit_GraphCreateConst1();
71 
72  // prepare memory manager
73 // Vec_IntClear( vMemory );
75 
76  // perform CST
77  Kit_SopCreateInverse( cSop, vCover, 2 * nVars, vMemory ); // CST
78 
79  // start the factored form
80  pFForm = Kit_GraphCreate( nVars );
81  // factor the cover
82  eRoot = Kit_SopFactor_rec( pFForm, cSop, 2 * nVars, vMemory );
83  // finalize the factored form
84  Kit_GraphSetRoot( pFForm, eRoot );
85  if ( fCompl )
86  Kit_GraphComplement( pFForm );
87 
88  // verify the factored form
89 // nCubes = Vec_IntSize(vCover);
90 // Vec_IntShrink( vCover, nCubes );
91 // if ( !Kit_SopFactorVerify( vCover, pFForm, nVars ) )
92 // printf( "Verification has failed.\n" );
93  return pFForm;
94 }
#define KIT_FACTOR_MEM_LIMIT
DECLARATIONS ///.
Definition: kitFactor.c:31
static void Vec_IntGrow(Vec_Int_t *p, int nCapMin)
Definition: bblif.c:336
static int Vec_IntEntry(Vec_Int_t *p, int i)
Definition: bblif.c:268
static Kit_Edge_t Kit_SopFactor_rec(Kit_Graph_t *pFForm, Kit_Sop_t *cSop, int nLits, Vec_Int_t *vMemory)
Definition: kitFactor.c:108
Kit_Graph_t * Kit_GraphCreate(int nLeaves)
DECLARATIONS ///.
Definition: kitGraph.c:45
Kit_Graph_t * Kit_GraphCreateConst1()
Definition: kitGraph.c:90
Kit_Graph_t * Kit_GraphCreateConst0()
Definition: kitGraph.c:69
typedefABC_NAMESPACE_HEADER_START struct Kit_Sop_t_ Kit_Sop_t
INCLUDES ///.
Definition: kit.h:51
static int Vec_IntSize(Vec_Int_t *p)
Definition: bblif.c:252
static void Kit_GraphSetRoot(Kit_Graph_t *pGraph, Kit_Edge_t eRoot)
Definition: kit.h:208
void Kit_SopCreateInverse(Kit_Sop_t *cResult, Vec_Int_t *vInput, int nVars, Vec_Int_t *vMemory)
Definition: kitSop.c:68
#define assert(ex)
Definition: util_old.h:213
static void Kit_GraphComplement(Kit_Graph_t *pGraph)
Definition: kit.h:207
Kit_Edge_t Kit_SopFactor_rec ( Kit_Graph_t pFForm,
Kit_Sop_t cSop,
int  nLits,
Vec_Int_t vMemory 
)
static

Function*************************************************************

Synopsis [Recursive factoring procedure.]

Description [For the pseudo-code, see Hachtel/Somenzi, Logic synthesis and verification algorithms, Kluwer, 1996, p. 432.]

SideEffects []

SeeAlso []

Definition at line 108 of file kitFactor.c.

109 {
110  Kit_Sop_t Div, Quo, Rem, Com;
111  Kit_Sop_t * cDiv = &Div, * cQuo = &Quo, * cRem = &Rem, * cCom = &Com;
112  Kit_Edge_t eNodeDiv, eNodeQuo, eNodeRem, eNodeAnd;
113 
114  // make sure the cover contains some cubes
115  assert( Kit_SopCubeNum(cSop) > 0 );
116 
117  // get the divisor
118  if ( !Kit_SopDivisor(cDiv, cSop, nLits, vMemory) )
119  return Kit_SopFactorTrivial( pFForm, cSop, nLits );
120 
121  // divide the cover by the divisor
122  Kit_SopDivideInternal( cSop, cDiv, cQuo, cRem, vMemory );
123 
124  // check the trivial case
125  assert( Kit_SopCubeNum(cQuo) > 0 );
126  if ( Kit_SopCubeNum(cQuo) == 1 )
127  return Kit_SopFactorLF_rec( pFForm, cSop, cQuo, nLits, vMemory );
128 
129  // make the quotient cube ABC_FREE
130  Kit_SopMakeCubeFree( cQuo );
131 
132  // divide the cover by the quotient
133  Kit_SopDivideInternal( cSop, cQuo, cDiv, cRem, vMemory );
134 
135  // check the trivial case
136  if ( Kit_SopIsCubeFree( cDiv ) )
137  {
138  eNodeDiv = Kit_SopFactor_rec( pFForm, cDiv, nLits, vMemory );
139  eNodeQuo = Kit_SopFactor_rec( pFForm, cQuo, nLits, vMemory );
140  eNodeAnd = Kit_GraphAddNodeAnd( pFForm, eNodeDiv, eNodeQuo );
141  if ( Kit_SopCubeNum(cRem) == 0 )
142  return eNodeAnd;
143  eNodeRem = Kit_SopFactor_rec( pFForm, cRem, nLits, vMemory );
144  return Kit_GraphAddNodeOr( pFForm, eNodeAnd, eNodeRem );
145  }
146 
147  // get the common cube
148  Kit_SopCommonCubeCover( cCom, cDiv, vMemory );
149 
150  // solve the simple problem
151  return Kit_SopFactorLF_rec( pFForm, cSop, cCom, nLits, vMemory );
152 }
int Kit_SopDivisor(Kit_Sop_t *cResult, Kit_Sop_t *cSop, int nLits, Vec_Int_t *vMemory)
Definition: kitSop.c:534
int Kit_SopIsCubeFree(Kit_Sop_t *cSop)
Definition: kitSop.c:334
static Kit_Edge_t Kit_SopFactorLF_rec(Kit_Graph_t *pFForm, Kit_Sop_t *cSop, Kit_Sop_t *cSimple, int nLits, Vec_Int_t *vMemory)
Definition: kitFactor.c:166
void Kit_SopDivideInternal(Kit_Sop_t *cSop, Kit_Sop_t *cDiv, Kit_Sop_t *vQuo, Kit_Sop_t *vRem, Vec_Int_t *vMemory)
Definition: kitSop.c:178
void Kit_SopCommonCubeCover(Kit_Sop_t *cResult, Kit_Sop_t *cSop, Vec_Int_t *vMemory)
Definition: kitSop.c:350
void Kit_SopMakeCubeFree(Kit_Sop_t *cSop)
Definition: kitSop.c:311
Kit_Edge_t Kit_GraphAddNodeAnd(Kit_Graph_t *pGraph, Kit_Edge_t eEdge0, Kit_Edge_t eEdge1)
Definition: kitGraph.c:172
static Kit_Edge_t Kit_SopFactor_rec(Kit_Graph_t *pFForm, Kit_Sop_t *cSop, int nLits, Vec_Int_t *vMemory)
Definition: kitFactor.c:108
typedefABC_NAMESPACE_HEADER_START struct Kit_Sop_t_ Kit_Sop_t
INCLUDES ///.
Definition: kit.h:51
Kit_Edge_t Kit_GraphAddNodeOr(Kit_Graph_t *pGraph, Kit_Edge_t eEdge0, Kit_Edge_t eEdge1)
Definition: kitGraph.c:196
#define assert(ex)
Definition: util_old.h:213
static int Kit_SopCubeNum(Kit_Sop_t *cSop)
Definition: kit.h:188
static Kit_Edge_t Kit_SopFactorTrivial(Kit_Graph_t *pFForm, Kit_Sop_t *cSop, int nLits)
Definition: kitFactor.c:291
Kit_Edge_t Kit_SopFactorLF_rec ( Kit_Graph_t pFForm,
Kit_Sop_t cSop,
Kit_Sop_t cSimple,
int  nLits,
Vec_Int_t vMemory 
)
static

Function*************************************************************

Synopsis [Internal recursive factoring procedure for the leaf case.]

Description []

SideEffects []

SeeAlso []

Definition at line 166 of file kitFactor.c.

167 {
168  Kit_Sop_t Div, Quo, Rem;
169  Kit_Sop_t * cDiv = &Div, * cQuo = &Quo, * cRem = &Rem;
170  Kit_Edge_t eNodeDiv, eNodeQuo, eNodeRem, eNodeAnd;
171  assert( Kit_SopCubeNum(cSimple) == 1 );
172  // get the most often occurring literal
173  Kit_SopBestLiteralCover( cDiv, cSop, Kit_SopCube(cSimple, 0), nLits, vMemory );
174  // divide the cover by the literal
175  Kit_SopDivideByCube( cSop, cDiv, cQuo, cRem, vMemory );
176  // get the node pointer for the literal
177  eNodeDiv = Kit_SopFactorTrivialCube( pFForm, Kit_SopCube(cDiv, 0), nLits );
178  // factor the quotient and remainder
179  eNodeQuo = Kit_SopFactor_rec( pFForm, cQuo, nLits, vMemory );
180  eNodeAnd = Kit_GraphAddNodeAnd( pFForm, eNodeDiv, eNodeQuo );
181  if ( Kit_SopCubeNum(cRem) == 0 )
182  return eNodeAnd;
183  eNodeRem = Kit_SopFactor_rec( pFForm, cRem, nLits, vMemory );
184  return Kit_GraphAddNodeOr( pFForm, eNodeAnd, eNodeRem );
185 }
void Kit_SopBestLiteralCover(Kit_Sop_t *cResult, Kit_Sop_t *cSop, unsigned uCube, int nLits, Vec_Int_t *vMemory)
Definition: kitSop.c:560
static unsigned Kit_SopCube(Kit_Sop_t *cSop, int i)
Definition: kit.h:189
void Kit_SopDivideByCube(Kit_Sop_t *cSop, Kit_Sop_t *cDiv, Kit_Sop_t *vQuo, Kit_Sop_t *vRem, Vec_Int_t *vMemory)
Definition: kitSop.c:145
static Kit_Edge_t Kit_SopFactorTrivialCube(Kit_Graph_t *pFForm, unsigned uCube, int nLits)
Definition: kitFactor.c:247
Kit_Edge_t Kit_GraphAddNodeAnd(Kit_Graph_t *pGraph, Kit_Edge_t eEdge0, Kit_Edge_t eEdge1)
Definition: kitGraph.c:172
static Kit_Edge_t Kit_SopFactor_rec(Kit_Graph_t *pFForm, Kit_Sop_t *cSop, int nLits, Vec_Int_t *vMemory)
Definition: kitFactor.c:108
typedefABC_NAMESPACE_HEADER_START struct Kit_Sop_t_ Kit_Sop_t
INCLUDES ///.
Definition: kit.h:51
Kit_Edge_t Kit_GraphAddNodeOr(Kit_Graph_t *pGraph, Kit_Edge_t eEdge0, Kit_Edge_t eEdge1)
Definition: kitGraph.c:196
#define assert(ex)
Definition: util_old.h:213
static int Kit_SopCubeNum(Kit_Sop_t *cSop)
Definition: kit.h:188
Kit_Edge_t Kit_SopFactorTrivial ( Kit_Graph_t pFForm,
Kit_Sop_t cSop,
int  nLits 
)
static

Function*************************************************************

Synopsis [Factoring the cover, which has no algebraic divisors.]

Description []

SideEffects []

SeeAlso []

Definition at line 291 of file kitFactor.c.

292 {
293  return Kit_SopFactorTrivial_rec( pFForm, cSop->pCubes, cSop->nCubes, nLits );
294 }
Kit_Edge_t Kit_SopFactorTrivial_rec(Kit_Graph_t *pFForm, unsigned *pCubes, int nCubes, int nLits)
Definition: kitFactor.c:263
Kit_Edge_t Kit_SopFactorTrivial_rec ( Kit_Graph_t pFForm,
unsigned *  pCubes,
int  nCubes,
int  nLits 
)

Function*************************************************************

Synopsis [Factoring SOP.]

Description []

SideEffects []

SeeAlso []

Definition at line 263 of file kitFactor.c.

264 {
265  Kit_Edge_t eNode1, eNode2;
266  int nCubes1, nCubes2;
267  if ( nCubes == 1 )
268  return Kit_SopFactorTrivialCube_rec( pFForm, pCubes[0], 0, nLits );
269  // split the cubes into two parts
270  nCubes1 = nCubes/2;
271  nCubes2 = nCubes - nCubes1;
272 // nCubes2 = nCubes/2;
273 // nCubes1 = nCubes - nCubes2;
274  // recursively construct the tree for the parts
275  eNode1 = Kit_SopFactorTrivial_rec( pFForm, pCubes, nCubes1, nLits );
276  eNode2 = Kit_SopFactorTrivial_rec( pFForm, pCubes + nCubes1, nCubes2, nLits );
277  return Kit_GraphAddNodeOr( pFForm, eNode1, eNode2 );
278 }
Kit_Edge_t Kit_SopFactorTrivialCube_rec(Kit_Graph_t *pFForm, unsigned uCube, int nStart, int nFinish)
Definition: kitFactor.c:199
Kit_Edge_t Kit_GraphAddNodeOr(Kit_Graph_t *pGraph, Kit_Edge_t eEdge0, Kit_Edge_t eEdge1)
Definition: kitGraph.c:196
Kit_Edge_t Kit_SopFactorTrivial_rec(Kit_Graph_t *pFForm, unsigned *pCubes, int nCubes, int nLits)
Definition: kitFactor.c:263
Kit_Edge_t Kit_SopFactorTrivialCube ( Kit_Graph_t pFForm,
unsigned  uCube,
int  nLits 
)
static

Function*************************************************************

Synopsis [Factoring cube.]

Description []

SideEffects []

SeeAlso []

Definition at line 247 of file kitFactor.c.

248 {
249  return Kit_SopFactorTrivialCube_rec( pFForm, uCube, 0, nLits );
250 }
Kit_Edge_t Kit_SopFactorTrivialCube_rec(Kit_Graph_t *pFForm, unsigned uCube, int nStart, int nFinish)
Definition: kitFactor.c:199
Kit_Edge_t Kit_SopFactorTrivialCube_rec ( Kit_Graph_t pFForm,
unsigned  uCube,
int  nStart,
int  nFinish 
)

Function*************************************************************

Synopsis [Factoring cube.]

Description []

SideEffects []

SeeAlso []

Definition at line 199 of file kitFactor.c.

200 {
201  Kit_Edge_t eNode1, eNode2;
202  int i, iLit = -1, nLits, nLits1, nLits2;
203  assert( uCube );
204  // count the number of literals in this interval
205  nLits = 0;
206  for ( i = nStart; i < nFinish; i++ )
207  if ( Kit_CubeHasLit(uCube, i) )
208  {
209  iLit = i;
210  nLits++;
211  }
212  assert( iLit != -1 );
213  // quit if there is only one literal
214  if ( nLits == 1 )
215  return Kit_EdgeCreate( iLit/2, iLit%2 ); // CST
216  // split the literals into two parts
217  nLits1 = nLits/2;
218  nLits2 = nLits - nLits1;
219 // nLits2 = nLits/2;
220 // nLits1 = nLits - nLits2;
221  // find the splitting point
222  nLits = 0;
223  for ( i = nStart; i < nFinish; i++ )
224  if ( Kit_CubeHasLit(uCube, i) )
225  {
226  if ( nLits == nLits1 )
227  break;
228  nLits++;
229  }
230  // recursively construct the tree for the parts
231  eNode1 = Kit_SopFactorTrivialCube_rec( pFForm, uCube, nStart, i );
232  eNode2 = Kit_SopFactorTrivialCube_rec( pFForm, uCube, i, nFinish );
233  return Kit_GraphAddNodeAnd( pFForm, eNode1, eNode2 );
234 }
static Kit_Edge_t Kit_EdgeCreate(int Node, int fCompl)
Definition: kit.h:194
static int Kit_CubeHasLit(unsigned uCube, int i)
Definition: kit.h:175
Kit_Edge_t Kit_GraphAddNodeAnd(Kit_Graph_t *pGraph, Kit_Edge_t eEdge0, Kit_Edge_t eEdge1)
Definition: kitGraph.c:172
Kit_Edge_t Kit_SopFactorTrivialCube_rec(Kit_Graph_t *pFForm, unsigned uCube, int nStart, int nFinish)
Definition: kitFactor.c:199
#define assert(ex)
Definition: util_old.h:213
int Kit_SopFactorVerify ( Vec_Int_t vCover,
Kit_Graph_t pFForm,
int  nVars 
)

Function*************************************************************

Synopsis [Verifies that the factoring is correct.]

Description []

SideEffects []

SeeAlso []

Definition at line 198 of file kitBdd.c.

199 {
200  static DdManager * dd = NULL;
201  Kit_Sop_t Sop, * cSop = &Sop;
202  DdNode * bFunc1, * bFunc2;
203  Vec_Int_t * vMemory;
204  int RetValue;
205  // get the manager
206  if ( dd == NULL )
207  dd = Cudd_Init( 16, 0, CUDD_UNIQUE_SLOTS, CUDD_CACHE_SLOTS, 0 );
208  // derive SOP
209  vMemory = Vec_IntAlloc( Vec_IntSize(vCover) );
210  Kit_SopCreate( cSop, vCover, nVars, vMemory );
211  // get the functions
212  bFunc1 = Kit_SopToBdd( dd, cSop, nVars ); Cudd_Ref( bFunc1 );
213  bFunc2 = Kit_GraphToBdd( dd, pFForm ); Cudd_Ref( bFunc2 );
214 //Extra_bddPrint( dd, bFunc1 ); printf("\n");
215 //Extra_bddPrint( dd, bFunc2 ); printf("\n");
216  RetValue = (bFunc1 == bFunc2);
217  if ( bFunc1 != bFunc2 )
218  {
219  int s;
220  Extra_bddPrint( dd, bFunc1 ); printf("\n");
221  Extra_bddPrint( dd, bFunc2 ); printf("\n");
222  s = 0;
223  }
224  Cudd_RecursiveDeref( dd, bFunc1 );
225  Cudd_RecursiveDeref( dd, bFunc2 );
226  Vec_IntFree( vMemory );
227  return RetValue;
228 }
#define CUDD_UNIQUE_SLOTS
Definition: cudd.h:97
void Cudd_RecursiveDeref(DdManager *table, DdNode *n)
Definition: cuddRef.c:154
Definition: cudd.h:278
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
Definition: bblif.c:37
#define CUDD_CACHE_SLOTS
Definition: cudd.h:98
DdNode * Kit_GraphToBdd(DdManager *dd, Kit_Graph_t *pGraph)
Definition: kitBdd.c:91
static Vec_Int_t * Vec_IntAlloc(int nCap)
FUNCTION DEFINITIONS ///.
Definition: bblif.c:149
ABC_NAMESPACE_IMPL_START DdNode * Kit_SopToBdd(DdManager *dd, Kit_Sop_t *cSop, int nVars)
DECLARATIONS ///.
Definition: kitBdd.c:46
void Extra_bddPrint(DdManager *dd, DdNode *F)
Definition: extraBddMisc.c:246
DdManager * Cudd_Init(unsigned int numVars, unsigned int numVarsZ, unsigned int numSlots, unsigned int cacheSize, unsigned long maxMemory)
Definition: cuddInit.c:125
typedefABC_NAMESPACE_HEADER_START struct Kit_Sop_t_ Kit_Sop_t
INCLUDES ///.
Definition: kit.h:51
static int Vec_IntSize(Vec_Int_t *p)
Definition: bblif.c:252
void Cudd_Ref(DdNode *n)
Definition: cuddRef.c:129
static void Vec_IntFree(Vec_Int_t *p)
Definition: bblif.c:235
void Kit_SopCreate(Kit_Sop_t *cResult, Vec_Int_t *vInput, int nVars, Vec_Int_t *vMemory)
DECLARATIONS ///.
Definition: kitSop.c:45