From 0ca7e355f457363bc78de8468df1e66e61b5e8b0 Mon Sep 17 00:00:00 2001 From: Alan Mishchenko Date: Thu, 18 Jul 2019 12:03:56 +0200 Subject: Adding handling of objects without fanout in %retime. --- src/base/wln/wlnRetime.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/base/wln/wlnRetime.c b/src/base/wln/wlnRetime.c index e7678c5d..1ba2d50f 100644 --- a/src/base/wln/wlnRetime.c +++ b/src/base/wln/wlnRetime.c @@ -148,11 +148,23 @@ int Wln_RetComputeFfClasses( Wln_Ntk_t * pNtk, Vec_Int_t * vClasses ) } Wln_Ret_t * Wln_RetAlloc( Wln_Ntk_t * pNtk ) { - Wln_Ret_t * p; int k, iObj, iFanin; + Wln_Ret_t * p; int k, iObj, iFanin, fFirst = 1; Vec_Int_t * vRefsCopy = Vec_IntAlloc(0); p = ABC_CALLOC( Wln_Ret_t, 1 ); p->pNtk = pNtk; Wln_NtkCreateRefs( pNtk ); + // print objects without fanout + Wln_NtkForEachObj( pNtk, iObj ) + if ( Wln_ObjRefs(pNtk, iObj) == 0 && !Wln_ObjIsCio(pNtk, iObj) ) + { + if ( fFirst ) + { + fFirst = 0; + printf( "Objects without fanout:\n" ); + } + Wln_ObjPrint(pNtk, iObj); + } + // start fanin/fanout maps Wln_NtkStartFaninMap( pNtk, &p->vFanins, 2 ); Wln_NtkStartFanoutMap( pNtk, &p->vFanouts, &pNtk->vRefs, 2 ); ABC_SWAP( Vec_Int_t, *vRefsCopy, pNtk->vRefs ); @@ -372,6 +384,8 @@ int Wln_RetCheckForward( Wln_Ret_t * p, Vec_Int_t * vSet ) static inline int Wln_RetCheckBackwardOne( Wln_Ret_t * p, int iObj ) { int k, iFanin, * pLink, iFlop, Class = -1; + if ( Wln_ObjRefs(p->pNtk, iObj) == 0 ) + return 0; Wln_RetForEachFanout( p, iObj, iFanin, pLink, k ) { if ( !pLink[0] ) -- cgit v1.2.3