48 word uTruth, uTruths6[6] = {
67 int i, j, k, curCi, curCo, nBoxIns, nBoxOuts;
68 int Id, iFan, nMfsVars,
Counter = 0;
121 assert( Counter == nMfsVars );
128 for ( k = 0; k < nBoxes; k++ )
135 for ( i = 0; i < nBoxIns; i++ )
139 for ( j = 0; j < nBoxOuts; j++ )
159 for ( i = 0; i < nBoxIns; i++ )
168 for ( i = 0; i < nBoxIns; i++ )
188 return Sfm_NtkConstruct( vFanins, nRealPis, nRealPos, vFixed, vEmpty, vTruths );
210 int i, k, Id, curCi, curCo, nBoxIns, nBoxOuts, iLitNew, iMfsId, iGroup, Fanin;
216 Vec_Int_t * vMfsTopo, * vCover, * vBoxesLeft;
222 for ( i = 0; i < nBoxes; i++ )
227 for ( k = 0; k < nBoxIns; k++ )
235 for ( k = 0; k < nBoxOuts; k++ )
252 vMfsTopo =
Sfm_NtkDfs( pNtk, vGroups, vGroupMap, vBoxesLeft );
376 int nFaninMax, nNodes;
381 Abc_Print( 1,
"Timing manager is given but there is no GIA of boxes.\n" );
388 Abc_Print( 1,
"Currently \"&mfs\" cannot process the network containing nodes with more than 6 fanins.\n" );
397 Abc_Print( 1,
"The network is not changed by \"&mfs\".\n" );
406 Abc_Print( 1,
"The network has %d nodes changed by \"&mfs\".\n", nNodes );
static void Gia_ManCleanCopyArray(Gia_Man_t *p)
typedefABC_NAMESPACE_HEADER_START struct Vec_Wec_t_ Vec_Wec_t
INCLUDES ///.
Gia_Man_t * Gia_ManDup(Gia_Man_t *p)
static Vec_Int_t * Vec_IntDup(Vec_Int_t *pVec)
#define Gia_ManForEachCo(p, pObj, i)
void Gia_ObjComputeTruthTableStart(Gia_Man_t *p, int nVarsMax)
static int Gia_ManPoNum(Gia_Man_t *p)
static Gia_Obj_t * Gia_ManCi(Gia_Man_t *p, int v)
static int Gia_ManAppendCo(Gia_Man_t *p, int iLit0)
static void Vec_IntFillExtra(Vec_Int_t *p, int nSize, int Fill)
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
word * Gia_ObjComputeTruthTableCut(Gia_Man_t *p, Gia_Obj_t *pObj, Vec_Int_t *vLeaves)
Vec_Int_t * Sfm_NtkDfs(Sfm_Ntk_t *p, Vec_Wec_t *vGroups, Vec_Int_t *vGroupMap, Vec_Int_t *vBoxesLeft)
static void Vec_WecFree(Vec_Wec_t *p)
Vec_Int_t * Sfm_NodeReadFanins(Sfm_Ntk_t *p, int i)
static int Gia_ManAppendCi(Gia_Man_t *p)
static Vec_Wec_t * Vec_WecStart(int nSize)
static int Abc_Var2Lit(int Var, int fCompl)
void Gia_ObjComputeTruthTableStop(Gia_Man_t *p)
static int Vec_IntFind(Vec_Int_t *p, int Entry)
int Tim_ManBoxOutputNum(Tim_Man_t *p, int iBox)
typedefABC_NAMESPACE_HEADER_START struct Sfm_Ntk_t_ Sfm_Ntk_t
INCLUDES ///.
int Gia_ManLutNum(Gia_Man_t *p)
int Gia_ManFromIfLogicCreateLut(Gia_Man_t *pNew, word *pRes, Vec_Int_t *vLeaves, Vec_Int_t *vCover, Vec_Int_t *vMapping, Vec_Int_t *vMapping2)
static Vec_Int_t * Vec_IntStartFull(int nSize)
static Gia_Obj_t * Gia_ManObj(Gia_Man_t *p, int v)
static int Abc_LitNotCond(int Lit, int c)
#define Gia_ManForEachLut(p, i)
Gia_Man_t * Gia_ManInsertMfs(Gia_Man_t *p, Sfm_Ntk_t *pNtk)
int Sfm_NtkPerform(Sfm_Ntk_t *p, Sfm_Par_t *pPars)
Gia_Man_t * Gia_ManPerformMfs(Gia_Man_t *p, Sfm_Par_t *pPars)
int Tim_ManPiNum(Tim_Man_t *p)
int Sfm_NodeReadUsed(Sfm_Ntk_t *p, int i)
#define Gia_ManForEachCiId(p, Id, i)
static void Vec_IntGrow(Vec_Int_t *p, int nCapMin)
static void Vec_IntWriteEntry(Vec_Int_t *p, int i, int Entry)
static void Vec_StrWriteEntry(Vec_Str_t *p, int i, char Entry)
Gia_Man_t * Gia_ManUpdateExtraAig2(void *pTime, Gia_Man_t *pAig, Vec_Int_t *vBoxesLeft)
static Vec_Int_t * Vec_IntStart(int nSize)
static int Abc_LitIsCompl(int Lit)
static Gia_Obj_t * Gia_ObjFanin0(Gia_Obj_t *pObj)
static Vec_Int_t * Vec_IntAlloc(int nCap)
FUNCTION DEFINITIONS ///.
static int Gia_ObjLutSize(Gia_Man_t *p, int Id)
int Gia_ManBoxNum(Gia_Man_t *p)
DECLARATIONS ///.
static void Vec_IntAddToEntry(Vec_Int_t *p, int i, int Addition)
static void Vec_WrdWriteEntry(Vec_Wrd_t *p, int i, word Entry)
static int Vec_IntEntry(Vec_Int_t *p, int i)
unsigned __int64 word
DECLARATIONS ///.
static int Gia_ObjCopyArray(Gia_Man_t *p, int iObj)
#define ABC_NAMESPACE_IMPL_END
static void Vec_IntFill(Vec_Int_t *p, int nSize, int Fill)
Gia_Man_t * Gia_ManStart(int nObjsMax)
DECLARATIONS ///.
static Vec_Str_t * Vec_StrStart(int nSize)
static void Vec_IntPush(Vec_Int_t *p, int Entry)
static int Gia_ObjId(Gia_Man_t *p, Gia_Obj_t *pObj)
void Gia_ManTransferTiming(Gia_Man_t *p, Gia_Man_t *pGia)
int Gia_ManLutSizeMax(Gia_Man_t *p)
static void Abc_Print(int level, const char *format,...)
int Tim_ManBoxInputNum(Tim_Man_t *p, int iBox)
#define ABC_NAMESPACE_IMPL_START
static Vec_Int_t * Vec_WecEntry(Vec_Wec_t *p, int i)
static Vec_Wrd_t * Vec_WrdStart(int nSize)
static int Gia_ManCiNum(Gia_Man_t *p)
int Tim_ManBoxIsBlack(Tim_Man_t *p, int iBox)
static void Gia_ObjSetCopyArray(Gia_Man_t *p, int iObj, int iLit)
static Gia_Obj_t * Gia_ManCo(Gia_Man_t *p, int v)
static int Vec_IntSize(Vec_Int_t *p)
void Sfm_NtkFree(Sfm_Ntk_t *p)
static void Vec_IntShrink(Vec_Int_t *p, int nSizeNew)
#define ABC_CONST(number)
PARAMETERS ///.
void * Gia_ManUpdateTimMan2(Gia_Man_t *p, Vec_Int_t *vBoxesLeft, int nTermsDiff)
Sfm_Ntk_t * Sfm_NtkConstruct(Vec_Wec_t *vFanins, int nPis, int nPos, Vec_Str_t *vFixed, Vec_Str_t *vEmpty, Vec_Wrd_t *vTruths)
static int Gia_ObjFaninId0p(Gia_Man_t *p, Gia_Obj_t *pObj)
typedefABC_NAMESPACE_HEADER_START struct Tim_Man_t_ Tim_Man_t
INCLUDES ///.
static int Gia_ObjFaninC0(Gia_Obj_t *pObj)
static void Vec_IntFree(Vec_Int_t *p)
static int Gia_ManPiNum(Gia_Man_t *p)
static void Vec_IntClear(Vec_Int_t *p)
static int Gia_ObjIsCi(Gia_Obj_t *pObj)
char * Abc_UtilStrsav(char *s)
#define Vec_IntForEachEntry(vVec, Entry, i)
MACRO DEFINITIONS ///.
typedefABC_NAMESPACE_HEADER_START struct Vec_Wrd_t_ Vec_Wrd_t
INCLUDES ///.
ABC_NAMESPACE_IMPL_START Sfm_Ntk_t * Gia_ManExtractMfs(Gia_Man_t *p)
DECLARATIONS ///.
#define Gia_LutForEachFanin(p, i, iFan, k)
word * Sfm_NodeReadTruth(Sfm_Ntk_t *p, int i)
int Tim_ManPoNum(Tim_Man_t *p)
static int Gia_ObjCioId(Gia_Obj_t *pObj)
static int Gia_ManObjNum(Gia_Man_t *p)
static int Gia_ManCoNum(Gia_Man_t *p)
static int Gia_ManRegNum(Gia_Man_t *p)