@@ -6210,6 +6210,65 @@ void Gia_ManCofClassEnum( Gia_Man_t * p, int nVars )
62106210 Vec_IntFree ( vIns );
62116211}
62126212
6213+ /**Function*************************************************************
6214+
6215+ Synopsis []
6216+
6217+ Description []
6218+
6219+ SideEffects []
6220+
6221+ SeeAlso []
6222+
6223+ ***********************************************************************/
6224+ int Gia_ObjWhichFanout ( Gia_Man_t * p , int iFanin , int iFanout )
6225+ {
6226+ int i , FanId ;
6227+ Gia_ObjForEachFanoutStaticId ( p , iFanin , FanId , i )
6228+ if ( FanId == iFanout )
6229+ return i ;
6230+ assert ( 0 );
6231+ return -1 ;
6232+ }
6233+ Gia_Man_t * Gia_ManDupFanouts ( Gia_Man_t * p )
6234+ {
6235+ assert ( Gia_ManRegNum (p ) == 0 );
6236+ Gia_Man_t * pNew ; Gia_Obj_t * pObj ; int i , f , iLit [2 ];
6237+ pNew = Gia_ManStart ( Gia_ManObjNum (p )+ 100 );
6238+ pNew -> pName = Abc_UtilStrsav ( p -> pName );
6239+ Gia_ManFillValue ( p );
6240+ Gia_ManConst0 (p )-> Value = 0 ;
6241+ Gia_ManStaticFanoutStart ( p );
6242+ pNew -> vNamesIn = Vec_PtrAlloc ( 100 );
6243+ pNew -> vNamesOut = Vec_PtrAlloc ( 100 );
6244+ Gia_ManForEachPi ( p , pObj , i ) {
6245+ pObj -> Value = Gia_ManAppendCi (pNew );
6246+ Vec_PtrPush ( pNew -> vNamesIn , Gia_ObjCiName (p , i ) );
6247+ for ( f = 1 ; f < Gia_ObjFanoutNum (p , pObj ); f ++ ) {
6248+ Gia_ManAppendCi (pNew );
6249+ Vec_PtrPush ( pNew -> vNamesIn , Abc_UtilStrsavNum (Gia_ObjCiName (p , i ), f ) );
6250+ }
6251+ }
6252+ Gia_ManForEachAnd ( p , pObj , i ) {
6253+ iLit [0 ] = Gia_ObjFanin0Copy (pObj );
6254+ if ( Gia_ObjIsPi (p , Gia_ObjFanin0 (pObj )) )
6255+ iLit [0 ] += 2 * Gia_ObjWhichFanout (p , Gia_ObjFaninId0 (pObj , i ), i );
6256+ iLit [1 ] = Gia_ObjFanin1Copy (pObj );
6257+ if ( Gia_ObjIsPi (p , Gia_ObjFanin1 (pObj )) )
6258+ iLit [1 ] += 2 * Gia_ObjWhichFanout (p , Gia_ObjFaninId1 (pObj , i ), i );
6259+ pObj -> Value = Gia_ManAppendAnd ( pNew , iLit [0 ], iLit [1 ] );
6260+ }
6261+ Gia_ManForEachPo ( p , pObj , i ) {
6262+ iLit [0 ] = Gia_ObjFanin0Copy (pObj );
6263+ if ( Gia_ObjIsPi (p , Gia_ObjFanin0 (pObj )) )
6264+ iLit [0 ] += 2 * Gia_ObjWhichFanout (p , Gia_ObjFaninId0p (p , pObj ), Gia_ObjId (p , pObj ));
6265+ Gia_ManAppendCo ( pNew , iLit [0 ] );
6266+ Vec_PtrPush ( pNew -> vNamesOut , Gia_ObjCoName (p , i ) );
6267+ }
6268+ Gia_ManStaticFanoutStop ( p );
6269+ return pNew ;
6270+ }
6271+
62136272////////////////////////////////////////////////////////////////////////
62146273/// END OF FILE ///
62156274////////////////////////////////////////////////////////////////////////
0 commit comments