diff options
author | Alan Mishchenko <alanmi@berkeley.edu> | 2020-03-06 13:12:00 -0800 |
---|---|---|
committer | Alan Mishchenko <alanmi@berkeley.edu> | 2020-03-06 13:12:00 -0800 |
commit | f402d09c7468e906b7f26f9c8a853383394b9ebf (patch) | |
tree | 09422c72e573c5f221a5c3ae1cd899e689a9e780 /src | |
parent | ed90ce20df9c7c4d6e1db5d3f786f9b52e06bab1 (diff) | |
download | abc-f402d09c7468e906b7f26f9c8a853383394b9ebf.tar.gz abc-f402d09c7468e906b7f26f9c8a853383394b9ebf.tar.bz2 abc-f402d09c7468e906b7f26f9c8a853383394b9ebf.zip |
Updating and extending simulation data structures.
Diffstat (limited to 'src')
-rw-r--r-- | src/aig/gia/giaGen.c | 33 | ||||
-rw-r--r-- | src/base/abci/abc.c | 95 |
2 files changed, 21 insertions, 107 deletions
diff --git a/src/aig/gia/giaGen.c b/src/aig/gia/giaGen.c index 0b1ad7b5..affcba37 100644 --- a/src/aig/gia/giaGen.c +++ b/src/aig/gia/giaGen.c @@ -236,28 +236,29 @@ void Gia_ManDumpFiles( Gia_Man_t * p, int nCexesT, int nCexesV, int Seed, char * ***********************************************************************/ void Gia_ManDumpPlaFiles( Gia_Man_t * p, int nCexesT, int nCexesV, int Seed, char * pFileName ) { - int n, nSize[2] = {nCexesT*64, nCexesV*64}; + int n, nSize[3] = {nCexesT, nCexesV, nCexesV}; - char pFileNameOutT[100]; - char pFileNameOutV[100]; + char pFileNameOut[3][100]; - sprintf( pFileNameOutT, "train_%s_%d.pla", pFileName ? pFileName : Gia_ManName(p), nSize[0] ); - sprintf( pFileNameOutV, "test_%s_%d.pla", pFileName ? pFileName : Gia_ManName(p), nSize[1] ); + sprintf( pFileNameOut[0], "%s.train.pla", pFileName ? pFileName : Gia_ManName(p) ); + sprintf( pFileNameOut[1], "%s.valid.pla", pFileName ? pFileName : Gia_ManName(p) ); + sprintf( pFileNameOut[2], "%s.test.pla", pFileName ? pFileName : Gia_ManName(p) ); Gia_ManRandomW( 1 ); for ( n = 0; n < Seed; n++ ) Gia_ManRandomW( 0 ); - for ( n = 0; n < 2; n++ ) + for ( n = 0; n < 3; n++ ) { int Res = Gia_ManSimulateWords( p, nSize[n] ); int i, k, Id; - FILE * pFileOut = fopen( n ? pFileNameOutV : pFileNameOutT, "wb" ); + FILE * pFileOut = fopen( pFileNameOut[n], "wb" ); fprintf( pFileOut, ".i %d\n", Gia_ManCiNum(p) ); fprintf( pFileOut, ".o %d\n", Gia_ManCoNum(p) ); - fprintf( pFileOut, ".p %d\n", nSize[n] ); - for ( k = 0; k < nSize[n]; k++ ) + fprintf( pFileOut, ".p %d\n", nSize[n]*64 ); + fprintf( pFileOut, ".type fr\n" ); + for ( k = 0; k < nSize[n]*64; k++ ) { Gia_ManForEachCiId( p, Id, i ) { @@ -278,7 +279,7 @@ void Gia_ManDumpPlaFiles( Gia_Man_t * p, int nCexesT, int nCexesV, int Seed, cha Res = 0; } - printf( "Finished dumping files \"%s\" and \"%s\".\n", pFileNameOutT, pFileNameOutV ); + printf( "Finished dumping files: \"%s.{train, valid, test}.pla\".\n", pFileName ? pFileName : Gia_ManName(p) ); } /**Function************************************************************* @@ -337,6 +338,7 @@ int Gia_ManSimParamRead( char * pFileName, int * pnIns, int * pnWords ) *pnIns = nIns - 1; *pnWords = nLines / 64; //printf( "Expecting %d inputs and %d words of simulation data.\n", *pnIns, *pnWords ); + fclose( pFile ); return 1; } void Gia_ManSimFileRead( char * pFileName, int nIns, int nWords, Vec_Wrd_t * vSimsIn, Vec_Int_t * vValues ) @@ -374,11 +376,11 @@ void Gia_ManSimFileRead( char * pFileName, int nIns, int nWords, Vec_Wrd_t * vSi } assert( nPats == 64*nWords ); fclose( pFile ); - printf( "Read %d simulation patterns for %d inputs.\n", 64*nWords, nIns ); + printf( "Read %d simulation patterns for %d inputs. Probability of 1 at the output is %6.2f %%.\n", 64*nWords, nIns, 100.0*Vec_IntSum(vValues)/nPats ); } void Gia_ManCompareValues( Gia_Man_t * p, Vec_Wrd_t * vSimsIn, Vec_Int_t * vValues ) { - int i, Value, Count = 0, nWords = Vec_WrdSize(vSimsIn) / Gia_ManCiNum(p); + int i, Value, Guess, Count = 0, nWords = Vec_WrdSize(vSimsIn) / Gia_ManCiNum(p); word * pSims; assert( Vec_IntSize(vValues) == nWords * 64 ); Gia_ManSimulateWordsInit( p, vSimsIn ); @@ -387,8 +389,11 @@ void Gia_ManCompareValues( Gia_Man_t * p, Vec_Wrd_t * vSimsIn, Vec_Int_t * vValu Vec_IntForEachEntry( vValues, Value, i ) if ( Abc_TtGetBit(pSims, i) == Value ) Count++; - printf( "Total = %6d. Errors = %6d. Correct = %6d. (%6.2f %%)\n", - Vec_IntSize(vValues), Vec_IntSize(vValues) - Count, Count, 100.0*Count/Vec_IntSize(vValues) ); + Guess = (Vec_IntSum(vValues) > nWords * 32) ? Vec_IntSum(vValues) : nWords * 64 - Vec_IntSum(vValues); + printf( "Total = %6d. Errors = %6d. Correct = %6d. (%6.2f %%) Naive guess = %6d. (%6.2f %%)\n", + Vec_IntSize(vValues), Vec_IntSize(vValues) - Count, + Count, 100.0*Count/Vec_IntSize(vValues), + Guess, 100.0*Guess/Vec_IntSize(vValues)); } /**Function************************************************************* diff --git a/src/base/abci/abc.c b/src/base/abci/abc.c index 934f8fbe..732974ce 100644 --- a/src/base/abci/abc.c +++ b/src/base/abci/abc.c @@ -23433,7 +23433,7 @@ int Abc_CommandSymFun( Abc_Frame_t * pAbc, int argc, char ** argv ) else printf( "Generated truth table of the %d-variable function (%s) and set it as the current network\n", nVars, pTruth ); } - else + else if ( nVars <= 8 ) printf( "%s\n", pTruth ); // read the truth table to be the current network in ABC pCommand = ABC_CALLOC( char, strlen(pTruth) + 100 ); @@ -47436,39 +47436,11 @@ usage: ***********************************************************************/ int Abc_CommandAbc9Test( Abc_Frame_t * pAbc, int argc, char ** argv ) { - Gia_Man_t * pTemp = NULL; int c, fVerbose = 0; int nFrames = 5; int fSwitch = 0; int nWords = 1000; int nProcs = 2; -// extern Gia_Man_t * Gia_VtaTest( Gia_Man_t * p ); -// extern int Gia_ManSuppSizeTest( Gia_Man_t * p ); -// extern void Gia_VtaTest( Gia_Man_t * p, int nFramesStart, int nFramesMax, int nConfMax, int nTimeMax, int fVerbose ); -// extern void Gia_IsoTest( Gia_Man_t * p, int fVerbose ); -// extern void Ga2_ManComputeTest( Gia_Man_t * p ); -// extern void Bmc_CexTest( Gia_Man_t * p, Abc_Cex_t * pCex, int fVerbose ); -// extern void Gia_IsoTest( Gia_Man_t * p, Abc_Cex_t * pCex, int fVerbose ); -// extern void Unr_ManTest( Gia_Man_t * pGia, int nFrames ); -// extern int Gia_ManVerify( Gia_Man_t * pGia ); -// extern Gia_Man_t * Gia_ManOptimizeRing( Gia_Man_t * p ); -// extern void Gia_ManCollectSeqTest( Gia_Man_t * p ); -// extern Gia_Man_t * Gia_SweeperFraigTest( Gia_Man_t * p, int nWords, int nConfs, int fVerbose ); -// extern Gia_Man_t * Bmc_CexDepthTest( Gia_Man_t * p, Abc_Cex_t * pCex, int nFrames, int fVerbose ); -// extern Gia_Man_t * Bmc_CexTarget( Gia_Man_t * p, int nFrames ); -// extern void Gia_ManMuxProfiling( Gia_Man_t * p ); -// extern Gia_Man_t * Mig_ManTest( Gia_Man_t * pGia ); -// extern Gia_Man_t * Gia_ManInterTest( Gia_Man_t * p ); -// extern Gia_Man_t * Llb_ReachableStatesGia( Gia_Man_t * p ); -// extern Gia_Man_t * Unm_ManTest( Gia_Man_t * pGia ); -// extern void Agi_ManTest( Gia_Man_t * pGia ); -// extern void Gia_ManCheckFalseTest( Gia_Man_t * p, int nSlackMax ); -// extern void Gia_ParTest( Gia_Man_t * p, int nWords, int nProcs ); -// extern void Gia_ManTisTest( Gia_Man_t * pInit ); -// extern void Gia_StoComputeCuts( Gia_Man_t * p ); -// extern void Abc_BddGiaTest( Gia_Man_t * pGia, int fVerbose ); - extern Gia_Man_t * Dau_ConstructAigFromFile( char * pFileName ); - Extra_UtilGetoptReset(); while ( ( c = Extra_UtilGetopt( argc, argv, "WPFsvh" ) ) != EOF ) { @@ -47524,70 +47496,7 @@ int Abc_CommandAbc9Test( Abc_Frame_t * pAbc, int argc, char ** argv ) // Abc_Print( -1, "Abc_CommandAbc9Test(): There is no AIG.\n" ); // return 1; // } -/* - if ( pAbc->pCex == NULL ) - { - Abc_Print( -1, "Abc_CommandAbc9Test(): There is no CEX.\n" ); - return 1; - } -*/ -// Gia_ManFrontTest( pAbc->pGia ); -// Gia_ManReduceConst( pAbc->pGia, 1 ); -// Sat_ManTest( pAbc->pGia, Gia_ManCo(pAbc->pGia, 0), 0 ); -// Gia_ManTestDistance( pAbc->pGia ); -// Gia_SatSolveTest( pAbc->pGia ); -// For_ManExperiment( pAbc->pGia, 20, 1, 1 ); -// Gia_ManUnrollSpecial( pAbc->pGia, 5, 100, 1 ); -// pAbc->pGia = Gia_ManDupSelf( pTemp = pAbc->pGia ); -// pAbc->pGia = Gia_ManRemoveEnables( pTemp = pAbc->pGia ); -// Cbs_ManSolveTest( pAbc->pGia ); -// pAbc->pGia = Gia_VtaTest( pTemp = pAbc->pGia ); -// Gia_ManStopP( &pTemp ); -// Gia_ManSuppSizeTest( pAbc->pGia ); -// Gia_VtaTest( pAbc->pGia, 10, 100000, 0, 0, 1 ); -// Gia_IsoTest( pAbc->pGia, fVerbose ); -// Ga2_ManComputeTest( pAbc->pGia ); -// Bmc_CexTest( pAbc->pGia, pAbc->pCex, fVerbose ); -// Gia_IsoTest( pAbc->pGia, pAbc->pCex, 0 ); -// Unr_ManTest( pAbc->pGia, nFrames ); -// Gia_ManVerifyWithBoxes( pAbc->pGia ); -// Gia_ManCollectSeqTest( pAbc->pGia ); -// pTemp = Gia_ManOptimizeRing( pAbc->pGia ); -// pTemp = Gia_SweeperFraigTest( pAbc->pGia, 4, 1000, 0 ); -// Abc_FrameUpdateGia( pAbc, pTemp ); -// pTemp = Bmc_CexDepthTest( pAbc->pGia, pAbc->pCex, nFrames, fVerbose ); -// pTemp = Bmc_CexTarget( pAbc->pGia, nFrames ); -// Abc_FrameUpdateGia( pAbc, pTemp ); -// Gia_ManMuxProfiling( pAbc->pGia ); -// pTemp = Mig_ManTest( pAbc->pGia ); -// Abc_FrameUpdateGia( pAbc, pTemp ); -// pTemp = Gia_ManInterTest( pAbc->pGia ); -// Abc_FrameUpdateGia( pAbc, pTemp ); -// pTemp = Llb_ReachableStatesGia( pAbc->pGia ); -// Abc_FrameUpdateGia( pAbc, pTemp ); -// Unm_ManTest( pAbc->pGia ); -// Agi_ManTest( pAbc->pGia ); -// Gia_ManResubTest( pAbc->pGia ); -// Jf_ManTestCnf( pAbc->pGia ); -// Gia_ManCheckFalseTest( pAbc->pGia, nFrames ); -// Gia_ParTest( pAbc->pGia, nWords, nProcs ); -// Gia_StoComputeCuts( pAbc->pGia ); -// printf( "\nThis command is currently disabled.\n\n" ); -/* - { - char Buffer[10]; - extern void Gia_DumpLutSizeDistrib( Gia_Man_t * p, char * pFileName ); - sprintf( Buffer, "stats%d.txt", nFrames ); - if ( pAbc->pGia ) - Gia_DumpLutSizeDistrib( pAbc->pGia, Buffer ); - } -*/ -// pTemp = Slv_ManToAig( pAbc->pGia ); -// Abc_FrameUpdateGia( pAbc, pTemp ); -// Extra_TestGia2( pAbc->pGia ); - //pTemp = Dau_ConstructAigFromFile( "lib4var2.txt" ); - //Abc_FrameUpdateGia( pAbc, pTemp ); - //Gia_Sim5TestPolarities( pAbc->pGia ); +// Abc_FrameUpdateGia( pAbc, Abc_Procedure(pAbc->pGia) ); return 0; usage: Abc_Print( -2, "usage: &test [-FW num] [-svh]\n" ); |