35 #define IFN_WRD (IFN_INS > 6 ? 1 << (IFN_INS-6) : 1)
118 assert( nVars <= p->nInps );
123 for ( i = p->
nInps; i < p->nObjs; i++ )
133 printf(
"Groups start %d\n", p->
nPars );
145 printf(
"String is empty.\n" );
148 for ( i = p->
nInps; i < p->nObjs; i++ )
150 printf(
"%c=",
'a'+i );
162 for ( i = p->
nInps; i < p->nObjs; i++ )
187 va_start( args, format );
190 printf(
"%s", pMessage );
196 if ( pStr[0] ==
'(' )
198 if ( pStr[0] ==
'[' )
200 if ( pStr[0] ==
'<' )
202 if ( pStr[0] ==
'{' )
208 int i, nNodes = 0, Marks[32] = {0}, MaxVar = -1;
209 for ( i = 0; pStr[i]; i++ )
213 if ( pStr[i] ==
';' ||
214 pStr[i] ==
'(' || pStr[i] ==
')' ||
215 pStr[i] ==
'[' || pStr[i] ==
']' ||
216 pStr[i] ==
'<' || pStr[i] ==
'>' ||
217 pStr[i] ==
'{' || pStr[i] ==
'}' )
219 if ( pStr[i] >=
'A' && pStr[i] <=
'Z' )
221 if ( pStr[i] >=
'a' && pStr[i] <=
'z' )
223 MaxVar =
Abc_MaxInt( MaxVar, (
int)(pStr[i] -
'a') );
224 Marks[pStr[i] -
'a'] = 1;
227 return Ifn_ErrorMessage(
"String \"%s\" contains unrecognized symbol \'%c\'.\n", pStr, pStr[i] );
229 for ( i = 0; i <= MaxVar; i++ )
231 return Ifn_ErrorMessage(
"String \"%s\" has no symbol \'%c\'.\n", pStr,
'a' + i );
232 *pnInps = MaxVar + 1;
233 *pnObjs = MaxVar + 1 + nNodes;
240 for ( ; *pStr; pStr++ )
244 if ( *pStr == Close )
254 int nFanins = 0, pFanins[
IFN_INS];
260 while ( pStr < pLim )
263 if ( pStr[0] >=
'a' && pStr[0] <=
'z' )
264 pFanins[nFanins++] = pStr[0] -
'a', pStr++;
269 pFanins[nFanins++] = *piNode - 1;
272 return Ifn_ErrorMessage(
"Substring \"%s\" contans unrecognized symbol \'%c\'.\n", pStr, pStr[0] );
275 pObj = p->
Nodes + (*piNode)++;
287 char * pFinal;
int iNode;
291 return Ifn_ErrorMessage(
"The number of variables (%d) exceeds predefined limit (%d). Recompile with different value of IFN_INS.\n", p->
nInps,
IFN_INS );
294 return Ifn_ErrorMessage(
"The first symbol should be one of the symbols: (, [, <, {.\n" );
298 if ( pFinal[0] && pFinal[0] !=
';' )
300 if ( iNode != p->
nObjs )
319 for ( i = 0; pStr[i]; i++ )
320 if ( pStr[i] ==
'=' )
326 int i, Marks[32] = {0}, MaxVar = 0, MaxDef = 0;
327 for ( i = 0; pStr[i]; i++ )
329 if ( pStr[i] ==
'=' || pStr[i] ==
';' ||
330 pStr[i] ==
'(' || pStr[i] ==
')' ||
331 pStr[i] ==
'[' || pStr[i] ==
']' ||
332 pStr[i] ==
'<' || pStr[i] ==
'>' ||
333 pStr[i] ==
'{' || pStr[i] ==
'}' )
335 if ( pStr[i] >=
'A' && pStr[i] <=
'Z' )
337 if ( pStr[i] >=
'a' && pStr[i] <=
'z' )
339 if ( pStr[i+1] ==
'=' )
340 Marks[pStr[i] -
'a'] = 2, MaxDef =
Abc_MaxInt(MaxDef, pStr[i] -
'a');
343 return Ifn_ErrorMessage(
"String \"%s\" contains unrecognized symbol \'%c\'.\n", pStr, pStr[i] );
345 for ( i = 0; pStr[i]; i++ )
347 if ( pStr[i] ==
'=' || pStr[i] ==
';' ||
348 pStr[i] ==
'(' || pStr[i] ==
')' ||
349 pStr[i] ==
'[' || pStr[i] ==
']' ||
350 pStr[i] ==
'<' || pStr[i] ==
'>' ||
351 pStr[i] ==
'{' || pStr[i] ==
'}' )
353 if ( pStr[i] >=
'A' && pStr[i] <=
'Z' )
355 if ( pStr[i] >=
'a' && pStr[i] <=
'z' )
357 if ( pStr[i+1] !=
'=' && Marks[pStr[i] -
'a'] != 2 )
358 Marks[pStr[i] -
'a'] = 1, MaxVar =
Abc_MaxInt(MaxVar, pStr[i] -
'a');
361 return Ifn_ErrorMessage(
"String \"%s\" contains unrecognized symbol \'%c\'.\n", pStr, pStr[i] );
365 for ( i = 0; i < MaxDef; i++ )
367 return Ifn_ErrorMessage(
"String \"%s\" has no symbol \'%c\'.\n", pStr,
'a' + i );
368 for ( i = 0; i < MaxVar; i++ )
370 return Ifn_ErrorMessage(
"String \"%s\" has definition of input variable \'%c\'.\n", pStr,
'a' + i );
371 for ( i = MaxVar; i < MaxDef; i++ )
373 return Ifn_ErrorMessage(
"String \"%s\" has no definition for internal variable \'%c\'.\n", pStr,
'a' + i );
380 int i, k, n, f, nFans, iFan;
384 return Ifn_ErrorMessage(
"The number of variables (%d) exceeds predefined limit (%d). Recompile with different value of IFN_INS.\n", p->
nInps,
IFN_INS );
386 for ( i = p->
nInps; i < p->nObjs; i++ )
389 for ( k = 0; pStr[k]; k++ )
390 if ( pStr[k] ==
'a' + i && pStr[k+1] ==
'=' )
393 return Ifn_ErrorMessage(
"Cannot find definition of signal \'%c\'.\n",
'a' + i );
394 if ( pStr[k+2] ==
'(' )
396 else if ( pStr[k+2] ==
'[' )
398 else if ( pStr[k+2] ==
'<' )
400 else if ( pStr[k+2] ==
'{' )
403 return Ifn_ErrorMessage(
"Cannot find openning operation symbol in the defition of of signal \'%c\'.\n",
'a' + i );
404 for ( n = k + 3; pStr[n]; n++ )
405 if ( pStr[n] == Next )
408 return Ifn_ErrorMessage(
"Cannot find closing operation symbol in the defition of of signal \'%c\'.\n",
'a' + i );
410 if ( nFans < 1 || nFans > 8 )
411 return Ifn_ErrorMessage(
"Cannot find matching operation symbol in the defition of of signal \'%c\'.\n",
'a' + i );
412 for ( f = 0; f < nFans; f++ )
414 iFan = pStr[k + 3 + f] -
'a';
415 if ( iFan < 0 || iFan >= i )
416 return Ifn_ErrorMessage(
"Fanin number %d is signal %d is out of range.\n", f,
'a' + i );
428 for ( i = 0; i < p->
nInps; i++ )
429 for ( k = 0; pStr[k]; k++ )
430 if ( pStr[k] ==
'A' + i && pStr[k-1] ==
';' )
432 p->
pConstr[p->
nConstr++] = ((int)(pStr[k] -
'A') << 16) | (
int)(pStr[k+1] -
'A');
484 for ( i = 0; i < p->
nInps; i++ )
486 for ( i = p->
nObjs; i < p->nParsVIni; i++ )
488 for ( i = p->
nInps; i < p->nObjs; i++ )
497 for ( k = 0; k < nFans; k++ )
504 for ( k = 0; k < nFans; k++ )
511 pVarMap[i] =
Gia_ManHashMux( pNew, pVarMap[pFans[0]], pVarMap[pFans[1]], pVarMap[pFans[2]] );
515 int n, Step, pVarsData[256];
516 int nMints = (1 << nFans);
517 assert( nFans >= 1 && nFans <= 8 );
518 for ( k = 0; k < nMints; k++ )
519 pVarsData[k] = pVarMap[iFanin + k];
520 for ( Step = 1, k = 0; k < nFans; k++, Step <<= 1 )
521 for ( n = 0; n < nMints; n += Step << 1 )
522 pVarsData[n] =
Gia_ManHashMux( pNew, pVarMap[pFans[k]], pVarsData[n+Step], pVarsData[n] );
524 pVarMap[i] = pVarsData[0];
541 int i, m, nMints = 1 << nIns;
549 for ( m = 0; m < nMints; m++ )
553 pObj->
Value = ((m >> i) & 1);
595 for ( i = 0; i < pCnf->
nClauses; i++ )
612 *pvPiVars = *pvPoVars = NULL;
647 for ( i = 0; i < nVars; i++ )
648 printf(
"%c",
'a' + pPerms[i] );
653 int v, Value, m, mNew, nMints = (1 << nVars);
658 for ( m = 0; m < nMints; m++ )
661 for ( v = 0; v < nInps; v++ )
663 assert( pPerm[v] < nVars );
664 if ( ((m >> pPerm[v]) & 1) )
678 return (
int)(Value ==
l_True);
692 for ( i = 0; i < nInps; i++ )
695 assert( pPerm[i] < nVars );
734 int i, Id, k, iLit, iVar = 0, nVarsNew, pVarMap[1000];
738 for ( i = p->
nInps; i < p->nObjs; i++ )
748 for ( k = 0; k < nFans; k++ )
755 for ( k = 0; k < nFans; k++ )
762 pVarMap[i] =
Gia_ManHashMux( pNew, pVarMap[pFans[0]], pVarMap[pFans[1]], pVarMap[pFans[2]] );
769 int nMints = (1 << nFans);
770 for ( k = 0; k < nMints; k++ )
772 uTruth |= ((
word)1 << k);
775 for ( k = 0; k < nFans; k++ )
776 pFaninLits[k] = pVarMap[pFans[k]];
780 pVarMap[i] = (int)(uTruth & 1);
784 Vec_Int_t Leaves = { nVarsNew, nVarsNew, pFaninLits };
785 pVarMap[i] =
Kit_TruthToGia( pNew, (
unsigned *)&uTruth, nVarsNew, vCover, &Leaves, 1 );
791 return pVarMap[p->
nObjs - 1];
807 int i, v, f, iVar, iStart;
809 for ( i = 0; i < p->
nInps; i++ )
813 for ( v = iVar = 0; v < p->
nParsVNum; v++ )
814 if ( p->
Values[iStart+v] )
820 for ( i = p->
nInps; i < p->nObjs; i++ )
828 for ( f = 0; f < nFans; f++ )
834 for ( f = 0; f < nFans; f++ )
844 int nValues = (1 << nFans);
847 for ( v = 0; v < nValues; v++ )
852 for ( f = 0; f < nFans; f++ )
879 word Cond[4], Equa[4], Temp[4];
880 word s_TtElems[8][4] = {
891 assert( nVars > 0 && nVars <= 4 );
894 for ( i = nVars - 1; i >= 0; i-- )
897 Abc_TtSharp( Cond, s_TtElems[2*i+1], s_TtElems[2*i+0], nWords );
899 Abc_TtSharp( Cond, s_TtElems[2*i+0], s_TtElems[2*i+1], nWords );
900 Abc_TtAnd( Temp, Equa, Cond, nWords, 0 );
901 Abc_TtOr( pTruth, pTruth, Temp, nWords );
902 Abc_TtXor( Temp, s_TtElems[2*i+0], s_TtElems[2*i+1], nWords, 1 );
903 Abc_TtAnd( Equa, Equa, Temp, nWords, 0 );
926 for ( ; pBeg < pEnd; pBeg++ )
934 int RetValue, k, c, Cube, Literal, nLits, pLits[
IFN_INS];
938 for ( k = 0; k < nVars; k++ )
940 Literal = 3 & (Cube >> (k << 1));
943 else if ( Literal == 2 )
945 else if ( Literal != 0 )
965 for ( i = 0; i < p->
nInps; i++ )
973 if ( fAddConstr && p->
nConstr )
976 int i, k, RetValue, pVars[2*
IFN_INS];
982 for ( i = 0; i < p->
nConstr; i++ )
984 int iVar1 = p->
pConstr[i] >> 16;
985 int iVar2 = p->
pConstr[i] & 0xFFFF;
1014 for ( i = 0; i < p->
nObjs-1; i++ )
1019 for ( i = 0; i < p->
nVars; i++ )
1020 assert( pValues[i] != -1 );
1021 for ( i = p->
nVars; i < p->nObjs-1; i++ )
1022 assert( pValues[i] == -1 );
1026 for ( i = 0; i < p->
nInps; i++ )
1029 for ( v = 0; v < p->
nVars; v++ )
1035 pLits[f+1] =
Abc_Var2Lit( iParStart + f, (v >> f) & 1 );
1041 for ( i = p->
nInps; i < p->nObjs; i++ )
1049 for ( f = 0; f < nFans; f++ )
1064 int m, nMints = (1 << (nFans+1));
1065 for ( m = 0; m < nMints; m++ )
1069 for ( v = 0; v <= nFans; v++ )
1070 Count += ((m >> v) & 1);
1071 if ( (Count & 1) == 0 )
1075 for ( v = 0; v < nFans; v++ )
1109 int nValues = (1 << nFans);
1111 for ( v = 0; v < nValues; v++ )
1114 if ( pValues[i] == -1 )
1120 for ( f = 0; f < nFans; f++, nLits++ )
1125 if ( pValues[i] != 0 )
1130 if ( pValues[i] != 1 )
1156 printf(
"Iter = %5d ", Iter );
1157 printf(
"Mint = %5d ", iMint );
1158 printf(
"Value = %2d ", Value );
1163 printf(
"status = unsat" );
1164 else if ( status ==
l_True )
1165 printf(
"status = sat " );
1167 printf(
"status = undec" );
1173 for ( v = p->
nObjs; v < p->nPars; v++ )
1175 for ( i = p->
nInps; i < p->nObjs; i++ )
1190 for ( i = 0; i < p->
nInps; i++ )
1192 for ( Mint = v = 0; v < p->
nParsVNum; v++ )
1203 for ( i = 0; i < nInps; i++ )
1211 int nIterMax = (1<<nVars);
1212 int i, v, status, iMint = 0;
1221 if ( pPerm ) *pPerm = 0;
1222 for ( i = 0; i < nIterMax; i++ )
1225 for ( v = 0; v < p->
nObjs; v++ )
1226 p->
Values[v] = v < p->nVars ? (iMint >> v) & 1 : -1;
1240 for ( v = p->
nObjs; v < p->nPars; v++ )
1310 char * pStr =
"{({(ab)cde}f)ghi};AB;CD;DE;GH;HI";
1318 RetValue =
Ifn_NtkMatch( p, pTruth, nVars, 0, 1, 1, &Perm );
static void Abc_TtSharp(word *pOut, word *pIn1, word *pIn2, int nWords)
static int * Vec_IntArray(Vec_Int_t *p)
int Inf_ManOpenSymb(char *pStr)
void Ifn_TtComparisonConstr(word *pTruth, int nVars, int fMore, int fEqual)
word pTtObjs[2 *IFN_INS *IFN_WRD]
int Ifn_NtkAddClauses(Ifn_Ntk_t *p, int *pValues, sat_solver *pSat)
Ifn_Obj_t Nodes[2 *IFN_INS]
static int Abc_TtMinBase(word *pTruth, int *pVars, int nVars, int nVarsAll)
int Ifn_Prepare(Ifn_Ntk_t *p, word *pTruth, int nVars)
FUNCTION DEFINITIONS ///.
void Gia_ManStop(Gia_Man_t *p)
Aig_Man_t * Gia_ManToAigSimple(Gia_Man_t *p)
int Ifn_NtkParseInt(char *pStr, Ifn_Ntk_t *p)
int Ifn_NtkParseInt_rec(char *pStr, Ifn_Ntk_t *p, char **ppFinal, int *piNode)
#define Gia_ManForEachCo(p, pObj, i)
static int Gia_ManPoNum(Gia_Man_t *p)
Cnf_Dat_t * Cnf_Derive(Aig_Man_t *pAig, int nOutputs)
typedefABC_NAMESPACE_HEADER_START struct Aig_Man_t_ Aig_Man_t
INCLUDES ///.
static char * Ifn_NtkParseFindClosingParanthesis(char *pStr, char Open, char Close)
static int Gia_ManAppendCo(Gia_Man_t *p, int iLit0)
int sat_solver_addclause(sat_solver *s, lit *begin, lit *end)
int Gia_ManHashXor(Gia_Man_t *p, int iLit0, int iLit1)
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
sat_solver * Ifn_ManSatBuild(Ifn_Ntk_t *p, Vec_Int_t **pvPiVars, Vec_Int_t **pvPoVars)
void Aig_ManStop(Aig_Man_t *p)
void Ifn_NtkMatchPrintStatus(sat_solver *p, int Iter, int status, int iMint, int Value, abctime clk)
int sat_solver_solve(sat_solver *s, lit *begin, lit *end, ABC_INT64_T nConfLimit, ABC_INT64_T nInsLimit, ABC_INT64_T nConfLimitGlobal, ABC_INT64_T nInsLimitGlobal)
int Ifn_NtkMatch(Ifn_Ntk_t *p, word *pTruth, int nVars, int nConfls, int fVerbose, int fVeryVerbose, word *pPerm)
word Ifn_NtkMatchCollectPerm(Ifn_Ntk_t *p, sat_solver *pSat)
static int Gia_ManAppendCi(Gia_Man_t *p)
void sat_solver_delete(sat_solver *s)
static void Abc_TtClear(word *pOut, int nWords)
static int Abc_Var2Lit(int Var, int fCompl)
int Ifn_ErrorMessage(const char *format,...)
static int Abc_TtFindFirstBit(word *pIn, int nVars)
int sat_solver_nconflicts(sat_solver *s)
word pTtElems[IFN_INS *IFN_WRD]
int Ifn_ManStrCheck2(char *pStr, int *pnInps, int *pnObjs)
void Dau_DsdPrintFromTruth(word *pTruth, int nVarsInit)
void Ifn_NtkAddConstraints(Ifn_Ntk_t *p, sat_solver *pSat)
static void Abc_TtOr(word *pOut, word *pIn1, word *pIn2, int nWords)
word * Dau_DsdToTruth(char *p, int nVars)
void Ifn_ManSatDeriveOne(sat_solver *pSat, Vec_Int_t *vPiVars, Vec_Int_t *vValues)
int Ifn_NtkInputNum(Ifn_Ntk_t *p)
int Ifn_ManSatCheckOne(sat_solver *pSat, Vec_Int_t *vPoVars, word *pTruth, int nVars, int *pPerm, int nInps, Vec_Int_t *vLits)
static abctime Abc_Clock()
static int Abc_TtGetBit(word *p, int i)
MACRO DEFINITIONS ///.
static int Abc_MaxInt(int a, int b)
static int Abc_TtGetHex(word *p, int k)
int Ifn_NtkLutSizeMax(Ifn_Ntk_t *p)
static Cnf_Dat_t * Cnf_DeriveGiaRemapped(Gia_Man_t *p)
static int sat_solver_var_value(sat_solver *s, int v)
#define Gia_ManForEachCiId(p, Id, i)
int Ifn_ManStrType2(char *pStr)
#define Gia_ManForEachCi(p, pObj, i)
static void Abc_PrintTime(int level, const char *pStr, abctime time)
static void Vec_IntWriteEntry(Vec_Int_t *p, int i, int Entry)
static int Aig_ManCoNum(Aig_Man_t *p)
sat_solver * Ifn_ManStrFindSolver(Gia_Man_t *p, Vec_Int_t **pvPiVars, Vec_Int_t **pvPoVars)
int If_ManSatFindCofigBits(void *pSat, Vec_Int_t *vPiVars, Vec_Int_t *vPoVars, word *pTruth, int nVars, word Perm, int nInps, Vec_Int_t *vValues)
static int Abc_LitIsCompl(int Lit)
static void Abc_TtFill(word *pOut, int nWords)
static char * Ifn_Symbs[16]
static void Abc_TtCopy(word *pOut, word *pIn, int nWords, int fCompl)
void Ifn_NtkParseConstraints(char *pStr, Ifn_Ntk_t *p)
static Vec_Int_t * Vec_IntAlloc(int nCap)
FUNCTION DEFINITIONS ///.
Ifn_Ntk_t * Ifn_NtkParse(char *pStr)
#define IFN_INS
DECLARATIONS ///.
int Kit_TruthIsop(unsigned *puTruth, int nVars, Vec_Int_t *vMemory, int fTryBoth)
FUNCTION DEFINITIONS ///.
static int Gia_ObjFanin1Copy(Gia_Obj_t *pObj)
char * vnsprintf(const char *format, va_list args)
void sat_solver_setnvars(sat_solver *s, int n)
static int Vec_IntEntry(Vec_Int_t *p, int i)
unsigned __int64 word
DECLARATIONS ///.
int sat_solver_nvars(sat_solver *s)
#define ABC_NAMESPACE_IMPL_END
int Gia_ManHashMux(Gia_Man_t *p, int iCtrl, int iData1, int iData0)
static void Vec_IntFill(Vec_Int_t *p, int nSize, int Fill)
static word Abc_Tt6Stretch(word t, int nVars)
void Gia_ManHashStart(Gia_Man_t *p)
void * If_ManSatBuildFromCell(char *pStr, Vec_Int_t **pvPiVars, Vec_Int_t **pvPoVars, Ifn_Ntk_t **ppNtk)
Gia_Man_t * Gia_ManStart(int nObjsMax)
DECLARATIONS ///.
#define IF_MAX_FUNC_LUTSIZE
#define Gia_ManForEachAnd(p, pObj, i)
int Ifn_NtkParseInt2(char *pStr, Ifn_Ntk_t *p)
static void Vec_IntPush(Vec_Int_t *p, int Entry)
static int Gia_ObjId(Gia_Man_t *p, Gia_Obj_t *pObj)
static void Vec_IntFreeP(Vec_Int_t **p)
void Ifn_NtkAddConstrOne(sat_solver *pSat, Vec_Int_t *vCover, int *pVars, int nVars)
int Ifn_ManStrCheck(char *pStr, int *pnInps, int *pnObjs)
static int Gia_ObjFanin0Copy(Gia_Obj_t *pObj)
ABC_NAMESPACE_IMPL_START int Kit_TruthToGia(Gia_Man_t *pMan, unsigned *pTruth, int nVars, Vec_Int_t *vMemory, Vec_Int_t *vLeaves, int fHash)
DECLARATIONS ///.
int Ifn_AddClause(sat_solver *pSat, int *pBeg, int *pEnd)
static word Abc_Tt6Mask(int nBits)
int sat_solver_nclauses(sat_solver *s)
#define ABC_NAMESPACE_IMPL_START
word * Ifn_NtkDeriveTruth(Ifn_Ntk_t *p, int *pValues)
Gia_Man_t * Ifn_ManStrFindModel(Ifn_Ntk_t *p)
static int Gia_ManCiNum(Gia_Man_t *p)
Gia_Man_t * Ifn_ManStrFindCofactors(int nIns, Gia_Man_t *p)
sat_solver * sat_solver_new(void)
static int Vec_IntSize(Vec_Int_t *p)
static word * Ifn_ElemTruth(Ifn_Ntk_t *p, int i)
static int Abc_TtWordNum(int nVars)
static void Abc_TtSetHex(word *p, int k, int d)
void Ifn_NtkPrint(Ifn_Ntk_t *p)
static void Vec_IntShrink(Vec_Int_t *p, int nSizeNew)
#define ABC_CONST(number)
PARAMETERS ///.
static void Abc_TtMux(word *pOut, word *pCtrl, word *pIn1, word *pIn0, int nWords)
static int Abc_Base2Log(unsigned n)
static Gia_Obj_t * Gia_ManConst0(Gia_Man_t *p)
static void Abc_TtElemInit2(word *pTtElems, int nVars)
static int Abc_Lit2Var(int Lit)
#define ABC_CALLOC(type, num)
int Ifn_ManSatFindCofigBitsTest(Ifn_Ntk_t *p, word *pTruth, int nVars, word Perm)
void Cnf_DataFree(Cnf_Dat_t *p)
void Ifn_NtkMatchPrintConfig(Ifn_Ntk_t *p, sat_solver *pSat)
void Ifn_ManSatPrintPerm(char *pPerms, int nVars)
static word * Ifn_ObjTruth(Ifn_Ntk_t *p, int i)
static void Vec_IntPrint(Vec_Int_t *vVec)
void Gia_ManHashAlloc(Gia_Man_t *p)
void Ifn_NtkMatchPrintPerm(word Perm, int nInps)
static void Abc_TtAnd(word *pOut, word *pIn1, word *pIn2, int nWords, int fCompl)
static void Vec_IntFree(Vec_Int_t *p)
static int Gia_ManPiNum(Gia_Man_t *p)
static void Vec_IntClear(Vec_Int_t *p)
Gia_Man_t * Gia_ManCleanup(Gia_Man_t *p)
char * Abc_UtilStrsav(char *s)
#define Gia_ManForEachPo(p, pObj, i)
#define Vec_IntForEachEntry(vVec, Entry, i)
MACRO DEFINITIONS ///.
int If_ManSatDeriveGiaFromBits(void *pGia, Ifn_Ntk_t *p, Vec_Int_t *vValues, Vec_Int_t *vCover)
static void Abc_TtXor(word *pOut, word *pIn1, word *pIn2, int nWords, int fCompl)
int Gia_ManHashAnd(Gia_Man_t *p, int iLit0, int iLit1)
static void Abc_TtNot(word *pOut, int nWords)
static int Gia_ManObjNum(Gia_Man_t *p)
#define ABC_FALLOC(type, num)