diff options
author | Alan Mishchenko <alanmi@berkeley.edu> | 2013-07-17 14:19:33 -0700 |
---|---|---|
committer | Alan Mishchenko <alanmi@berkeley.edu> | 2013-07-17 14:19:33 -0700 |
commit | 10c90de0544eaae44680dea2c5859443a909382d (patch) | |
tree | fe18ac646a0372e051de2da17f0c37e6c41fb95f /src/map/mpm/mpmInt.h | |
parent | d22da3aec408474cc5e39bfbab4d159104e4f709 (diff) | |
download | abc-10c90de0544eaae44680dea2c5859443a909382d.tar.gz abc-10c90de0544eaae44680dea2c5859443a909382d.tar.bz2 abc-10c90de0544eaae44680dea2c5859443a909382d.zip |
New technology mapper.
Diffstat (limited to 'src/map/mpm/mpmInt.h')
-rw-r--r-- | src/map/mpm/mpmInt.h | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/map/mpm/mpmInt.h b/src/map/mpm/mpmInt.h index 9ee4603a..e8b6d4de 100644 --- a/src/map/mpm/mpmInt.h +++ b/src/map/mpm/mpmInt.h @@ -101,10 +101,10 @@ struct Mpm_Man_t_ int nTruWords; // words in the truth table Mpm_LibLut_t * pLibLut; // LUT library // mapping attributes - int GloRequired; // global arrival time - int GloArea; // total area - int GloEdge; // total edge int fMainRun; // after preprocessing is finished + int GloRequired; // global arrival time + word GloArea; // total area + word GloEdge; // total edge // cut management Mmr_Step_t * pManCuts; // cut memory // temporary cut storage @@ -140,6 +140,8 @@ struct Mpm_Man_t_ Vec_Int_t * vMap2Perm; // maps number into its permutation unsigned uPermMask[3]; unsigned uComplMask[3]; + Vec_Int_t * vGateNpnConfig; + Vec_Int_t * vNpnCosts; // area cost of each NPN class // mapping attributes Vec_Int_t vCutBests; // cut best Vec_Int_t vCutLists; // cut list @@ -152,6 +154,7 @@ struct Mpm_Man_t_ Vec_Int_t vEdges; // edge int nCountDsd[600]; int nNonDsd; + int nNoMatch; // statistics int nCutsMerged; int nCutsMergedAll; @@ -218,6 +221,8 @@ static inline void Mpm_VarsSwap( int * V2P, int * P2V, int iVar, int jVar // iterators over cut leaves #define Mpm_CutForEachLeafId( pCut, iLeafId, i ) \ for ( i = 0; i < (int)pCut->nLeaves && ((iLeafId = Abc_Lit2Var(pCut->pLeaves[i])), 1); i++ ) +#define Mpm_CutForEachLeafLit( pCut, iLeafLit, i ) \ + for ( i = 0; i < (int)pCut->nLeaves && ((iLeafLit = pCut->pLeaves[i]), 1); i++ ) #define Mpm_CutForEachLeaf( p, pCut, pLeaf, i ) \ for ( i = 0; i < (int)pCut->nLeaves && (pLeaf = Mig_ManObj(p, Abc_Lit2Var(pCut->pLeaves[i]))); i++ ) @@ -238,7 +243,10 @@ extern void Mpm_ManPrintDsdStats( Mpm_Man_t * p ); extern void Mpm_ManPrintPerm( unsigned s ); extern void Mpm_ManPrecomputePerms( Mpm_Man_t * p ); extern word Mpm_CutTruthFromDsd( Mpm_Man_t * pMan, Mpm_Cut_t * pCut, int iDsdLit ); +extern int Mpm_CutCheckDsd6( Mpm_Man_t * p, word t ); extern int Mpm_CutComputeDsd6( Mpm_Man_t * p, Mpm_Cut_t * pCut, Mpm_Cut_t * pCut0, Mpm_Cut_t * pCut1, Mpm_Cut_t * pCutC, int fCompl0, int fCompl1, int fComplC, int Type ); +/*=== mpmGates.c ===========================================================*/ +extern Vec_Int_t * Mpm_ManFindDsdMatches( Mpm_Man_t * p, void * pScl, Vec_Int_t ** pvNpnCosts ); /*=== mpmLib.c ===========================================================*/ extern Mpm_LibLut_t * Mpm_LibLutSetSimple( int nLutSize ); extern void Mpm_LibLutFree( Mpm_LibLut_t * pLib ); |