diff options
Diffstat (limited to 'src/opt/res/resInt.h')
-rw-r--r-- | src/opt/res/resInt.h | 70 |
1 files changed, 35 insertions, 35 deletions
diff --git a/src/opt/res/resInt.h b/src/opt/res/resInt.h index 54251722..9d17cb1c 100644 --- a/src/opt/res/resInt.h +++ b/src/opt/res/resInt.h @@ -42,49 +42,48 @@ extern "C" { typedef struct Res_Win_t_ Res_Win_t; struct Res_Win_t_ { - // the general data - int nWinTfiMax; // the fanin levels - int nWinTfoMax; // the fanout levels - int nLevLeaves; // the level where leaves begin - int nLevDivMax; // the maximum divisor level - int nDivsPlus; // the number of additional divisors - int nLeavesPlus;// the number of additional leaves - Abc_Obj_t * pNode; // the node in the center + // windowing parameters + Abc_Obj_t * pNode; // the node in the center + int nWinTfiMax; // the fanin levels + int nWinTfoMax; // the fanout levels + int nLevDivMax; // the maximum divisor level + // internal windowing parameters + int nFanoutLimit; // the limit on the fanout count of a TFO node (if more, the node is treated as a root) + int nLevTfiMinus; // the number of additional levels to search from TFO below the level of leaves + // derived windowing parameters + int nLevLeafMin; // the minimum level of a leaf + int nLevTravMin; // the minimum level to search from TFO + int nDivsPlus; // the number of additional divisors // the window data - Vec_Vec_t * vLevels; // nodes by level - Vec_Ptr_t * vLeaves; // leaves of the window - Vec_Ptr_t * vRoots; // roots of the window - Vec_Ptr_t * vDivs; // the candidate divisors of the node + Vec_Ptr_t * vRoots; // outputs of the window + Vec_Ptr_t * vLeaves; // inputs of the window + Vec_Ptr_t * vBranches; // side nodes of the window + Vec_Ptr_t * vNodes; // internal nodes of the window + Vec_Ptr_t * vDivs; // candidate divisors of the node + // temporary data + Vec_Vec_t * vMatrix; // TFI nodes below the given node }; typedef struct Res_Sim_t_ Res_Sim_t; struct Res_Sim_t_ { - Abc_Ntk_t * pAig; // AIG for simulation + Abc_Ntk_t * pAig; // AIG for simulation // simulation parameters - int nWords; // the number of simulation words - int nPats; // the number of patterns - int nWordsOut; // the number of simulation words in the output patterns - int nPatsOut; // the number of patterns in the output patterns + int nWords; // the number of simulation words + int nPats; // the number of patterns + int nWordsOut; // the number of simulation words in the output patterns + int nPatsOut; // the number of patterns in the output patterns // simulation info - Vec_Ptr_t * vPats; // input simulation patterns - Vec_Ptr_t * vPats0; // input simulation patterns - Vec_Ptr_t * vPats1; // input simulation patterns - Vec_Ptr_t * vOuts; // output simulation info - int nPats0; // the number of 0-patterns accumulated - int nPats1; // the number of 1-patterns accumulated + Vec_Ptr_t * vPats; // input simulation patterns + Vec_Ptr_t * vPats0; // input simulation patterns + Vec_Ptr_t * vPats1; // input simulation patterns + Vec_Ptr_t * vOuts; // output simulation info + int nPats0; // the number of 0-patterns accumulated + int nPats1; // the number of 1-patterns accumulated // resub candidates - Vec_Vec_t * vCands; // resubstitution candidates + Vec_Vec_t * vCands; // resubstitution candidates }; -// adds one node to the window -static inline void Res_WinAddNode( Res_Win_t * p, Abc_Obj_t * pObj ) -{ - assert( !pObj->fMarkA ); - pObj->fMarkA = 1; - Vec_VecPush( p->vLevels, pObj->Level, pObj ); -} - //////////////////////////////////////////////////////////////////////// /// MACRO DEFINITIONS /// //////////////////////////////////////////////////////////////////////// @@ -95,11 +94,12 @@ static inline void Res_WinAddNode( Res_Win_t * p, Abc_Obj_t * pObj ) /*=== resDivs.c ==========================================================*/ extern void Res_WinDivisors( Res_Win_t * p, int nLevDivMax ); -extern int Res_WinVisitMffc( Res_Win_t * p ); +extern void Res_WinSweepLeafTfo_rec( Abc_Obj_t * pObj, int nLevelLimit ); /*=== resFilter.c ==========================================================*/ -extern int Res_FilterCandidates( Res_Win_t * pWin, Abc_Ntk_t * pAig, Res_Sim_t * pSim, Vec_Vec_t * vResubs ); +extern int Res_FilterCandidates( Res_Win_t * pWin, Abc_Ntk_t * pAig, Res_Sim_t * pSim, Vec_Vec_t * vResubs, Vec_Vec_t * vResubsW ); /*=== resSat.c ==========================================================*/ extern void * Res_SatProveUnsat( Abc_Ntk_t * pAig, Vec_Ptr_t * vFanins ); +extern void * Res_SatSimulateConstr( Abc_Ntk_t * pAig, Vec_Ptr_t * vFanins ); /*=== resSim.c ==========================================================*/ extern Res_Sim_t * Res_SimAlloc( int nWords ); extern void Res_SimFree( Res_Sim_t * p ); @@ -111,7 +111,7 @@ extern void Res_UpdateNetwork( Abc_Obj_t * pObj, Vec_Ptr_t * vFanins, H /*=== resWnd.c ==========================================================*/ extern Res_Win_t * Res_WinAlloc(); extern void Res_WinFree( Res_Win_t * p ); -extern void Res_WinSweepLeafTfo_rec( Abc_Obj_t * pObj, int nLevelLimit, Abc_Obj_t * pNode ); +extern int Res_WinIsTrivial( Res_Win_t * p ); extern int Res_WinCompute( Abc_Obj_t * pNode, int nWinTfiMax, int nWinTfoMax, Res_Win_t * p ); |