summaryrefslogtreecommitdiffstats
path: root/src/aig/gia/giaUtil.c
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2020-02-21 13:40:50 -0800
committerAlan Mishchenko <alanmi@berkeley.edu>2020-02-21 13:40:50 -0800
commit3c586f886e52414b2baa8d0df3722b71e3478f0d (patch)
tree72ddb518503fcbcec277e42e54ad0e11dca0b45f /src/aig/gia/giaUtil.c
parentb1802e4fdc32473d3c2fb30c1dbdbc6c33939695 (diff)
downloadabc-3c586f886e52414b2baa8d0df3722b71e3478f0d.tar.gz
abc-3c586f886e52414b2baa8d0df3722b71e3478f0d.tar.bz2
abc-3c586f886e52414b2baa8d0df3722b71e3478f0d.zip
Adding commands to generate data for experiments.
Diffstat (limited to 'src/aig/gia/giaUtil.c')
-rw-r--r--src/aig/gia/giaUtil.c162
1 files changed, 1 insertions, 161 deletions
diff --git a/src/aig/gia/giaUtil.c b/src/aig/gia/giaUtil.c
index ea6cb147..072c9872 100644
--- a/src/aig/gia/giaUtil.c
+++ b/src/aig/gia/giaUtil.c
@@ -2223,167 +2223,6 @@ void Gia_ManUpdateCopy( Vec_Int_t * vCopy, Gia_Man_t * p )
/**Function*************************************************************
- Synopsis [Populate internal simulation info.]
-
- Description []
-
- SideEffects []
-
- SeeAlso []
-
-***********************************************************************/
-static inline word * Gia_ManObjSim( Gia_Man_t * p, int iObj )
-{
- return Vec_WrdEntryP( p->vSims, p->nSimWords * iObj );
-}
-static inline void Gia_ManObjSimPi( Gia_Man_t * p, int iObj )
-{
- int w;
- word * pSim = Gia_ManObjSim( p, iObj );
- for ( w = 0; w < p->nSimWords; w++ )
- pSim[w] = Gia_ManRandomW( 0 );
-// pSim[0] <<= 1;
-}
-static inline void Gia_ManObjSimPo( Gia_Man_t * p, int iObj )
-{
- int w;
- Gia_Obj_t * pObj = Gia_ManObj( p, iObj );
- word * pSimCo = Gia_ManObjSim( p, iObj );
- word * pSimDri = Gia_ManObjSim( p, Gia_ObjFaninId0(pObj, iObj) );
- if ( Gia_ObjFaninC0(pObj) )
- for ( w = 0; w < p->nSimWords; w++ )
- pSimCo[w] = ~pSimDri[w];
- else
- for ( w = 0; w < p->nSimWords; w++ )
- pSimCo[w] = pSimDri[w];
-}
-static inline void Gia_ManObjSimAnd( Gia_Man_t * p, int iObj )
-{
- int w;
- Gia_Obj_t * pObj = Gia_ManObj( p, iObj );
- word * pSim = Gia_ManObjSim( p, iObj );
- word * pSim0 = Gia_ManObjSim( p, Gia_ObjFaninId0(pObj, iObj) );
- word * pSim1 = Gia_ManObjSim( p, Gia_ObjFaninId1(pObj, iObj) );
- if ( Gia_ObjFaninC0(pObj) && Gia_ObjFaninC1(pObj) )
- for ( w = 0; w < p->nSimWords; w++ )
- pSim[w] = ~pSim0[w] & ~pSim1[w];
- else if ( Gia_ObjFaninC0(pObj) && !Gia_ObjFaninC1(pObj) )
- for ( w = 0; w < p->nSimWords; w++ )
- pSim[w] = ~pSim0[w] & pSim1[w];
- else if ( !Gia_ObjFaninC0(pObj) && Gia_ObjFaninC1(pObj) )
- for ( w = 0; w < p->nSimWords; w++ )
- pSim[w] = pSim0[w] & ~pSim1[w];
- else
- for ( w = 0; w < p->nSimWords; w++ )
- pSim[w] = pSim0[w] & pSim1[w];
-}
-int Gia_ManSimulateWords( Gia_Man_t * p, int nWords )
-{
- Gia_Obj_t * pObj; int i;
- // allocate simulation info for one timeframe
- Vec_WrdFreeP( &p->vSims );
- p->vSims = Vec_WrdStart( Gia_ManObjNum(p) * nWords );
- p->nSimWords = nWords;
- // perform simulation
- Gia_ManForEachObj1( p, pObj, i )
- {
- if ( Gia_ObjIsAnd(pObj) )
- Gia_ManObjSimAnd( p, i );
- else if ( Gia_ObjIsCi(pObj) )
- Gia_ManObjSimPi( p, i );
- else if ( Gia_ObjIsCo(pObj) )
- Gia_ManObjSimPo( p, i );
- else assert( 0 );
- }
- return 1;
-}
-
-
-/**Function*************************************************************
-
- Synopsis [Dump data files.]
-
- Description []
-
- SideEffects []
-
- SeeAlso []
-
-***********************************************************************/
-void Gia_ManDumpFiles( Gia_Man_t * p, int nCexesT, int nCexesV )
-{
- int n, nSize[2] = {nCexesT*64, nCexesV*64};
-
- char pFileNameOutTX[100];
- char pFileNameOutTY[100];
- char pFileNameOutVX[100];
- char pFileNameOutVY[100];
-
- sprintf( pFileNameOutTX, "data/%s_%d_%d.data", Gia_ManName(p), nSize[0], Gia_ManCiNum(p) );
- sprintf( pFileNameOutTY, "data/%s_%d_%d.data", Gia_ManName(p), nSize[0], Gia_ManCoNum(p) );
- sprintf( pFileNameOutVX, "data/%s_%d_%d.data", Gia_ManName(p), nSize[1], Gia_ManCiNum(p) );
- sprintf( pFileNameOutVY, "data/%s_%d_%d.data", Gia_ManName(p), nSize[1], Gia_ManCoNum(p) );
-
- Gia_ManRandomW( 1 );
- for ( n = 0; n < 2; n++ )
- {
- int Res = Gia_ManSimulateWords( p, nSize[n] );
-
- Vec_Bit_t * vBitX = Vec_BitAlloc( nSize[n] * Gia_ManCiNum(p) );
- Vec_Bit_t * vBitY = Vec_BitAlloc( nSize[n] * Gia_ManCoNum(p) );
-
- FILE * pFileOutX = fopen( n ? pFileNameOutVX : pFileNameOutTX, "wb" );
- FILE * pFileOutY = fopen( n ? pFileNameOutVY : pFileNameOutTY, "wb" );
-
- int i, k, Id, Num, Value, nBytes;
- for ( k = 0; k < nSize[n]; k++ )
- {
- Gia_ManForEachCiId( p, Id, i )
- {
- Vec_BitPush( vBitX, Abc_TtGetBit(Gia_ManObjSim(p, Id), k) );
- //printf( "%d", Abc_TtGetBit(Gia_ManObjSim(p, Id), k) );
- }
- //printf( " " );
- Gia_ManForEachCoId( p, Id, i )
- {
- Vec_BitPush( vBitY, Abc_TtGetBit(Gia_ManObjSim(p, Id), k) );
- //printf( "%d", Abc_TtGetBit(Gia_ManObjSim(p, Id), k) );
- }
- //printf( "\n" );
- }
- assert( Vec_BitSize(vBitX) <= Vec_BitCap(vBitX) );
- assert( Vec_BitSize(vBitY) <= Vec_BitCap(vBitY) );
-
- Num = 2; Value = fwrite( &Num, 1, 4, pFileOutX ); assert( Value == 4 );
- Num = nSize[n]; Value = fwrite( &Num, 1, 4, pFileOutX ); assert( Value == 4 );
- Num = Gia_ManCiNum(p); Value = fwrite( &Num, 1, 4, pFileOutX ); assert( Value == 4 );
-
- nBytes = nSize[n] * Gia_ManCiNum(p) / 8;
- assert( nSize[n] * Gia_ManCiNum(p) % 8 == 0 );
- Value = fwrite( Vec_BitArray(vBitX), 1, nBytes, pFileOutX );
- assert( Value == nBytes );
-
- Num = 2; Value = fwrite( &Num, 1, 4, pFileOutY ); assert( Value == 4 );
- Num = nSize[n]; Value = fwrite( &Num, 1, 4, pFileOutY ); assert( Value == 4 );
- Num = Gia_ManCoNum(p); Value = fwrite( &Num, 1, 4, pFileOutY ); assert( Value == 4 );
-
- nBytes = nSize[n] * Gia_ManCoNum(p) / 8;
- assert( nSize[n] * Gia_ManCoNum(p) % 8 == 0 );
- Value = fwrite( Vec_BitArray(vBitY), 1, nBytes, pFileOutY );
- assert( Value == nBytes );
-
- fclose( pFileOutX );
- fclose( pFileOutY );
-
- Vec_BitFree( vBitX );
- Vec_BitFree( vBitY );
-
- Res = 0;
- }
-}
-
-/**Function*************************************************************
-
Synopsis []
Description []
@@ -2449,6 +2288,7 @@ Gia_Man_t * Gia_ManDupWithMuxPos( Gia_Man_t * p )
return pNew;
}
+
////////////////////////////////////////////////////////////////////////
/// END OF FILE ///
////////////////////////////////////////////////////////////////////////