summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2012-10-28 18:50:10 -0700
committerAlan Mishchenko <alanmi@berkeley.edu>2012-10-28 18:50:10 -0700
commitd8d820052efb7eee832586b202628ec69c6d55aa (patch)
tree8c8994b06c78cb5728f6027e4e77c7db0b2b8e22 /src
parent12dda470817d227739dffb8ae4460f458e5e4f97 (diff)
downloadabc-d8d820052efb7eee832586b202628ec69c6d55aa.tar.gz
abc-d8d820052efb7eee832586b202628ec69c6d55aa.tar.bz2
abc-d8d820052efb7eee832586b202628ec69c6d55aa.zip
Improvements to LMS code.
Diffstat (limited to 'src')
-rw-r--r--src/base/abci/abcIf.c9
-rw-r--r--src/map/if/if.h5
-rw-r--r--src/map/if/ifMap.c22
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);