Skip to content

Commit 4560597

Browse files
committed
Utility to duplicate inputs.
1 parent 49d9252 commit 4560597

File tree

2 files changed

+60
-1
lines changed

2 files changed

+60
-1
lines changed

src/aig/gia/giaDup.c

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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
////////////////////////////////////////////////////////////////////////

src/base/abci/abcRunGen.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ void Acb_NtkRunGen( int nInputs, int nMints, int nFuncs, int Seed, int fVerbose,
110110
Vec_IntAddToEntry( vNodes, nNodes, 1 );
111111

112112
if ( fVerbose ) {
113-
printf( "Iteration %3d : ", i );
113+
printf( "Function %4d : ", i );
114114
printf( "Random function has %d positive minterms ", nMints );
115115
printf( "and maps into %d nodes.\n", nNodes );
116116
if ( fVerbose )

0 commit comments

Comments
 (0)