21#ifndef ABC__aig__kit__kit_h
22#define ABC__aig__kit__kit_h
150static inline unsigned Kit_DsdObjOffset(
int nFans ) {
return (nFans >> 1) + ((nFans & 1) > 0); }
155static inline int Kit_DsdLitIsLeaf(
Kit_DsdNtk_t * pNtk,
int Lit ) {
int Id = Abc_Lit2Var(Lit);
assert( Id >= 0 && Id < pNtk->nVars + pNtk->
nNodes );
return Id < pNtk->
nVars; }
156static inline unsigned Kit_DsdLitSupport(
Kit_DsdNtk_t * pNtk,
int Lit ) {
int Id = Abc_Lit2Var(Lit);
assert( Id >= 0 && Id < pNtk->nVars + pNtk->
nNodes );
return pNtk->
pSupps? (Id < pNtk->
nVars? (1 << Id) : pNtk->
pSupps[Id - pNtk->
nVars]) : 0; }
158#define Kit_DsdNtkForEachObj( pNtk, pObj, i ) \
159 for ( i = 0; (i < (pNtk)->nNodes) && ((pObj) = (pNtk)->pNodes[i]); i++ )
160#define Kit_DsdObjForEachFanin( pNtk, pObj, iLit, i ) \
161 for ( i = 0; (i < (int)(pObj)->nFans) && ((iLit) = (pObj)->pFans[i], 1); i++ )
162#define Kit_DsdObjForEachFaninReverse( pNtk, pObj, iLit, i ) \
163 for ( i = (int)(pObj)->nFans - 1; (i >= 0) && ((iLit) = (pObj)->pFans[i], 1); i-- )
165#define Kit_PlaForEachCube( pSop, nFanins, pCube ) \
166 for ( pCube = (pSop); *pCube; pCube += (nFanins) + 3 )
167#define Kit_PlaCubeForEachVar( pCube, Value, i ) \
168 for ( i = 0; (pCube[i] != ' ') && (Value = pCube[i]); i++ )
174#define KIT_MIN(a,b) (((a) < (b))? (a) : (b))
175#define KIT_MAX(a,b) (((a) > (b))? (a) : (b))
176#define KIT_INFINITY (100000000)
178static inline int Kit_CubeHasLit(
unsigned uCube,
int i ) {
return(uCube & (
unsigned)(1U<<i)) > 0; }
179static inline unsigned Kit_CubeSetLit(
unsigned uCube,
int i ) {
return uCube | (unsigned)(1U<<i); }
180static inline unsigned Kit_CubeXorLit(
unsigned uCube,
int i ) {
return uCube ^ (unsigned)(1U<<i); }
181static inline unsigned Kit_CubeRemLit(
unsigned uCube,
int i ) {
return uCube & ~(unsigned)(1U<<i); }
183static inline int Kit_CubeContains(
unsigned uLarge,
unsigned uSmall ) {
return (uLarge & uSmall) == uSmall; }
184static inline unsigned Kit_CubeSharp(
unsigned uCube,
unsigned uMask ) {
return uCube & ~uMask; }
185static inline unsigned Kit_CubeMask(
int nVar ) {
return (~(
unsigned)0) >> (32-nVar); }
187static inline int Kit_CubeIsMarked(
unsigned uCube ) {
return Kit_CubeHasLit( uCube, 31 ); }
188static inline unsigned Kit_CubeMark(
unsigned uCube ) {
return Kit_CubeSetLit( uCube, 31 ); }
189static inline unsigned Kit_CubeUnmark(
unsigned uCube ) {
return Kit_CubeRemLit( uCube, 31 ); }
191static inline int Kit_SopCubeNum(
Kit_Sop_t * cSop ) {
return cSop->nCubes; }
192static inline unsigned Kit_SopCube(
Kit_Sop_t * cSop,
int i ) {
return cSop->pCubes[i]; }
193static inline void Kit_SopShrink(
Kit_Sop_t * cSop,
int nCubesNew ) { cSop->nCubes = nCubesNew; }
194static inline void Kit_SopPushCube(
Kit_Sop_t * cSop,
unsigned uCube ) { cSop->pCubes[cSop->nCubes++] = uCube; }
195static inline void Kit_SopWriteCube(
Kit_Sop_t * cSop,
unsigned uCube,
int i ) { cSop->pCubes[i] = uCube; }
197static inline Kit_Edge_t Kit_EdgeCreate(
int Node,
int fCompl ) {
Kit_Edge_t eEdge = { (unsigned)fCompl, (
unsigned)Node };
return eEdge; }
198static inline unsigned Kit_EdgeToInt(
Kit_Edge_t eEdge ) {
return (eEdge.
Node << 1) | eEdge.
fCompl; }
199static inline Kit_Edge_t Kit_IntToEdge(
unsigned Edge ) {
return Kit_EdgeCreate( Edge >> 1, Edge & 1 ); }
202static inline unsigned Kit_EdgeToInt_(
Kit_Edge_t m ) {
union {
Kit_Edge_t x;
unsigned y; } v; v.x = m;
return v.y; }
203static inline Kit_Edge_t Kit_IntToEdge_(
unsigned m ) {
union {
Kit_Edge_t x;
unsigned y; } v; v.y = m;
return v.x; }
205static inline int Kit_GraphIsConst(
Kit_Graph_t * pGraph ) {
return pGraph->
fConst; }
212static inline int Kit_GraphLeaveNum(
Kit_Graph_t * pGraph ) {
return pGraph->
nLeaves; }
217static inline int Kit_GraphNodeIsVar(
Kit_Graph_t * pGraph,
Kit_Node_t * pNode ) {
return Kit_GraphNodeInt(pGraph,pNode) < pGraph->
nLeaves; }
219static inline int Kit_GraphVarInt(
Kit_Graph_t * pGraph ) {
assert( Kit_GraphIsVar( pGraph ) );
return Kit_GraphNodeInt( pGraph, Kit_GraphVar(pGraph) ); }
222static inline int Kit_GraphRootLevel(
Kit_Graph_t * pGraph ) {
return Kit_GraphNode(pGraph, pGraph->
eRoot.
Node)->Level; }
224static inline int Kit_SuppIsMinBase(
int Supp ) {
return (Supp & (Supp+1)) == 0; }
226static inline int Kit_BitWordNum(
int nBits ) {
return nBits/(8*
sizeof(unsigned)) + ((nBits%(8*
sizeof(
unsigned))) > 0); }
227static inline int Kit_TruthWordNum(
int nVars ) {
return nVars <= 5 ? 1 : (1 << (nVars - 5)); }
228static inline unsigned Kit_BitMask(
int nBits ) {
assert( nBits <= 32 );
return ~((~(unsigned)0) << nBits); }
230static inline void Kit_TruthSetBit(
unsigned *
p,
int Bit ) {
p[Bit>>5] |= (1<<(Bit & 31)); }
231static inline void Kit_TruthXorBit(
unsigned *
p,
int Bit ) {
p[Bit>>5] ^= (1<<(Bit & 31)); }
232static inline int Kit_TruthHasBit(
unsigned *
p,
int Bit ) {
return (
p[Bit>>5] & (1<<(Bit & 31))) > 0; }
234static inline int Kit_WordFindFirstBit(
unsigned uWord )
237 for ( i = 0; i < 32; i++ )
238 if ( uWord & (1 << i) )
242static inline int Kit_WordHasOneBit(
unsigned uWord )
244 return (uWord & (uWord - 1)) == 0;
246static inline int Kit_WordCountOnes(
unsigned uWord )
248 uWord = (uWord & 0x55555555) + ((uWord>>1) & 0x55555555);
249 uWord = (uWord & 0x33333333) + ((uWord>>2) & 0x33333333);
250 uWord = (uWord & 0x0F0F0F0F) + ((uWord>>4) & 0x0F0F0F0F);
251 uWord = (uWord & 0x00FF00FF) + ((uWord>>8) & 0x00FF00FF);
252 return (uWord & 0x0000FFFF) + (uWord>>16);
254static inline int Kit_TruthCountOnes(
unsigned * pIn,
int nVars )
257 for ( w = Kit_TruthWordNum(nVars)-1; w >= 0; w-- )
258 Counter += Kit_WordCountOnes(pIn[w]);
261static inline int Kit_TruthFindFirstBit(
unsigned * pIn,
int nVars )
264 for ( w = 0; w < Kit_TruthWordNum(nVars); w++ )
266 return 32*w + Kit_WordFindFirstBit(pIn[w]);
269static inline int Kit_TruthFindFirstZero(
unsigned * pIn,
int nVars )
272 for ( w = 0; w < Kit_TruthWordNum(nVars); w++ )
274 return 32*w + Kit_WordFindFirstBit(~pIn[w]);
277static inline int Kit_TruthIsEqual(
unsigned * pIn0,
unsigned * pIn1,
int nVars )
280 for ( w = Kit_TruthWordNum(nVars)-1; w >= 0; w-- )
281 if ( pIn0[w] != pIn1[w] )
285static inline int Kit_TruthIsEqualWithCare(
unsigned * pIn0,
unsigned * pIn1,
unsigned * pCare,
int nVars )
288 for ( w = Kit_TruthWordNum(nVars)-1; w >= 0; w-- )
289 if ( (pIn0[w] & pCare[w]) != (pIn1[w] & pCare[w]) )
293static inline int Kit_TruthIsOpposite(
unsigned * pIn0,
unsigned * pIn1,
int nVars )
296 for ( w = Kit_TruthWordNum(nVars)-1; w >= 0; w-- )
297 if ( pIn0[w] != ~pIn1[w] )
301static inline int Kit_TruthIsEqualWithPhase(
unsigned * pIn0,
unsigned * pIn1,
int nVars )
304 if ( (pIn0[0] & 1) == (pIn1[0] & 1) )
306 for ( w = Kit_TruthWordNum(nVars)-1; w >= 0; w-- )
307 if ( pIn0[w] != pIn1[w] )
312 for ( w = Kit_TruthWordNum(nVars)-1; w >= 0; w-- )
313 if ( pIn0[w] != ~pIn1[w] )
318static inline int Kit_TruthIsConst0(
unsigned * pIn,
int nVars )
321 for ( w = Kit_TruthWordNum(nVars)-1; w >= 0; w-- )
326static inline int Kit_TruthIsConst1(
unsigned * pIn,
int nVars )
329 for ( w = Kit_TruthWordNum(nVars)-1; w >= 0; w-- )
330 if ( pIn[w] != ~(
unsigned)0 )
334static inline int Kit_TruthIsImply(
unsigned * pIn1,
unsigned * pIn2,
int nVars )
337 for ( w = Kit_TruthWordNum(nVars)-1; w >= 0; w-- )
338 if ( pIn1[w] & ~pIn2[w] )
342static inline int Kit_TruthIsDisjoint(
unsigned * pIn1,
unsigned * pIn2,
int nVars )
345 for ( w = Kit_TruthWordNum(nVars)-1; w >= 0; w-- )
346 if ( pIn1[w] & pIn2[w] )
350static inline int Kit_TruthIsDisjoint3(
unsigned * pIn1,
unsigned * pIn2,
unsigned * pIn3,
int nVars )
353 for ( w = Kit_TruthWordNum(nVars)-1; w >= 0; w-- )
354 if ( pIn1[w] & pIn2[w] & pIn3[w] )
358static inline void Kit_TruthCopy(
unsigned * pOut,
unsigned * pIn,
int nVars )
361 for ( w = Kit_TruthWordNum(nVars)-1; w >= 0; w-- )
364static inline void Kit_TruthClear(
unsigned * pOut,
int nVars )
367 for ( w = Kit_TruthWordNum(nVars)-1; w >= 0; w-- )
370static inline void Kit_TruthFill(
unsigned * pOut,
int nVars )
373 for ( w = Kit_TruthWordNum(nVars)-1; w >= 0; w-- )
374 pOut[w] = ~(
unsigned)0;
376static inline void Kit_TruthNot(
unsigned * pOut,
unsigned * pIn,
int nVars )
379 for ( w = Kit_TruthWordNum(nVars)-1; w >= 0; w-- )
382static inline void Kit_TruthAnd(
unsigned * pOut,
unsigned * pIn0,
unsigned * pIn1,
int nVars )
385 for ( w = Kit_TruthWordNum(nVars)-1; w >= 0; w-- )
386 pOut[w] = pIn0[w] & pIn1[w];
388static inline void Kit_TruthOr(
unsigned * pOut,
unsigned * pIn0,
unsigned * pIn1,
int nVars )
391 for ( w = Kit_TruthWordNum(nVars)-1; w >= 0; w-- )
392 pOut[w] = pIn0[w] | pIn1[w];
394static inline void Kit_TruthXor(
unsigned * pOut,
unsigned * pIn0,
unsigned * pIn1,
int nVars )
397 for ( w = Kit_TruthWordNum(nVars)-1; w >= 0; w-- )
398 pOut[w] = pIn0[w] ^ pIn1[w];
400static inline void Kit_TruthSharp(
unsigned * pOut,
unsigned * pIn0,
unsigned * pIn1,
int nVars )
403 for ( w = Kit_TruthWordNum(nVars)-1; w >= 0; w-- )
404 pOut[w] = pIn0[w] & ~pIn1[w];
406static inline void Kit_TruthNand(
unsigned * pOut,
unsigned * pIn0,
unsigned * pIn1,
int nVars )
409 for ( w = Kit_TruthWordNum(nVars)-1; w >= 0; w-- )
410 pOut[w] = ~(pIn0[w] & pIn1[w]);
412static inline void Kit_TruthAndPhase(
unsigned * pOut,
unsigned * pIn0,
unsigned * pIn1,
int nVars,
int fCompl0,
int fCompl1 )
415 if ( fCompl0 && fCompl1 )
417 for ( w = Kit_TruthWordNum(nVars)-1; w >= 0; w-- )
418 pOut[w] = ~(pIn0[w] | pIn1[w]);
420 else if ( fCompl0 && !fCompl1 )
422 for ( w = Kit_TruthWordNum(nVars)-1; w >= 0; w-- )
423 pOut[w] = ~pIn0[w] & pIn1[w];
425 else if ( !fCompl0 && fCompl1 )
427 for ( w = Kit_TruthWordNum(nVars)-1; w >= 0; w-- )
428 pOut[w] = pIn0[w] & ~pIn1[w];
432 for ( w = Kit_TruthWordNum(nVars)-1; w >= 0; w-- )
433 pOut[w] = pIn0[w] & pIn1[w];
436static inline void Kit_TruthOrPhase(
unsigned * pOut,
unsigned * pIn0,
unsigned * pIn1,
int nVars,
int fCompl0,
int fCompl1 )
439 if ( fCompl0 && fCompl1 )
441 for ( w = Kit_TruthWordNum(nVars)-1; w >= 0; w-- )
442 pOut[w] = ~(pIn0[w] & pIn1[w]);
444 else if ( fCompl0 && !fCompl1 )
446 for ( w = Kit_TruthWordNum(nVars)-1; w >= 0; w-- )
447 pOut[w] = ~pIn0[w] | pIn1[w];
449 else if ( !fCompl0 && fCompl1 )
451 for ( w = Kit_TruthWordNum(nVars)-1; w >= 0; w-- )
452 pOut[w] = pIn0[w] | ~pIn1[w];
456 for ( w = Kit_TruthWordNum(nVars)-1; w >= 0; w-- )
457 pOut[w] = pIn0[w] | pIn1[w];
460static inline void Kit_TruthMux(
unsigned * pOut,
unsigned * pIn0,
unsigned * pIn1,
unsigned * pCtrl,
int nVars )
463 for ( w = Kit_TruthWordNum(nVars)-1; w >= 0; w-- )
464 pOut[w] = (pIn0[w] & ~pCtrl[w]) | (pIn1[w] & pCtrl[w]);
466static inline void Kit_TruthMuxPhase(
unsigned * pOut,
unsigned * pIn0,
unsigned * pIn1,
unsigned * pCtrl,
int nVars,
int fComp0 )
470 for ( w = Kit_TruthWordNum(nVars)-1; w >= 0; w-- )
471 pOut[w] = (~pIn0[w] & ~pCtrl[w]) | (pIn1[w] & pCtrl[w]);
473 for ( w = Kit_TruthWordNum(nVars)-1; w >= 0; w-- )
474 pOut[w] = (pIn0[w] & ~pCtrl[w]) | (pIn1[w] & pCtrl[w]);
476static inline void Kit_TruthIthVar(
unsigned * pTruth,
int nVars,
int iVar )
478 unsigned Masks[5] = { 0xAAAAAAAA, 0xCCCCCCCC, 0xF0F0F0F0, 0xFF00FF00, 0xFFFF0000 };
479 int k,
nWords = (nVars <= 5 ? 1 : (1 << (nVars - 5)));
482 for ( k = 0; k <
nWords; k++ )
483 pTruth[k] = Masks[iVar];
487 for ( k = 0; k <
nWords; k++ )
488 if ( k & (1 << (iVar-5)) )
489 pTruth[k] = ~(unsigned)0;
500#define Kit_SopForEachCube( cSop, uCube, i ) \
501 for ( i = 0; (i < Kit_SopCubeNum(cSop)) && ((uCube) = Kit_SopCube(cSop, i)); i++ )
502#define Kit_CubeForEachLiteral( uCube, Lit, nLits, i ) \
503 for ( i = 0; (i < (nLits)) && ((Lit) = Kit_CubeHasLit(uCube, i)); i++ )
505#define Kit_GraphForEachLeaf( pGraph, pLeaf, i ) \
506 for ( i = 0; (i < (pGraph)->nLeaves) && (((pLeaf) = Kit_GraphNode(pGraph, i)), 1); i++ )
507#define Kit_GraphForEachNode( pGraph, pAnd, i ) \
508 for ( i = (pGraph)->nLeaves; (i < (pGraph)->nSize) && (((pAnd) = Kit_GraphNode(pGraph, i)), 1); i++ )
516extern DdNode * Kit_SopToBdd( DdManager * dd,
Kit_Sop_t * cSop,
int nVars );
517extern DdNode * Kit_GraphToBdd( DdManager * dd,
Kit_Graph_t * pGraph );
518extern DdNode * Kit_TruthToBdd( DdManager * dd,
unsigned * pTruth,
int nVars,
int fMSBonTop );
553extern int Kit_DsdCofactoring(
unsigned * pTruth,
int nVars,
int * pCofVars,
int nLimit,
int fVerbose );
581extern int Kit_TruthIsop2(
unsigned * puTruth0,
unsigned * puTruth1,
int nVars,
Vec_Int_t * vMemory,
int fTryBoth,
int fReturnTt );
593extern char *
Kit_PlaStart(
void *
p,
int nCubes,
int nVars );
616extern void Kit_TruthStretch(
unsigned * pOut,
unsigned * pIn,
int nVars,
int nVarsAll,
unsigned Phase,
int fReturnIn );
617extern void Kit_TruthPermute(
unsigned * pOut,
unsigned * pIn,
int nVars,
char * pPerm,
int fReturnIn );
618extern void Kit_TruthShrink(
unsigned * pOut,
unsigned * pIn,
int nVars,
int nVarsAll,
unsigned Phase,
int fReturnIn );
627extern void Kit_TruthExist(
unsigned * pTruth,
int nVars,
int iVar );
628extern void Kit_TruthExistNew(
unsigned * pRes,
unsigned * pTruth,
int nVars,
int iVar );
629extern void Kit_TruthExistSet(
unsigned * pRes,
unsigned * pTruth,
int nVars,
unsigned uMask );
631extern void Kit_TruthForallNew(
unsigned * pRes,
unsigned * pTruth,
int nVars,
int iVar );
632extern void Kit_TruthForallSet(
unsigned * pRes,
unsigned * pTruth,
int nVars,
unsigned uMask );
633extern void Kit_TruthUniqueNew(
unsigned * pRes,
unsigned * pTruth,
int nVars,
int iVar );
634extern void Kit_TruthMuxVar(
unsigned * pOut,
unsigned * pCof0,
unsigned * pCof1,
int nVars,
int iVar );
635extern void Kit_TruthMuxVarPhase(
unsigned * pOut,
unsigned * pCof0,
unsigned * pCof1,
int nVars,
int iVar,
int fCompl0 );
637extern int Kit_TruthVarsSymm(
unsigned * pTruth,
int nVars,
int iVar0,
int iVar1,
unsigned * pCof0,
unsigned * pCof1 );
638extern int Kit_TruthVarsAntiSymm(
unsigned * pTruth,
int nVars,
int iVar0,
int iVar1,
unsigned * pCof0,
unsigned * pCof1 );
640extern int Kit_TruthBestCofVar(
unsigned * pTruth,
int nVars,
unsigned * pCof0,
unsigned * pCof1 );
#define ABC_NAMESPACE_HEADER_END
#define ABC_NAMESPACE_HEADER_START
NAMESPACES ///.
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
struct Vec_Str_t_ Vec_Str_t
typedefABC_NAMESPACE_HEADER_START struct cloudManager CloudManager
struct cloudNode CloudNode
void Kit_PlaToIsop(char *pSop, Vec_Int_t *vCover)
struct Kit_Graph_t_ Kit_Graph_t
int Kit_DsdNonDsdSizeMax(Kit_DsdNtk_t *pNtk)
Kit_DsdNtk_t * Kit_DsdDecompose(unsigned *pTruth, int nVars)
int Kit_TruthIsop(unsigned *puTruth, int nVars, Vec_Int_t *vMemory, int fTryBoth)
void Kit_SopDivideByLiteralQuo(Kit_Sop_t *cSop, int iLit)
Kit_Edge_t Kit_GraphAddNodeMux(Kit_Graph_t *pGraph, Kit_Edge_t eEdgeC, Kit_Edge_t eEdgeT, Kit_Edge_t eEdgeE, int Type)
void Kit_PlaComplement(char *pSop)
Kit_Graph_t * Kit_SopFactor(Vec_Int_t *vCover, int fCompl, int nVars, Vec_Int_t *vMemory)
FUNCTION DEFINITIONS ///.
void Kit_TruthIsopPrint(unsigned *puTruth, int nVars, Vec_Int_t *vMemory, int fTryBoth)
unsigned Kit_GraphToTruth(Kit_Graph_t *pGraph)
Kit_DsdNtk_t * Kit_DsdDeriveNtk(unsigned *pTruth, int nVars, int nLutSize)
void Kit_TruthSwapAdjacentVars(unsigned *pOut, unsigned *pIn, int nVars, int Start)
DECLARATIONS ///.
int Kit_PlaIsBuf(char *pSop)
void Kit_TruthCofactor0(unsigned *pTruth, int nVars, int iVar)
void Kit_DsdVerify(Kit_DsdNtk_t *pNtk, unsigned *pTruth, int nVars)
void Kit_SopCreate(Kit_Sop_t *cResult, Vec_Int_t *vInput, int nVars, Vec_Int_t *vMemory)
DECLARATIONS ///.
int Kit_CreateCloud(CloudManager *dd, CloudNode *pFunc, Vec_Int_t *vNodes)
void Kit_DsdPrint(FILE *pFile, Kit_DsdNtk_t *pNtk)
void Kit_SopMakeCubeFree(Kit_Sop_t *cSop)
int Kit_CreateCloudFromTruth(CloudManager *dd, unsigned *pTruth, int nVars, Vec_Int_t *vNodes)
int Kit_PlaIsInv(char *pSop)
void Kit_TruthCofSupports(Vec_Int_t *vBddDir, Vec_Int_t *vBddInv, int nVars, Vec_Int_t *vMemory, unsigned *puSupps)
char * Kit_PlaFromTruth(void *p, unsigned *pTruth, int nVars, Vec_Int_t *vCover)
void Kit_DsdManFree(Kit_DsdMan_t *p)
ABC_UINT64_T Kit_PlaToTruth6(char *pSop, int nVars)
void Kit_DsdTruth(Kit_DsdNtk_t *pNtk, unsigned *pTruthRes)
char * Kit_PlaFromTruthNew(unsigned *pTruth, int nVars, Vec_Int_t *vCover, Vec_Str_t *vStr)
unsigned Kit_TruthSupport(unsigned *pTruth, int nVars)
void Kit_TruthMuxVar(unsigned *pOut, unsigned *pCof0, unsigned *pCof1, int nVars, int iVar)
Kit_DsdNtk_t * Kit_DsdDecomposeExpand(unsigned *pTruth, int nVars)
unsigned Kit_TruthHash(unsigned *pIn, int nWords)
int Kit_SopAnyLiteral(Kit_Sop_t *cSop, int nLits)
void Kit_TruthCofactor1New(unsigned *pOut, unsigned *pIn, int nVars, int iVar)
char * Kit_TruthDumpToFile(unsigned *pTruth, int nVars, int nFile)
int Kit_DsdCofactoring(unsigned *pTruth, int nVars, int *pCofVars, int nLimit, int fVerbose)
void Kit_DsdWriteFromTruth(char *pBuffer, unsigned *pTruth, int nVars)
Kit_Edge_t Kit_GraphAddNodeAnd(Kit_Graph_t *pGraph, Kit_Edge_t eEdge0, Kit_Edge_t eEdge1)
int Kit_TruthBestCofVar(unsigned *pTruth, int nVars, unsigned *pCof0, unsigned *pCof1)
int Kit_TruthLitNum(unsigned *pTruth, int nVars, Vec_Int_t *vMemory)
typedefABC_NAMESPACE_HEADER_START struct Kit_Sop_t_ Kit_Sop_t
INCLUDES ///.
unsigned Kit_TruthSemiCanonicize(unsigned *pInOut, unsigned *pAux, int nVars, char *pCanonPerm)
void Kit_SopDup(Kit_Sop_t *cResult, Kit_Sop_t *cSop, Vec_Int_t *vMemory)
void Kit_TruthUniqueNew(unsigned *pRes, unsigned *pTruth, int nVars, int iVar)
void Kit_TruthCountOnesInCofs(unsigned *pTruth, int nVars, int *pStore)
Kit_Graph_t * Kit_GraphCreateConst1()
void Kit_TruthChangePhase(unsigned *pTruth, int nVars, int iVar)
void Kit_TruthCofactor0New(unsigned *pOut, unsigned *pIn, int nVars, int iVar)
void Kit_SopCommonCubeCover(Kit_Sop_t *cResult, Kit_Sop_t *cSop, Vec_Int_t *vMemory)
void Kit_TruthForallNew(unsigned *pRes, unsigned *pTruth, int nVars, int iVar)
int Kit_PlaIsConst1(char *pSop)
void Kit_DsdNtkFree(Kit_DsdNtk_t *pNtk)
struct Kit_DsdObj_t_ Kit_DsdObj_t
Kit_Graph_t * Kit_TruthToGraph2(unsigned *pTruth0, unsigned *pTruth1, int nVars, Vec_Int_t *vMemory)
Kit_DsdNtk_t * Kit_DsdShrink(Kit_DsdNtk_t *p, int pPrios[])
int Kit_TruthSupportSize(unsigned *pTruth, int nVars)
void Kit_TruthCofactor1(unsigned *pTruth, int nVars, int iVar)
struct Kit_Node_t_ Kit_Node_t
unsigned * Kit_DsdTruthCompute(Kit_DsdMan_t *p, Kit_DsdNtk_t *pNtk)
void Kit_DsdTruthPartialTwo(Kit_DsdMan_t *p, Kit_DsdNtk_t *pNtk, unsigned uSupp, int iVar, unsigned *pTruthCo, unsigned *pTruthDec)
int Kit_TruthVarIsVacuous(unsigned *pOnset, unsigned *pOffset, int nVars, int iVar)
unsigned * Kit_TruthCompose(CloudManager *dd, unsigned *pTruth, int nVars, unsigned **pInputs, int nVarsAll, Vec_Ptr_t *vStore, Vec_Int_t *vNodes)
void Kit_SopCreateInverse(Kit_Sop_t *cResult, Vec_Int_t *vInput, int nVars, Vec_Int_t *vMemory)
int Kit_TruthVarInSupport(unsigned *pTruth, int nVars, int iVar)
Kit_Node_t * Kit_GraphAppendNode(Kit_Graph_t *pGraph)
void Kit_TruthExistSet(unsigned *pRes, unsigned *pTruth, int nVars, unsigned uMask)
Kit_DsdMan_t * Kit_DsdManAlloc(int nVars, int nNodes)
DECLARATIONS ///.
int Kit_SopIsCubeFree(Kit_Sop_t *cSop)
void Kit_DsdPrintFromTruth(unsigned *pTruth, int nVars)
void Kit_TruthPrintProfile(unsigned *pTruth, int nVars)
void Kit_TruthExist(unsigned *pTruth, int nVars, int iVar)
char * Kit_PlaStart(void *p, int nCubes, int nVars)
int Kit_GraphLeafDepth_rec(Kit_Graph_t *pGraph, Kit_Node_t *pNode, Kit_Node_t *pLeaf)
void Kit_GraphFree(Kit_Graph_t *pGraph)
void Kit_TruthShrink(unsigned *pOut, unsigned *pIn, int nVars, int nVarsAll, unsigned Phase, int fReturnIn)
int Kit_TruthIsop2(unsigned *puTruth0, unsigned *puTruth1, int nVars, Vec_Int_t *vMemory, int fTryBoth, int fReturnTt)
FUNCTION DEFINITIONS ///.
unsigned Kit_DsdGetSupports(Kit_DsdNtk_t *p)
int Kit_PlaGetVarNum(char *pSop)
unsigned Kit_DsdNonDsdSupports(Kit_DsdNtk_t *pNtk)
Kit_Graph_t * Kit_GraphCreateLeaf(int iLeaf, int nLeaves, int fCompl)
Kit_Edge_t Kit_GraphAddNodeOr(Kit_Graph_t *pGraph, Kit_Edge_t eEdge0, Kit_Edge_t eEdge1)
void Kit_SopDivideByCube(Kit_Sop_t *cSop, Kit_Sop_t *cDiv, Kit_Sop_t *vQuo, Kit_Sop_t *vRem, Vec_Int_t *vMemory)
int Kit_PlaGetCubeNum(char *pSop)
void Kit_DsdPrintFromTruth2(FILE *pFile, unsigned *pTruth, int nVars)
char * Kit_PlaCreateFromIsop(void *p, int nVars, Vec_Int_t *vCover)
void Kit_TruthExistNew(unsigned *pRes, unsigned *pTruth, int nVars, int iVar)
Kit_Graph_t * Kit_GraphCreate(int nLeaves)
DECLARATIONS ///.
int Kit_DsdCountAigNodes(Kit_DsdNtk_t *pNtk)
void Kit_TruthCountOnesInCofsSlow(unsigned *pTruth, int nVars, int *pStore, unsigned *pAux)
struct Kit_DsdNtk_t_ Kit_DsdNtk_t
Kit_DsdNtk_t * Kit_DsdDecomposeMux(unsigned *pTruth, int nVars, int nDecMux)
Kit_Edge_t Kit_GraphAddNodeXor(Kit_Graph_t *pGraph, Kit_Edge_t eEdge0, Kit_Edge_t eEdge1, int Type)
char * Kit_PlaStoreSop(void *p, char *pSop)
Kit_DsdNtk_t * Kit_DsdExpand(Kit_DsdNtk_t *p)
struct Kit_DsdMan_t_ Kit_DsdMan_t
void Kit_TruthCountOnesInCofs0(unsigned *pTruth, int nVars, int *pStore)
int Kit_PlaIsComplement(char *pSop)
void Kit_TruthIsopPrintCover(Vec_Int_t *vCover, int nVars, int fCompl)
void Kit_DsdTruthPartial(Kit_DsdMan_t *p, Kit_DsdNtk_t *pNtk, unsigned *pTruthRes, unsigned uSupp)
void Kit_TruthPermute(unsigned *pOut, unsigned *pIn, int nVars, char *pPerm, int fReturnIn)
Kit_Graph_t * Kit_GraphCreateConst0()
void Kit_DsdPrintExpanded(Kit_DsdNtk_t *pNtk)
int Kit_SopDivisor(Kit_Sop_t *cResult, Kit_Sop_t *cSop, int nLits, Vec_Int_t *vMemory)
Vec_Int_t * Kit_IsopResub(unsigned *pTruth0, unsigned *pTruth1, int nVars, Vec_Int_t *vMemory)
int Kit_PlaIsConst0(char *pSop)
DECLARATIONS ///.
Kit_Graph_t * Kit_TruthToGraph(unsigned *pTruth, int nVars, Vec_Int_t *vMemory)
unsigned * Kit_CloudToTruth(Vec_Int_t *vNodes, int nVars, Vec_Ptr_t *vStore, int fInv)
void Kit_TruthForall(unsigned *pTruth, int nVars, int iVar)
struct Kit_Edge_t_ Kit_Edge_t
void Kit_TruthForallSet(unsigned *pRes, unsigned *pTruth, int nVars, unsigned uMask)
int Kit_TruthVarsAntiSymm(unsigned *pTruth, int nVars, int iVar0, int iVar1, unsigned *pCof0, unsigned *pCof1)
void Kit_TruthStretch(unsigned *pOut, unsigned *pIn, int nVars, int nVarsAll, unsigned Phase, int fReturnIn)
CloudNode * Kit_TruthToCloud(CloudManager *dd, unsigned *pTruth, int nVars)
FUNCTION DECLARATIONS ///.
void Kit_PlaToTruth(char *pSop, int nVars, Vec_Ptr_t *vVars, unsigned *pTemp, unsigned *pTruth)
int Kit_TruthMinCofSuppOverlap(unsigned *pTruth, int nVars, int *pVarMin)
void Kit_SopDivideInternal(Kit_Sop_t *cSop, Kit_Sop_t *cDiv, Kit_Sop_t *vQuo, Kit_Sop_t *vRem, Vec_Int_t *vMemory)
void Kit_DsdRotate(Kit_DsdNtk_t *p, int pFreqs[])
Kit_DsdObj_t * Kit_DsdNonDsdPrimeMax(Kit_DsdNtk_t *pNtk)
void Kit_TruthMuxVarPhase(unsigned *pOut, unsigned *pCof0, unsigned *pCof1, int nVars, int iVar, int fCompl0)
int Kit_IsopNodeNum(unsigned *pTruth0, unsigned *pTruth1, int nVars, Vec_Int_t *vMemory)
int Kit_TruthVarsSymm(unsigned *pTruth, int nVars, int iVar0, int iVar1, unsigned *pCof0, unsigned *pCof1)
void Kit_SopBestLiteralCover(Kit_Sop_t *cResult, Kit_Sop_t *cSop, unsigned uCube, int nLits, Vec_Int_t *vMemory)
unsigned short nNodesAlloc
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.