summaryrefslogtreecommitdiffstats
path: root/src/base/abci
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2013-09-02 22:10:27 -0700
committerAlan Mishchenko <alanmi@berkeley.edu>2013-09-02 22:10:27 -0700
commite16e3edae8f6f73f4e32776423b784e78a1d042e (patch)
treeb67420832d874f704ec36e6b49d360fa74a6ae8a /src/base/abci
parentfabc84d15b5aabb28f3f7670369b005f4cec57a6 (diff)
downloadabc-e16e3edae8f6f73f4e32776423b784e78a1d042e.tar.gz
abc-e16e3edae8f6f73f4e32776423b784e78a1d042e.tar.bz2
abc-e16e3edae8f6f73f4e32776423b784e78a1d042e.zip
Removing some old useless code.
Diffstat (limited to 'src/base/abci')
-rw-r--r--src/base/abci/abc.c12
-rw-r--r--src/base/abci/abcIf.c496
-rw-r--r--src/base/abci/abcPrint.c2
-rw-r--r--src/base/abci/abcSweep.c7
4 files changed, 2 insertions, 515 deletions
diff --git a/src/base/abci/abc.c b/src/base/abci/abc.c
index 74525e26..00552286 100644
--- a/src/base/abci/abc.c
+++ b/src/base/abci/abc.c
@@ -15378,7 +15378,7 @@ int Abc_CommandIf( Abc_Frame_t * pAbc, int argc, char ** argv )
fLutMux = 0;
Extra_UtilGetoptReset();
- while ( ( c = Extra_UtilGetopt( argc, argv, "KCFAGNDEWSqaflepmrsdbugyojikcnvh" ) ) != EOF )
+ while ( ( c = Extra_UtilGetopt( argc, argv, "KCFAGNDEWSqaflepmrsdbugyojiknvh" ) ) != EOF )
{
switch ( c )
{
@@ -15551,9 +15551,6 @@ int Abc_CommandIf( Abc_Frame_t * pAbc, int argc, char ** argv )
case 'k':
pPars->fEnableCheck10 ^= 1;
break;
- case 'c':
- pPars->fEnableRealPos ^= 1;
- break;
case 'n':
pPars->fUseDsd ^= 1;
break;
@@ -15847,7 +15844,6 @@ usage:
Abc_Print( -2, "\t-j : toggles enabling additional check [default = %s]\n", pPars->fEnableCheck07? "yes": "no" );
Abc_Print( -2, "\t-i : toggles enabling additional check [default = %s]\n", pPars->fEnableCheck08? "yes": "no" );
Abc_Print( -2, "\t-k : toggles enabling additional check [default = %s]\n", pPars->fEnableCheck10? "yes": "no" );
- Abc_Print( -2, "\t-c : toggles enabling additional feature [default = %s]\n", pPars->fEnableRealPos? "yes": "no" );
Abc_Print( -2, "\t-n : toggles computing DSDs of the cut functions [default = %s]\n", pPars->fUseDsd? "yes": "no" );
Abc_Print( -2, "\t-v : toggles verbose output [default = %s]\n", pPars->fVerbose? "yes": "no" );
Abc_Print( -2, "\t-h : prints the command usage\n");
@@ -29225,7 +29221,7 @@ int Abc_CommandAbc9If( Abc_Frame_t * pAbc, int argc, char ** argv )
}
pPars->pLutLib = (If_LibLut_t *)pAbc->pLibLut;
Extra_UtilGetoptReset();
- while ( ( c = Extra_UtilGetopt( argc, argv, "KCFAGDEWSqalepmrsdbgyojikfuczvh" ) ) != EOF )
+ while ( ( c = Extra_UtilGetopt( argc, argv, "KCFAGDEWSqalepmrsdbgyojikfuzvh" ) ) != EOF )
{
switch ( c )
{
@@ -29387,9 +29383,6 @@ int Abc_CommandAbc9If( Abc_Frame_t * pAbc, int argc, char ** argv )
case 'u':
pPars->fEnableCheck75u ^= 1;
break;
- case 'c':
- pPars->fEnableRealPos ^= 1;
- break;
case 'z':
pPars->fDeriveLuts ^= 1;
break;
@@ -29616,7 +29609,6 @@ usage:
Abc_Print( -2, "\t-k : toggles enabling additional check [default = %s]\n", pPars->fEnableCheck10? "yes": "no" );
Abc_Print( -2, "\t-f : toggles enabling additional check [default = %s]\n", pPars->fEnableCheck75? "yes": "no" );
Abc_Print( -2, "\t-u : toggles enabling additional check [default = %s]\n", pPars->fEnableCheck75u? "yes": "no" );
- Abc_Print( -2, "\t-c : toggles enabling additional feature [default = %s]\n", pPars->fEnableRealPos? "yes": "no" );
Abc_Print( -2, "\t-z : toggles deriving LUTs when mapping into LUT structures [default = %s]\n", pPars->fDeriveLuts? "yes": "no" );
Abc_Print( -2, "\t-v : toggles verbose output [default = %s]\n", pPars->fVerbose? "yes": "no" );
Abc_Print( -2, "\t-h : prints the command usage\n");
diff --git a/src/base/abci/abcIf.c b/src/base/abci/abcIf.c
index 82b45248..5ef2afb8 100644
--- a/src/base/abci/abcIf.c
+++ b/src/base/abci/abcIf.c
@@ -39,11 +39,6 @@ static Vec_Ptr_t * Abc_NtkFindGoodOrder( Abc_Ntk_t * pNtk );
extern void Abc_NtkBddReorder( Abc_Ntk_t * pNtk, int fVerbose );
extern void Abc_NtkBidecResyn( Abc_Ntk_t * pNtk, int fVerbose );
-
-extern void Abc_NtkCollectPoDrivers( If_Man_t * p, Abc_Ntk_t * pNtk );
-extern void Abc_NtkCreateChoiceDrivers( If_Man_t * p );
-extern void Abc_NtkFreePoDrivers( If_Man_t * p, Abc_Ntk_t * pNtk );
-extern void Abc_NtkRecreatePoDrivers( If_Man_t * p, Abc_Ntk_t * pNtkNew );
////////////////////////////////////////////////////////////////////////
/// FUNCTION DEFINITIONS ///
@@ -141,16 +136,11 @@ Abc_Ntk_t * Abc_NtkIf( Abc_Ntk_t * pNtk, If_Par_t * pPars )
Abc_NtkIfComputeSwitching( pNtk, pIfMan );
// perform FPGA mapping
- if ( pPars->fEnableRealPos )
- Abc_NtkCollectPoDrivers( pIfMan, pNtk );
- Abc_NtkCreateChoiceDrivers( pIfMan );
if ( !If_ManPerformMapping( pIfMan ) )
{
- Abc_NtkFreePoDrivers( pIfMan, pNtk );
If_ManStop( pIfMan );
return NULL;
}
- Abc_NtkFreePoDrivers( pIfMan, pNtk );
// transform the result of mapping into the new network
pNtkNew = Abc_NtkFromIf( pIfMan, pNtk );
@@ -322,10 +312,6 @@ Abc_Ntk_t * Abc_NtkFromIf( If_Man_t * pIfMan, Abc_Ntk_t * pNtk )
Extra_ProgressBarStop( pProgress );
Vec_IntFree( vCover );
- // update PO drivers
- if ( pIfMan->pPars->fEnableRealPos )
- Abc_NtkRecreatePoDrivers( pIfMan, pNtkNew );
-
// remove the constant node if not used
pNodeNew = (Abc_Obj_t *)If_ObjCopy( If_ManConst1(pIfMan) );
if ( Abc_ObjFanoutNum(pNodeNew) == 0 && !Abc_ObjIsNone(pNodeNew) )
@@ -519,15 +505,6 @@ Abc_Obj_t * Abc_NodeFromIf_rec( Abc_Ntk_t * pNtkNew, If_Man_t * pIfMan, If_Obj_t
pNodeNew->pData = Abc_NodeIfToHop( (Hop_Man_t *)pNtkNew->pManFunc, pIfMan, pIfObj );
}
If_ObjSetCopy( pIfObj, pNodeNew );
-/*
-printf( "%3d : Delay = %d Cutsize = %d\n", pNodeNew->Id, (int)pCutBest->Delay, pCutBest->nLeaves );
-{
- Abc_Obj_t * pFanin;
- int i;
-Abc_ObjForEachFanin( pNodeNew, pFanin, i )
-printf( "fanin%d = %2d\n", i, pFanin->Id );
-}
-*/
return pNodeNew;
}
@@ -642,7 +619,6 @@ Hop_Obj_t * Abc_NodeIfToHop( Hop_Man_t * pHopMan, If_Man_t * pIfMan, If_Obj_t *
printf( "Abc_NodeIfToHop(): Computing local AIG has failed.\n" );
return NULL;
}
-// printf( "%d ", Vec_PtrSize(p->vTemp) );
// clean the cuts
If_CutForEachLeaf( pIfMan, pCut, pLeaf, i )
If_CutSetData( If_ObjCutBest(pLeaf), NULL );
@@ -754,10 +730,7 @@ Vec_Ptr_t * Abc_NtkFindGoodOrder( Abc_Ntk_t * pNtk )
Abc_NtkIncrementTravId( pNtk );
vNodes = Vec_PtrAlloc( 100 );
Vec_PtrForEachEntry( Abc_Obj_t *, vCos, pNode, i )
- {
Abc_NtkFindGoodOrder_rec( Abc_ObjFanin0(pNode), vNodes );
-// printf( "%.2f ", Abc_Int2Float((int)pNode->pCopy) );
- }
Vec_PtrFree( vCos );
return vNodes;
}
@@ -811,475 +784,6 @@ void Abc_NtkMarkMux( Abc_Obj_t * pDriver, Abc_Obj_t ** ppNode1, Abc_Obj_t ** ppN
*ppNode2 = Abc_ObjRegular(pNodeT);
}
-/**Function*************************************************************
-
- Synopsis [Sets PO drivers.]
-
- Description []
-
- SideEffects []
-
- SeeAlso []
-
-***********************************************************************/
-void Abc_NtkCollectPoDrivers( If_Man_t * p, Abc_Ntk_t * pNtk )
-{
- Vec_Int_t * vTemp;
- Abc_Obj_t * pObj, * pDriver;
- If_Obj_t * pIfObj;
- int i, g, nGroups;
- if ( pNtk->nRealPos == 0 )
- {
- if ( !Abc_FrameReadFlag("silentmode") )
- printf( "PO drivers are not defined.\n" );
- return;
- }
- if ( (Abc_NtkPoNum(pNtk) - pNtk->nRealPos) % 5 != 0 )
- {
- if ( !Abc_FrameReadFlag("silentmode") )
- printf( "PO drivers are not divisible by 5.\n" );
- return;
- }
- nGroups = (Abc_NtkPoNum(pNtk) - pNtk->nRealPos) / 5;
- if ( !Abc_FrameReadFlag("silentmode") )
- printf( "Processing %d groups of PO drivers.\n", nGroups );
- // mark the drivers (0 a 1 b 2 c 3 s 4 c)
- assert( p->pDriverCuts == NULL );
- p->pDriverCuts = ABC_CALLOC( Vec_Int_t *, If_ManObjNum(p) );
- for ( g = 0; g < nGroups; g++ )
- {
- // collect inputs
- vTemp = Vec_IntAlloc( 3 );
- for ( i = 0; i < 3; i++ )
- {
- pObj = Abc_NtkPo( pNtk, pNtk->nRealPos + g * 5 + i );
- pIfObj = If_Regular( ((If_Obj_t *)pObj->pCopy)->pFanin0 );
- Vec_IntPush( vTemp, pIfObj->Id );
- }
-// Vec_IntSort( vTemp, 0 );
- // find output node
- pObj = Abc_NtkPo( pNtk, pNtk->nRealPos + g * 5 + 3 );
- pIfObj = If_Regular( ((If_Obj_t *)pObj->pCopy)->pFanin0 );
- if ( !If_ObjIsConst1(pIfObj) && p->pDriverCuts[pIfObj->Id] == NULL )
- p->pDriverCuts[pIfObj->Id] = Vec_IntDup( vTemp );
- // find output node
- pObj = Abc_NtkPo( pNtk, pNtk->nRealPos + g * 5 + 4 );
- pIfObj = If_Regular( ((If_Obj_t *)pObj->pCopy)->pFanin0 );
- if ( !If_ObjIsConst1(pIfObj) && p->pDriverCuts[pIfObj->Id] == NULL )
- {
- p->pDriverCuts[pIfObj->Id] = Vec_IntDup( vTemp );
- pIfObj->fDriver = 1;
-// printf( "%d ", pIfObj->Id );
- }
- Vec_IntFree( vTemp );
- }
-// printf( "\n" );
- return;
-
- // highlight inner logic
- for ( i = pNtk->nRealPos; i < Abc_NtkPoNum(pNtk); i += 5 )
- {
- Abc_Obj_t * pNode1, * pNode2;
-
- pObj = Abc_NtkPo( pNtk, i + 4 );
- pDriver = Abc_ObjFanin0( pObj );
- Abc_NtkMarkMux( pDriver, &pNode1, &pNode2 );
-
-/*
- pObj = Abc_NtkPo( pNtk, i + 3 );
- pDriver = Abc_ObjFanin0( pObj );
- Abc_NtkMarkMux( pDriver, &pNode1, &pNode2 );
- if ( pNode1 == NULL )
- continue;
-
- assert( Abc_ObjRegular(pNode1) != Abc_ObjRegular(pNode2) );
-// Abc_NtkMarkMux( pNode1, &pNode1, &pNode2 );
-// Abc_NtkMarkMux( pNode2, &pNode1, &pNode2 );
-*/
- }
-
-/*
- {
- Vec_Int_t * vInfo;
- int i, k, numPo;
-
- Vec_VecForEachLevelInt( pNtk->vRealPos, vInfo, i )
- {
- numPo = Vec_IntEntry( vInfo, 0 );
- pObj = Abc_NtkPo( pNtk, numPo+2 );
- pDriver = Abc_ObjFanin0( pObj );
- pIfObj = If_Regular( (If_Obj_t *)pDriver->pCopy );
- pIfObj->fSkipCut = 0;
-
- numPo = Vec_IntEntryLast( vInfo );
- pObj = Abc_NtkPo( pNtk, numPo+4 );
- pDriver = Abc_ObjFanin0( pObj );
- pIfObj = If_Regular( (If_Obj_t *)pDriver->pCopy );
- pIfObj->fSkipCut = 0;
-
- Vec_IntForEachEntry( vInfo, numPo, k )
- {
- pObj = Abc_NtkPo( pNtk, numPo+0 );
- pDriver = Abc_ObjFanin0( pObj );
- pIfObj = If_Regular( (If_Obj_t *)pDriver->pCopy );
- pIfObj->fSkipCut = 0;
-
- pObj = Abc_NtkPo( pNtk, numPo+1 );
- pDriver = Abc_ObjFanin0( pObj );
- pIfObj = If_Regular( (If_Obj_t *)pDriver->pCopy );
- pIfObj->fSkipCut = 0;
-
- pObj = Abc_NtkPo( pNtk, numPo+2 );
- pDriver = Abc_ObjFanin0( pObj );
- pIfObj = If_Regular( (If_Obj_t *)pDriver->pCopy );
- pIfObj->fSkipCut = 0;
-
- pObj = Abc_NtkPo( pNtk, numPo+3 );
- pDriver = Abc_ObjFanin0( pObj );
- pIfObj = If_Regular( (If_Obj_t *)pDriver->pCopy );
- pIfObj->fSkipCut = 0;
- }
- }
- }
-*/
-}
-
-
-/**Function*************************************************************
-
- Synopsis [Frees PO drivers.]
-
- Description []
-
- SideEffects []
-
- SeeAlso []
-
-***********************************************************************/
-void Abc_NtkCreateChoiceDrivers( If_Man_t * p )
-{
- Vec_Int_t * vVec;
- If_Obj_t * pObj, * pTemp;
- int i, Counter = 0;
- if ( p->pDriverCuts == NULL )
- return;
- If_ManForEachNode( p, pObj, i )
- {
- // skip non-choice nodes
- if ( pObj->pEquiv == NULL || pObj->nRefs == 0 )
- continue;
- // find driver cut
- vVec = NULL;
- for ( pTemp = pObj; pTemp; pTemp = pTemp->pEquiv )
- if ( p->pDriverCuts[pTemp->Id] != NULL )
- {
- vVec = Vec_IntDup( p->pDriverCuts[pTemp->Id] );
- break;
- }
- if ( vVec == NULL )
- continue;
- // transfer driver cut to the root node
- for ( pTemp = pObj; pTemp; pTemp = pTemp->pEquiv )
- {
- Vec_IntFreeP( &p->pDriverCuts[pTemp->Id] );
- p->pDriverCuts[pTemp->Id] = Vec_IntDup( vVec );
- }
- Vec_IntFree( vVec );
- Counter++;
- }
-// printf( "Choice driver cut updates = %d.\n", Counter );
-}
-
-/**Function*************************************************************
-
- Synopsis [Frees PO drivers.]
-
- Description []
-
- SideEffects []
-
- SeeAlso []
-
-***********************************************************************/
-void Abc_NtkFreePoDrivers( If_Man_t * p, Abc_Ntk_t * pNtk )
-{
- If_Obj_t * pObj;
- If_Cut_t * pCut;
- int i;
- if ( p->pDriverCuts == NULL )
- return;
- pNtk->nRealDelay = p->RequiredGlo;
- if ( !Abc_FrameReadFlag("silentmode") )
- printf( "Actual delay after mapping = %.2f\n", p->RequiredGlo );
- assert( Abc_NtkPoNum(pNtk) == If_ManCoNum(p) - Abc_NtkLatchNum(pNtk) );
- // print the cut sizes of the drivers
- for ( i = pNtk->nRealPos; i < Abc_NtkPoNum(pNtk); i += 5 )
- {
- pObj = If_ManCo( p, i + 4 );
- pObj = If_Regular(pObj->pFanin0);
- if ( !pObj->fDriver )
- continue;
- pCut = If_ObjCutBest(pObj);
-// printf( "%d(%d) ", pObj->Id, pCut->nLeaves );
- }
-// printf( "\n" );
- for ( i = 0; i < If_ManObjNum(p); i++ )
- Vec_IntFreeP( &p->pDriverCuts[i] );
- ABC_FREE( p->pDriverCuts );
-}
-
-
-/**Function*************************************************************
-
- Synopsis [Returns 1 if pOld is in the TFI of pNew.]
-
- Description []
-
- SideEffects []
-
- SeeAlso []
-
-***********************************************************************/
-int Abc_NtkIfCheckTfi_rec( Abc_Obj_t * pNode, Abc_Obj_t * pOld )
-{
- Abc_Obj_t * pFanin;
- int k;
- if ( pNode == NULL )
- return 0;
- if ( pNode == pOld )
- return 1;
- // check the trivial cases
- if ( Abc_ObjIsCi(pNode) )
- return 0;
- assert( Abc_ObjIsNode(pNode) );
- // if this node is already visited, skip
- if ( Abc_NodeIsTravIdCurrent( pNode ) )
- return 0;
- // mark the node as visited
- Abc_NodeSetTravIdCurrent( pNode );
- // check the children
- Abc_ObjForEachFanin( pNode, pFanin, k )
- if ( Abc_NtkIfCheckTfi_rec( pFanin, pOld ) )
- return 1;
- return 0;
-}
-
-/**Function*************************************************************
-
- Synopsis [Returns 1 if pOld is in the TFI of pNew.]
-
- Description []
-
- SideEffects []
-
- SeeAlso []
-
-***********************************************************************/
-int Abc_NtkIfCheckTfi( Abc_Ntk_t * pNtk, Abc_Obj_t * pOld, Abc_Obj_t * pNew )
-{
- assert( !Abc_ObjIsComplement(pOld) );
- assert( !Abc_ObjIsComplement(pNew) );
- Abc_NtkIncrementTravId(pNtk);
- return Abc_NtkIfCheckTfi_rec( pNew, pOld );
-}
-
-
-/**Function*************************************************************
-
- Synopsis []
-
- Description []
-
- SideEffects []
-
- SeeAlso []
-
-***********************************************************************/
-void Abc_NtkIfCheckRealNodes( Abc_Ntk_t * pNtk )
-{
- Abc_Obj_t * pObj;
- int i, iNode;
- for ( i = pNtk->nRealPos; i < Abc_NtkPoNum(pNtk); i += 5 )
- {
- iNode = Vec_IntEntry( pNtk->vRealNodes, i+3 - pNtk->nRealPos );
- pObj = Abc_NtkObj( pNtk, iNode );
- assert( Abc_ObjFaninNum(pObj) == 2 );
-
- iNode = Vec_IntEntry( pNtk->vRealNodes, i+4 - pNtk->nRealPos );
- pObj = Abc_NtkObj( pNtk, iNode );
- assert( Abc_ObjFaninNum(pObj) == 3 );
- }
-}
-
-/**Function*************************************************************
-
- Synopsis [Restores the structure.]
-
- Description []
-
- SideEffects []
-
- SeeAlso []
-
-***********************************************************************/
-void Abc_NtkRecreatePoDrivers( If_Man_t * p, Abc_Ntk_t * pNtkNew )
-{
- Abc_Obj_t * pNode, * pExor, * pObj, * pFanin, * pFaninNew;
- Vec_Ptr_t * vDrivers, * vDriversNew, * vFanins;
- Vec_Int_t * vInfo, * vNodeMap, * vDriverInvs;
- int i, k, numPo, nRealLuts, fCompl;
- float RealLutArea;
- if ( pNtkNew->vRealPos == NULL )
- {
- if ( !Abc_FrameReadFlag("silentmode") )
- printf( "Missing key information.\n" );
- return;
- }
-
- assert( pNtkNew->vRealNodes == NULL );
- // create drivers
- vDrivers = Vec_PtrStart( pNtkNew->nRealPos );
- vDriverInvs = Vec_IntStart( pNtkNew->nRealPos );
- pNtkNew->vRealNodes = Vec_IntAlloc( Abc_NtkPoNum(pNtkNew) - pNtkNew->nRealPos );
- for ( i = pNtkNew->nRealPos; i < Abc_NtkPoNum(pNtkNew); i++ )
- {
- pObj = Abc_NtkPo( pNtkNew, i );
- if ( Abc_ObjFaninC0(pObj) )
- pNode = Abc_NtkCreateNodeInv( pNtkNew, Abc_ObjFanin0(pObj) );
- else
- pNode = Abc_NtkCreateNodeBuf( pNtkNew, Abc_ObjFanin0(pObj) );
-// if ( i % 5 == 4 )
-// printf( "%d", Abc_ObjFaninC0(pObj) );
- Vec_PtrPush( vDrivers, pNode );
- Vec_IntPush( vDriverInvs, Abc_ObjFaninC0(pObj) );
- Vec_IntPush( pNtkNew->vRealNodes, Abc_ObjId(pNode) );
- }
- assert( Vec_PtrSize( vDrivers ) == Abc_NtkPoNum( pNtkNew ) );
-
- // create new logic
- vFanins = Vec_PtrAlloc( 2 );
- vDriversNew = Vec_PtrStart( Abc_NtkPoNum(pNtkNew) );
- Vec_VecForEachLevelInt( pNtkNew->vRealPos, vInfo, i )
- {
- // find complemented attribute
- numPo = Vec_IntEntry( vInfo, 0 );
- fCompl = (strstr( Abc_ObjName(Abc_NtkPo(pNtkNew, numPo)), "SUB" ) != NULL);
- // consider parts
- Vec_IntForEachEntry( vInfo, numPo, k )
- {
- // update input
- if ( k > 0 )
- Vec_PtrWriteEntry( vDriversNew, numPo+2, pNode );
- // create first XOR
- Vec_PtrClear( vFanins );
- Vec_PtrPush( vFanins, (Abc_Obj_t *)Vec_PtrEntry(vDrivers, numPo+0) );
- Vec_PtrPush( vFanins, (Abc_Obj_t *)Vec_PtrEntry(vDrivers, numPo+1) );
- pExor = Abc_NtkCreateNodeExor( pNtkNew, vFanins );
- // update polarity
- pExor->pData = Hop_NotCond( (Hop_Obj_t *)pExor->pData, fCompl );
- // create second XOR
- Vec_PtrClear( vFanins );
- Vec_PtrPush( vFanins, pExor );
- Vec_PtrPush( vFanins, (Abc_Obj_t *)Vec_PtrEntry(vDrivers, numPo+2) );
- pNode = Abc_NtkCreateNodeExor( pNtkNew, vFanins );
- // update pointers
- Vec_PtrWriteEntry( vDriversNew, numPo+3, pNode );
- Vec_IntWriteEntry( pNtkNew->vRealNodes, numPo+3 - pNtkNew->nRealPos, Abc_ObjId(pNode) );
- // create MUX
- pNode = Abc_NtkCreateNodeMux( pNtkNew, pExor,
- (Abc_Obj_t *)Vec_PtrEntry(vDrivers, numPo+2),
- (Abc_Obj_t *)Vec_PtrEntry(vDrivers, numPo+(fCompl ? 0 : 1)) );
- // update pointers
- Vec_PtrWriteEntry( vDriversNew, numPo+4, pNode );
- Vec_IntWriteEntry( pNtkNew->vRealNodes, numPo+4 - pNtkNew->nRealPos, Abc_ObjId(pNode) );
- }
- }
- Vec_PtrFree( vFanins );
-
- Abc_NtkIfCheckRealNodes( pNtkNew );
-
- // map internal nodes into PO numbers
- vNodeMap = Vec_IntStartFull( Abc_NtkObjNumMax(pNtkNew) );
- Vec_VecForEachLevelInt( pNtkNew->vRealPos, vInfo, i )
- Vec_IntForEachEntryReverse( vInfo, numPo, k )
- {
- pObj = Abc_NtkPo( pNtkNew, numPo+3 );
- Vec_IntWriteEntry( vNodeMap, Abc_ObjId( Abc_ObjFanin0(pObj) ), numPo+3 );
-
- // update the PO pointer
-// if ( Abc_ObjFaninC0(pObj) )
-// Abc_ObjXorFaninC( pObj, 0 );
-// Abc_ObjPatchFanin( pObj, Abc_ObjFanin0(pObj), Vec_PtrEntry(vDriversNew, numPo+3) );
-
- pObj = Abc_NtkPo( pNtkNew, numPo+4 );
- Vec_IntWriteEntry( vNodeMap, Abc_ObjId( Abc_ObjFanin0(pObj) ), numPo+4 );
-
- // update the PO pointer
-// if ( Abc_ObjFaninC0(pObj) )
-// Abc_ObjXorFaninC( pObj, 0 );
-// Abc_ObjPatchFanin( pObj, Abc_ObjFanin0(pObj), Vec_PtrEntry(vDriversNew, numPo+4) );
-
- }
-
- // replace logic
- Abc_NtkForEachObj( pNtkNew, pObj, i )
- {
-// if ( Abc_ObjIsPo(pObj) )
-// continue;
- Abc_ObjForEachFanin( pObj, pFanin, k )
- {
- if ( !Abc_ObjIsNode(pFanin) || Abc_ObjFaninNum(pFanin) == 0 )
- continue;
- numPo = Vec_IntEntry( vNodeMap, Abc_ObjId(pFanin) );
- if ( numPo == ~0 )
- continue;
- // get the node and the complemented bit
- pFaninNew = (Abc_Obj_t *)Vec_PtrEntry( vDriversNew, numPo );
- fCompl = Vec_IntEntry( vDriverInvs, numPo );
- if ( fCompl )
- pFaninNew = Abc_NtkCreateNodeInv( pNtkNew, pFaninNew );
-// else
-// pFaninNew = Abc_NtkCreateNodeBuf( pNtkNew, pFaninNew );
-
- if ( !Abc_NtkIfCheckTfi( pNtkNew, pObj, pFaninNew ) )
- Abc_ObjPatchFanin( pObj, pFanin, pFaninNew );
- }
- }
-
- // sweep
- Abc_NtkCleanupNodes( pNtkNew, vDriversNew, 0 );
-
- // make sure that all vDriversNew are still present
- {
- Abc_Obj_t * pObj;
- int i;
- Vec_PtrForEachEntry( Abc_Obj_t *, vDriversNew, pObj, i )
- if ( pObj && Abc_ObjIsNone(pObj) )
- assert( 0 );
- }
-
- Vec_PtrFree( vDrivers );
- Vec_PtrFree( vDriversNew );
- Vec_IntFree( vNodeMap );
- Vec_IntFree( vDriverInvs );
-
- // count non-trivial LUTs nodes
- nRealLuts = -2 * Vec_VecSizeSize(pNtkNew->vRealPos);
- RealLutArea = -(p->pPars->pLutLib ? p->pPars->pLutLib->pLutAreas[2] + p->pPars->pLutLib->pLutAreas[3] : 2.0) * Vec_VecSizeSize(pNtkNew->vRealPos);
- Abc_NtkForEachNode( pNtkNew, pNode, i )
- if ( Abc_ObjFaninNum(pNode) > 1 )
- {
- nRealLuts++;
- RealLutArea += p->pPars->pLutLib->pLutAreas[Abc_ObjFaninNum(pNode)];
- }
- if ( !Abc_FrameReadFlag("silentmode") )
- printf( "The number of real LUTs = %d. Real LUT area = %.2f.\n", nRealLuts, RealLutArea );
- pNtkNew->nRealLuts = nRealLuts;
- pNtkNew->nRealArea = RealLutArea;
-
- Abc_NtkIfCheckRealNodes( pNtkNew );
-
-}
////////////////////////////////////////////////////////////////////////
/// END OF FILE ///
diff --git a/src/base/abci/abcPrint.c b/src/base/abci/abcPrint.c
index efeaabe9..365b7767 100644
--- a/src/base/abci/abcPrint.c
+++ b/src/base/abci/abcPrint.c
@@ -226,8 +226,6 @@ void Abc_NtkPrintStats( Abc_Ntk_t * pNtk, int fFactored, int fSaveBest, int fDum
Abc_Print( 1," i/o =%5d/%5d", Abc_NtkPiNum(pNtk), Abc_NtkPoNum(pNtk) );
if ( Abc_NtkConstrNum(pNtk) )
Abc_Print( 1,"(c=%d)", Abc_NtkConstrNum(pNtk) );
-// if ( pNtk->nRealPos )
-// Abc_Print( 1,"(p=%d)", Abc_NtkPoNum(pNtk) - pNtk->nRealPos );
Abc_Print( 1," lat =%5d", Abc_NtkLatchNum(pNtk) );
if ( Abc_NtkIsNetlist(pNtk) )
{
diff --git a/src/base/abci/abcSweep.c b/src/base/abci/abcSweep.c
index 87c90a31..7eae3587 100644
--- a/src/base/abci/abcSweep.c
+++ b/src/base/abci/abcSweep.c
@@ -972,13 +972,6 @@ int Abc_NtkSweepBufsInvs( Abc_Ntk_t * pNtk, int fVerbose )
pMan = (Hop_Man_t *)pNtk->pManFunc;
// label selected nodes
Abc_NtkIncrementTravId( pNtk );
- if ( pNtk->vRealNodes )
- {
- Abc_Obj_t * pObj;
- assert( Vec_IntSize(pNtk->vRealNodes) == Abc_NtkPoNum(pNtk) - pNtk->nRealPos );
- Abc_NtkForEachObjVec( pNtk->vRealNodes, pNtk, pObj, i )
- Abc_NodeSetTravIdCurrent( pObj );
- }
// iterate till no improvement
while ( fChanges )
{