diff options
author | Alan Mishchenko <alanmi@berkeley.edu> | 2012-10-28 18:50:10 -0700 |
---|---|---|
committer | Alan Mishchenko <alanmi@berkeley.edu> | 2012-10-28 18:50:10 -0700 |
commit | d8d820052efb7eee832586b202628ec69c6d55aa (patch) | |
tree | 8c8994b06c78cb5728f6027e4e77c7db0b2b8e22 | |
parent | 12dda470817d227739dffb8ae4460f458e5e4f97 (diff) | |
download | abc-d8d820052efb7eee832586b202628ec69c6d55aa.tar.gz abc-d8d820052efb7eee832586b202628ec69c6d55aa.tar.bz2 abc-d8d820052efb7eee832586b202628ec69c6d55aa.zip |
Improvements to LMS code.
-rw-r--r-- | src/base/abci/abcIf.c | 9 | ||||
-rw-r--r-- | src/map/if/if.h | 5 | ||||
-rw-r--r-- | src/map/if/ifMap.c | 22 |
3 files changed, 22 insertions, 14 deletions
diff --git a/src/base/abci/abcIf.c b/src/base/abci/abcIf.c index 46c1374b..76171eee 100644 --- a/src/base/abci/abcIf.c +++ b/src/base/abci/abcIf.c @@ -494,10 +494,13 @@ Abc_Obj_t * Abc_NodeFromIf_rec( Abc_Ntk_t * pNtkNew, If_Man_t * pIfMan, If_Obj_t { extern Hop_Obj_t * Abc_RecToHop( Hop_Man_t * pMan, If_Man_t * pIfMan, If_Cut_t * pCut, If_Obj_t * pIfObj ); extern Hop_Obj_t * Abc_RecToHop2( Hop_Man_t * pMan, If_Man_t * pIfMan, If_Cut_t * pCut, If_Obj_t * pIfObj ); - if(Abc_NtkRecIsRunning()) - pNodeNew->pData = Abc_RecToHop( (Hop_Man_t *)pNtkNew->pManFunc, pIfMan, pCutBest, pIfObj); - else + extern Hop_Obj_t * Abc_RecToHop3( Hop_Man_t * pMan, If_Man_t * pIfMan, If_Cut_t * pCut, If_Obj_t * pIfObj ); + if(Abc_NtkRecIsRunning3()) + pNodeNew->pData = Abc_RecToHop3( (Hop_Man_t *)pNtkNew->pManFunc, pIfMan, pCutBest, pIfObj); + else if(Abc_NtkRecIsRunning2()) pNodeNew->pData = Abc_RecToHop2( (Hop_Man_t *)pNtkNew->pManFunc, pIfMan, pCutBest, pIfObj); + else + pNodeNew->pData = Abc_RecToHop( (Hop_Man_t *)pNtkNew->pManFunc, pIfMan, pCutBest, pIfObj); } else diff --git a/src/map/if/if.h b/src/map/if/if.h index 7928245f..0d80d495 100644 --- a/src/map/if/if.h +++ b/src/map/if/if.h @@ -531,11 +531,14 @@ extern void If_CutTraverse( If_Man_t * p, If_Obj_t * pRoot, If_Cut_t extern void If_ObjPrint( If_Obj_t * pObj ); /*=== abcRec.c ============================================================*/ +/*=== abcRec2.c ============================================================*/ +/*=== abcRec3.c ============================================================*/ extern int If_CutDelayRecCost(If_Man_t* p, If_Cut_t* pCut, If_Obj_t * pObj); extern int If_CutDelayRecCost2(If_Man_t* p, If_Cut_t* pCut, If_Obj_t * pObj); -/*=== abcRec2.c ============================================================*/ +extern int If_CutDelayRecCost2(If_Man_t* p, If_Cut_t* pCut, If_Obj_t * pObj); extern ABC_DLL int Abc_NtkRecIsRunning(); extern ABC_DLL int Abc_NtkRecIsRunning2(); +extern ABC_DLL int Abc_NtkRecIsRunning3(); // othe packages extern int Bat_ManCellFuncLookup( unsigned * pTruth, int nVars, int nLeaves ); diff --git a/src/map/if/ifMap.c b/src/map/if/ifMap.c index 2d08aeac..1f7ba898 100644 --- a/src/map/if/ifMap.c +++ b/src/map/if/ifMap.c @@ -158,12 +158,13 @@ void If_ObjPerformMappingAnd( If_Man_t * p, If_Obj_t * pObj, int Mode, int fPrep /// pCut->Delay = If_CutDelayLutStruct( p, pCut, p->pPars->pLutStruct, p->pPars->WireDelay ); if ( p->pPars->fUserRecLib ) { - if((Abc_NtkRecIsRunning2()&& Abc_NtkRecIsRunning()) || (!Abc_NtkRecIsRunning2()&& !Abc_NtkRecIsRunning())) - assert(0); - else if(Abc_NtkRecIsRunning()) - pCut->Delay = If_CutDelayRecCost(p, pCut, pObj); + assert( Abc_NtkRecIsRunning() + Abc_NtkRecIsRunning2() + Abc_NtkRecIsRunning3() == 1 ); + if ( Abc_NtkRecIsRunning3() ) + pCut->Delay = If_CutDelayRecCost3(p, pCut, pObj); + else if( Abc_NtkRecIsRunning2() ) + pCut->Delay = If_CutDelayRecCost2(p, pCut, pObj); else - pCut->Delay = If_CutDelayRecCost2(p, pCut, pObj); + pCut->Delay = If_CutDelayRecCost(p, pCut, pObj); } else if(p->pPars->fDelayOpt) pCut->Delay = If_CutDelaySopCost(p,pCut); @@ -239,12 +240,13 @@ void If_ObjPerformMappingAnd( If_Man_t * p, If_Obj_t * pObj, int Mode, int fPrep /// pCut->Delay = If_CutDelayLutStruct( p, pCut, p->pPars->pLutStruct, p->pPars->WireDelay ); if ( p->pPars->fUserRecLib ) { - if((Abc_NtkRecIsRunning2()&& Abc_NtkRecIsRunning()) || (!Abc_NtkRecIsRunning2()&& !Abc_NtkRecIsRunning())) - assert(0); - else if(Abc_NtkRecIsRunning()) - pCut->Delay = If_CutDelayRecCost(p, pCut, pObj); - else + assert( Abc_NtkRecIsRunning() + Abc_NtkRecIsRunning2() + Abc_NtkRecIsRunning3() == 1 ); + if ( Abc_NtkRecIsRunning3() ) + pCut->Delay = If_CutDelayRecCost3(p, pCut, pObj); + else if( Abc_NtkRecIsRunning2() ) pCut->Delay = If_CutDelayRecCost2(p, pCut, pObj); + else + pCut->Delay = If_CutDelayRecCost(p, pCut, pObj); } else if (p->pPars->fDelayOpt) pCut->Delay = If_CutDelaySopCost(p, pCut); |