ABC: A System for Sequential Synthesis and Verification
 
Loading...
Searching...
No Matches
bdcTable.c
Go to the documentation of this file.
1
20
21#include "bdcInt.h"
22
24
25
29
33
45int Bdc_TableCheckContainment( Bdc_Man_t * p, Bdc_Isf_t * pIsf, unsigned * puTruth )
46{
47 return Kit_TruthIsImply( pIsf->puOn, puTruth, p->nVars ) &&
48 Kit_TruthIsDisjoint( puTruth, pIsf->puOff, p->nVars );
49}
50
63{
64 int fDisableCache = 0;
65 Bdc_Fun_t * pFunc;
66 if ( fDisableCache && Kit_WordCountOnes(pIsf->uSupp) > 1 )
67 return NULL;
68 if ( pIsf->uSupp == 0 )
69 {
70 assert( p->pTable[pIsf->uSupp] == p->pNodes );
71 if ( Kit_TruthIsConst1( pIsf->puOn, p->nVars ) )
72 return p->pNodes;
73 assert( Kit_TruthIsConst1( pIsf->puOff, p->nVars ) );
74 return Bdc_Not(p->pNodes);
75 }
76 for ( pFunc = p->pTable[pIsf->uSupp]; pFunc; pFunc = pFunc->pNext )
77 if ( Bdc_TableCheckContainment( p, pIsf, pFunc->puFunc ) )
78 return pFunc;
79 Bdc_IsfNot( pIsf );
80 for ( pFunc = p->pTable[pIsf->uSupp]; pFunc; pFunc = pFunc->pNext )
81 if ( Bdc_TableCheckContainment( p, pIsf, pFunc->puFunc ) )
82 {
83 Bdc_IsfNot( pIsf );
84 return Bdc_Not(pFunc);
85 }
86 Bdc_IsfNot( pIsf );
87 return NULL;
88}
89
102{
103 if ( p->pTable[pFunc->uSupp] == NULL )
104 Vec_IntPush( p->vSpots, pFunc->uSupp );
105 pFunc->pNext = p->pTable[pFunc->uSupp];
106 p->pTable[pFunc->uSupp] = pFunc;
107}
108
121{
122 int Spot, i;
123 Vec_IntForEachEntry( p->vSpots, Spot, i )
124 p->pTable[Spot] = NULL;
125 Vec_IntClear( p->vSpots );
126}
127
131
132
134
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
struct Bdc_Isf_t_ Bdc_Isf_t
Definition bdcInt.h:72
void Bdc_TableAdd(Bdc_Man_t *p, Bdc_Fun_t *pFunc)
Definition bdcTable.c:101
ABC_NAMESPACE_IMPL_START int Bdc_TableCheckContainment(Bdc_Man_t *p, Bdc_Isf_t *pIsf, unsigned *puTruth)
DECLARATIONS ///.
Definition bdcTable.c:45
void Bdc_TableClear(Bdc_Man_t *p)
Definition bdcTable.c:120
Bdc_Fun_t * Bdc_TableLookup(Bdc_Man_t *p, Bdc_Isf_t *pIsf)
Definition bdcTable.c:62
typedefABC_NAMESPACE_HEADER_START struct Bdc_Fun_t_ Bdc_Fun_t
INCLUDES ///.
Definition bdc.h:42
struct Bdc_Man_t_ Bdc_Man_t
Definition bdc.h:43
Cube * p
Definition exorList.c:222
unsigned * puOn
Definition bdcInt.h:77
unsigned uSupp
Definition bdcInt.h:75
unsigned * puOff
Definition bdcInt.h:78
#define assert(ex)
Definition util_old.h:213
#define Vec_IntForEachEntry(vVec, Entry, i)
MACRO DEFINITIONS ///.
Definition vecInt.h:54