diff options
author | Alan Mishchenko <alanmi@berkeley.edu> | 2011-12-29 21:14:01 +0700 |
---|---|---|
committer | Alan Mishchenko <alanmi@berkeley.edu> | 2011-12-29 21:14:01 +0700 |
commit | 6c19c1dfed33963a62dcc9d51d4c5a701a280a99 (patch) | |
tree | c25c1ace914474033e44f25150fcea68a6d78ed8 /src/base/abci/abcIf.c | |
parent | fce98abf43f737a961aef13f9450ffc4f64e4734 (diff) | |
download | abc-6c19c1dfed33963a62dcc9d51d4c5a701a280a99.tar.gz abc-6c19c1dfed33963a62dcc9d51d4c5a701a280a99.tar.bz2 abc-6c19c1dfed33963a62dcc9d51d4c5a701a280a99.zip |
Delay optimization using precomputed library.
Diffstat (limited to 'src/base/abci/abcIf.c')
-rw-r--r-- | src/base/abci/abcIf.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/base/abci/abcIf.c b/src/base/abci/abcIf.c index a61fde7c..bdc0970d 100644 --- a/src/base/abci/abcIf.c +++ b/src/base/abci/abcIf.c @@ -83,7 +83,7 @@ void Abc_NtkIfComputeSwitching( Abc_Ntk_t * pNtk, If_Man_t * pIfMan ) if ( (pObjAig = (Aig_Obj_t *)pObjAbc->pTemp) ) { pObjAbc->dTemp = pSwitching[pObjAig->Id]; - // J. Anderson and F. N. Najm, “Power-Aware Technology Mapping for LUT-Based FPGAs,” + // J. Anderson and F. N. Najm, “Power-Aware Technology Mapping for LUT-Based FPGAs, // IEEE Intl. Conf. on Field-Programmable Technology, 2002. // pObjAbc->dTemp = (1.55 + 1.05 / (float) Abc_ObjFanoutNum(pObjAbc)) * pSwitching[pObjAig->Id]; } @@ -436,7 +436,7 @@ Abc_Obj_t * Abc_NodeFromIf_rec( Abc_Ntk_t * pNtkNew, If_Man_t * pIfMan, If_Obj_t pCutBest = If_ObjCutBest( pIfObj ); // printf( "%d 0x%02X %d\n", pCutBest->nLeaves, 0xff & *If_CutTruth(pCutBest), pIfMan->pPars->pFuncCost(pCutBest) ); // if ( pIfMan->pPars->pLutLib && pIfMan->pPars->pLutLib->fVarPinDelays ) - if ( !pIfMan->pPars->fDelayOpt && !pIfMan->pPars->pLutStruct ) + if ( !pIfMan->pPars->fDelayOpt && !pIfMan->pPars->pLutStruct && !pIfMan->pPars->fUserRecLib ) If_CutRotatePins( pIfMan, pCutBest ); if ( pIfMan->pPars->fUseCnfs || pIfMan->pPars->fUseMv ) { @@ -488,6 +488,11 @@ Abc_Obj_t * Abc_NodeFromIf_rec( Abc_Ntk_t * pNtkNew, If_Man_t * pIfMan, If_Obj_t extern Hop_Obj_t * Abc_NodeTruthToHop( Hop_Man_t * pMan, If_Man_t * pIfMan, If_Cut_t * pCut ); pNodeNew->pData = Abc_NodeTruthToHop( (Hop_Man_t *)pNtkNew->pManFunc, pIfMan, pCutBest ); } + else if ( pIfMan->pPars->fUserRecLib ) + { + extern Hop_Obj_t * Abc_RecToHop( Hop_Man_t * pMan, If_Man_t * pIfMan, If_Cut_t * pCut ); + pNodeNew->pData = Abc_RecToHop( (Hop_Man_t *)pNtkNew->pManFunc, pIfMan, pCutBest ); + } else { extern Hop_Obj_t * Kit_TruthToHop( Hop_Man_t * pMan, unsigned * pTruth, int nVars, Vec_Int_t * vMemory ); |