46static inline int Abc_NtkFuncCof0(
int t,
int v )
48 static int s_Truth[3] = { 0xAA, 0xCC, 0xF0 };
49 return 0xff & ((t & ~s_Truth[v]) | ((t & ~s_Truth[v]) << (1<<v)));
63static inline int Abc_NtkFuncCof1(
int t,
int v )
65 static int s_Truth[3] = { 0xAA, 0xCC, 0xF0 };
66 return 0xff & ((t & s_Truth[v]) | ((t & s_Truth[v]) >> (1<<v)));
80static inline int Abc_NtkFuncHasVar(
int t,
int v )
82 static int s_Truth[3] = { 0xAA, 0xCC, 0xF0 };
83 return ((t & s_Truth[v]) >> (1<<v)) != (t & ~s_Truth[v]);
97static inline int Abc_NtkFuncSuppSize(
int t )
99 return Abc_NtkFuncHasVar(t, 0) + Abc_NtkFuncHasVar(t, 1) + Abc_NtkFuncHasVar(t, 2);
117 for ( i = 0; i < 256; i++ )
120 if ( Abc_NtkFuncSuppSize( i ) < 3 )
124 if ( (Abc_NtkFuncSuppSize(Abc_NtkFuncCof0(i,0)) == 1 && Abc_NtkFuncSuppSize(Abc_NtkFuncCof1(i,0)) == 1) ||
125 (Abc_NtkFuncSuppSize(Abc_NtkFuncCof0(i,1)) == 1 && Abc_NtkFuncSuppSize(Abc_NtkFuncCof1(i,1)) == 1) ||
126 (Abc_NtkFuncSuppSize(Abc_NtkFuncCof0(i,2)) == 1 && Abc_NtkFuncSuppSize(Abc_NtkFuncCof1(i,2)) == 1) )
132 printf(
"%d, // %3d 0x%02X\n", Value, i, i );
134 printf(
"Total number of MUXes = %d.\n", CounterM );
150 static char uLookup[256] = {
410 if ( pCut->
nLeaves == 3 && uLookup[0xff & *If_CutTruth(
p, pCut)] )
412 return (1 << pCut->
nLeaves) - 1;
int Abc_NtkCutCostMux(If_Man_t *p, If_Cut_t *pCut)
void Abc_NtkCutCostMuxPrecompute()
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
struct If_Cut_t_ If_Cut_t
struct If_Man_t_ If_Man_t
BASIC TYPES ///.