summaryrefslogtreecommitdiffstats
path: root/src/base/wlc/wlcNtk.c
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2015-06-19 22:58:07 -0700
committerAlan Mishchenko <alanmi@berkeley.edu>2015-06-19 22:58:07 -0700
commit4b7dd69260f5347e3ae1c92b3d7f18a9ca1c05c0 (patch)
tree3338355502b43e4f582bd7017e5f273702898d2c /src/base/wlc/wlcNtk.c
parent6e4ef76311923099a67df7dae5894dee574825c9 (diff)
downloadabc-4b7dd69260f5347e3ae1c92b3d7f18a9ca1c05c0.tar.gz
abc-4b7dd69260f5347e3ae1c92b3d7f18a9ca1c05c0.tar.bz2
abc-4b7dd69260f5347e3ae1c92b3d7f18a9ca1c05c0.zip
Adding new debugging feature to Wlc_Ntk_t.
Diffstat (limited to 'src/base/wlc/wlcNtk.c')
-rw-r--r--src/base/wlc/wlcNtk.c53
1 files changed, 53 insertions, 0 deletions
diff --git a/src/base/wlc/wlcNtk.c b/src/base/wlc/wlcNtk.c
index 44a114f4..11f63d17 100644
--- a/src/base/wlc/wlcNtk.c
+++ b/src/base/wlc/wlcNtk.c
@@ -499,6 +499,59 @@ void Wlc_NtkTransferNames( Wlc_Ntk_t * pNew, Wlc_Ntk_t * p )
pNew->vTables = p->vTables; p->vTables = NULL;
}
+/**Function*************************************************************
+
+ Synopsis [Duplicates the network by copying each node.]
+
+ Description []
+
+ SideEffects []
+
+ SeeAlso []
+
+***********************************************************************/
+Wlc_Ntk_t * Wlc_NtkDupSingleNodes( Wlc_Ntk_t * p )
+{
+ Wlc_Ntk_t * pNew;
+ Vec_Int_t * vFanins;
+ Wlc_Obj_t * pObj, * pObjNew;
+ Wlc_Obj_t * pFanin, * pFaninNew;
+ int i, k, iFanin, iFaninNew, iObjNew, Count = 0;
+ // count objects
+ Wlc_NtkForEachObj( p, pObj, i )
+ if ( !Wlc_ObjIsCi(pObj) )
+ Count += 1 + Wlc_ObjFaninNum(pObj);
+ // copy objects
+ Wlc_NtkCleanCopy( p );
+ vFanins = Vec_IntAlloc( 100 );
+ pNew = Wlc_NtkAlloc( p->pName, p->nObjsAlloc );
+ Wlc_NtkForEachObj( p, pObj, i )
+ {
+ if ( Wlc_ObjIsCi(pObj) )
+ continue;
+ if ( pObj->Type == WLC_OBJ_ARI_MULTI )
+ continue;
+ // create CIs for the fanins
+ Wlc_ObjForEachFanin( pObj, iFanin, k )
+ {
+ pFanin = Wlc_NtkObj(p, iFanin);
+ iFaninNew = Wlc_ObjAlloc( pNew, WLC_OBJ_PI, pFanin->Signed, pFanin->End, pFanin->Beg );
+ pFaninNew = Wlc_NtkObj(pNew, iFaninNew);
+ Wlc_ObjSetCopy( p, iFanin, iFaninNew );
+ //Wlc_ObjSetCi( pNew, pFaninNew );
+ }
+ // create object
+ iObjNew = Wlc_ObjDup( pNew, p, i, vFanins );
+ pObjNew = Wlc_NtkObj(pNew, iObjNew);
+ pObjNew->fIsPo = 1;
+ Vec_IntPush( &pNew->vPos, iObjNew );
+ }
+ Vec_IntFree( vFanins );
+ Wlc_NtkTransferNames( pNew, p );
+ return pNew;
+}
+
+
////////////////////////////////////////////////////////////////////////
/// END OF FILE ///
////////////////////////////////////////////////////////////////////////