diff options
author | Alan Mishchenko <alanmi@berkeley.edu> | 2011-07-20 18:23:10 +0700 |
---|---|---|
committer | Alan Mishchenko <alanmi@berkeley.edu> | 2011-07-20 18:23:10 +0700 |
commit | ee261ef3f21851ea8aab05c89f81fdab8c3f5c71 (patch) | |
tree | fba36e049db605cf3b8f799196f6ddec605d06c8 /src/map/if | |
parent | bb86d9142ebb31d31392c3472d6b49f7989e46b6 (diff) | |
download | abc-ee261ef3f21851ea8aab05c89f81fdab8c3f5c71.tar.gz abc-ee261ef3f21851ea8aab05c89f81fdab8c3f5c71.tar.bz2 abc-ee261ef3f21851ea8aab05c89f81fdab8c3f5c71.zip |
Other changes to enable new features in the mapper (bug fix).
Diffstat (limited to 'src/map/if')
-rw-r--r-- | src/map/if/if.h | 3 | ||||
-rw-r--r-- | src/map/if/ifMap.c | 21 |
2 files changed, 17 insertions, 7 deletions
diff --git a/src/map/if/if.h b/src/map/if/if.h index 52cd0c2b..8ac6e4f3 100644 --- a/src/map/if/if.h +++ b/src/map/if/if.h @@ -231,7 +231,8 @@ struct If_Obj_t_ unsigned fVisit : 1; // multipurpose mark unsigned fSpec : 1; // multipurpose mark unsigned fDriver : 1; // multipurpose mark - unsigned Level : 20; // logic level of the node + unsigned fSkipCut: 1; // multipurpose mark + unsigned Level : 19; // logic level of the node int Id; // integer ID int IdPio; // integer ID of PIs/POs int nRefs; // the number of references diff --git a/src/map/if/ifMap.c b/src/map/if/ifMap.c index 8b00ab01..86ecfd99 100644 --- a/src/map/if/ifMap.c +++ b/src/map/if/ifMap.c @@ -94,8 +94,11 @@ void If_ObjPerformMappingAnd( If_Man_t * p, If_Obj_t * pObj, int Mode, int fPrep If_Cut_t * pCut0, * pCut1, * pCut; int i, k; - assert( p->pPars->fSeqMap || !If_ObjIsAnd(pObj->pFanin0) || pObj->pFanin0->pCutSet->nCuts > 1 ); - assert( p->pPars->fSeqMap || !If_ObjIsAnd(pObj->pFanin1) || pObj->pFanin1->pCutSet->nCuts > 1 ); +// assert( p->pPars->fSeqMap || !If_ObjIsAnd(pObj->pFanin0) || pObj->pFanin0->pCutSet->nCuts > 1 ); +// assert( p->pPars->fSeqMap || !If_ObjIsAnd(pObj->pFanin1) || pObj->pFanin1->pCutSet->nCuts > 1 ); + + assert( p->pPars->fSeqMap || !If_ObjIsAnd(pObj->pFanin0) || pObj->pFanin0->pCutSet->nCuts > 0 ); + assert( p->pPars->fSeqMap || !If_ObjIsAnd(pObj->pFanin1) || pObj->pFanin1->pCutSet->nCuts > 0 ); // prepare if ( !p->pPars->fSeqMap ) @@ -232,8 +235,11 @@ void If_ObjPerformMappingAnd( If_Man_t * p, If_Obj_t * pObj, int Mode, int fPrep assert( pCutSet->nCuts > 0 ); // add the trivial cut to the set - If_ManSetupCutTriv( p, pCutSet->ppCuts[pCutSet->nCuts++], pObj->Id ); - assert( pCutSet->nCuts <= pCutSet->nCutsMax+1 ); + if ( !pObj->fSkipCut ) + { + If_ManSetupCutTriv( p, pCutSet->ppCuts[pCutSet->nCuts++], pObj->Id ); + assert( pCutSet->nCuts <= pCutSet->nCutsMax+1 ); + } // update the best cut if ( !fPreprocess || pCutSet->ppCuts[0]->Delay <= pObj->Required + p->fEpsilon ) @@ -325,8 +331,11 @@ void If_ObjPerformMappingChoice( If_Man_t * p, If_Obj_t * pObj, int Mode, int fP assert( pCutSet->nCuts > 0 ); // add the trivial cut to the set - If_ManSetupCutTriv( p, pCutSet->ppCuts[pCutSet->nCuts++], pObj->Id ); - assert( pCutSet->nCuts <= pCutSet->nCutsMax+1 ); + if ( !pObj->fSkipCut ) + { + If_ManSetupCutTriv( p, pCutSet->ppCuts[pCutSet->nCuts++], pObj->Id ); + assert( pCutSet->nCuts <= pCutSet->nCutsMax+1 ); + } // update the best cut if ( !fPreprocess || pCutSet->ppCuts[0]->Delay <= pObj->Required + p->fEpsilon ) |