diff options
author | Alan Mishchenko <alanmi@berkeley.edu> | 2005-10-01 08:01:00 -0700 |
---|---|---|
committer | Alan Mishchenko <alanmi@berkeley.edu> | 2005-10-01 08:01:00 -0700 |
commit | 78fbd336aa584c4d285123ad18617aa9277016b4 (patch) | |
tree | 5d65fe6b080dc85b1456320f60555ba33bab9b09 /src/opt/cut/cut.h | |
parent | 0af9acd0cd07dcb37c195c6a0832b82c0eca1193 (diff) | |
download | abc-78fbd336aa584c4d285123ad18617aa9277016b4.tar.gz abc-78fbd336aa584c4d285123ad18617aa9277016b4.tar.bz2 abc-78fbd336aa584c4d285123ad18617aa9277016b4.zip |
Version abc51001
Diffstat (limited to 'src/opt/cut/cut.h')
-rw-r--r-- | src/opt/cut/cut.h | 28 |
1 files changed, 21 insertions, 7 deletions
diff --git a/src/opt/cut/cut.h b/src/opt/cut/cut.h index 49dde875..ecdfed72 100644 --- a/src/opt/cut/cut.h +++ b/src/opt/cut/cut.h @@ -42,21 +42,23 @@ struct Cut_ParamsStruct_t_ int nVarsMax; // the max cut size ("k" of the k-feasible cuts) int nKeepMax; // the max number of cuts kept at a node int nIdsMax; // the max number of IDs of cut objects + int nCutSet; // the number of nodes in the cut set int fTruth; // compute truth tables int fFilter; // filter dominated cuts int fSeq; // compute sequential cuts int fDrop; // drop cuts on the fly + int fMulti; // compute cuts in multi-input AND gate graph int fVerbose; // the verbosiness flag }; struct Cut_CutStruct_t_ { unsigned uTruth : 16; // truth table for 4-input cuts - unsigned uPhase : 8; // the phase when mapping into a canonical form + unsigned uPhase : 6; // the phase when mapping into a canonical form unsigned fSimul : 1; // the value of cut's output at 000.. pattern unsigned fCompl : 1; // the cut is complemented - unsigned nVarsMax : 3; // the max number of vars [4-6] - unsigned nLeaves : 3; // the number of leaves [4-6] + unsigned nVarsMax : 4; // the max number of vars [4-6] + unsigned nLeaves : 4; // the number of leaves [4-6] unsigned uSign; // the signature Cut_Cut_t * pNext; // the next cut in the list int pLeaves[0]; // the array of leaves @@ -82,22 +84,34 @@ static inline void Cut_CutWriteTruth( Cut_Cut_t * p, unsigned * puTruth ) //////////////////////////////////////////////////////////////////////// /*=== cutApi.c ==========================================================*/ -extern Cut_Cut_t * Cut_NodeReadCuts( Cut_Man_t * p, int Node ); -extern void Cut_NodeWriteCuts( Cut_Man_t * p, int Node, Cut_Cut_t * pList ); +extern Cut_Cut_t * Cut_NodeReadCutsNew( Cut_Man_t * p, int Node ); +extern Cut_Cut_t * Cut_NodeReadCutsOld( Cut_Man_t * p, int Node ); +extern Cut_Cut_t * Cut_NodeReadCutsTemp( Cut_Man_t * p, int Node ); +extern void Cut_NodeWriteCutsNew( Cut_Man_t * p, int Node, Cut_Cut_t * pList ); +extern void Cut_NodeWriteCutsOld( Cut_Man_t * p, int Node, Cut_Cut_t * pList ); +extern void Cut_NodeWriteCutsTemp( Cut_Man_t * p, int Node, Cut_Cut_t * pList ); extern void Cut_NodeSetTriv( Cut_Man_t * p, int Node ); extern void Cut_NodeTryDroppingCuts( Cut_Man_t * p, int Node ); extern void Cut_NodeFreeCuts( Cut_Man_t * p, int Node ); /*=== cutCut.c ==========================================================*/ -extern void Cut_CutPrint( Cut_Cut_t * pCut ); +extern void Cut_CutPrint( Cut_Cut_t * pCut, int fSeq ); +extern void Cut_CutPrintList( Cut_Cut_t * pList, int fSeq ); /*=== cutMan.c ==========================================================*/ extern Cut_Man_t * Cut_ManStart( Cut_Params_t * pParams ); extern void Cut_ManStop( Cut_Man_t * p ); extern void Cut_ManPrintStats( Cut_Man_t * p ); +extern void Cut_ManPrintStatsToFile( Cut_Man_t * p, char * pFileName, int TimeTotal ); extern void Cut_ManSetFanoutCounts( Cut_Man_t * p, Vec_Int_t * vFanCounts ); extern int Cut_ManReadVarsMax( Cut_Man_t * p ); /*=== cutNode.c ==========================================================*/ -extern Cut_Cut_t * Cut_NodeComputeCuts( Cut_Man_t * p, int Node, int Node0, int Node1, int fCompl0, int fCompl1 ); +extern Cut_Cut_t * Cut_NodeComputeCuts( Cut_Man_t * p, int Node, int Node0, int Node1, int fCompl0, int fCompl1, int fNew0, int fNew1, int fTriv ); +extern Cut_Cut_t * Cut_NodeDoComputeCuts( Cut_Man_t * p, int Node, int Node0, int Node1, int fCompl0, int fCompl1, int fNew0, int fNew1, int fTriv ); extern Cut_Cut_t * Cut_NodeUnionCuts( Cut_Man_t * p, Vec_Int_t * vNodes ); +/*=== cutSeq.c ==========================================================*/ +extern void Cut_NodeComputeCutsSeq( Cut_Man_t * p, int Node, int Node0, int Node1, int fCompl0, int fCompl1, int nLat0, int nLat1, int fTriv, int CutSetNum ); +extern void Cut_NodeNewMergeWithOld( Cut_Man_t * p, int Node ); +extern int Cut_NodeTempTransferToNew( Cut_Man_t * p, int Node, int CutSetNum ); +extern void Cut_NodeOldTransferToNew( Cut_Man_t * p, int Node ); //////////////////////////////////////////////////////////////////////// /// END OF FILE /// |