diff options
author | Niklas Een <niklas@een.se> | 2012-03-03 08:58:25 -0800 |
---|---|---|
committer | Niklas Een <niklas@een.se> | 2012-03-03 08:58:25 -0800 |
commit | 929e5e16e64adc0169ec8c412a97ea9b0f5e6547 (patch) | |
tree | 538caed8a3f9be38addf95e5f4eadf2a75b6bd80 | |
parent | 1e40c5b79fdbf5ade1deaf691a08a77ef9295b29 (diff) | |
download | abc-929e5e16e64adc0169ec8c412a97ea9b0f5e6547.tar.gz abc-929e5e16e64adc0169ec8c412a97ea9b0f5e6547.tar.bz2 abc-929e5e16e64adc0169ec8c412a97ea9b0f5e6547.zip |
Some fixes to the Bridge code. More to do.
-rw-r--r-- | src/misc/util/utilBridge.c | 29 |
1 files changed, 21 insertions, 8 deletions
diff --git a/src/misc/util/utilBridge.c b/src/misc/util/utilBridge.c index 9de38a63..3fd24936 100644 --- a/src/misc/util/utilBridge.c +++ b/src/misc/util/utilBridge.c @@ -177,16 +177,28 @@ int Gia_ManToBridgeBadAbs( FILE * pFile ) ***********************************************************************/ void Gia_ManFromBridgeHolds( FILE * pFile ) { + fprintf( pFile, "%.6d", 101 /*message type = Result*/); + fprintf( pFile, " " ); + fprintf( pFile, "%.16d", 4 /*size in bytes*/); + fprintf( pFile, " " ); + fputc( (char)BRIDGE_VALUE_1, pFile ); // true fputc( (char)1, pFile ); // size of vector (Armin's encoding) fputc( (char)0, pFile ); // number of the property (Armin's encoding) fputc( (char)0, pFile ); // no invariant + fflush(pFile); } void Gia_ManFromBridgeUnknown( FILE * pFile ) { + fprintf( pFile, "%.6d", 101 /*message type = Result*/); + fprintf( pFile, " " ); + fprintf( pFile, "%.16d", 3 /*size in bytes*/); + fprintf( pFile, " " ); + fputc( (char)BRIDGE_VALUE_X, pFile ); // undef fputc( (char)1, pFile ); // size of vector (Armin's encoding) fputc( (char)0, pFile ); // number of the property (Armin's encoding) + fflush(pFile); } void Gia_ManFromBridgeCex( FILE * pFile, Abc_Cex_t * pCex ) { @@ -210,9 +222,11 @@ void Gia_ManFromBridgeCex( FILE * pFile, Abc_Cex_t * pCex ) Vec_StrPush( vStr, (char)1 ); // the number of frames (for a concrete counter-example) for ( i = 0; i < pCex->nRegs; i++ ) Vec_StrPush( vStr, (char)BRIDGE_VALUE_0 ); // always zero!!! - RetValue = fwrite( Vec_StrArray(vStr), Vec_StrSize(vStr), 1, pFile ); - assert( RetValue == 1 ); +// RetValue = fwrite( Vec_StrArray(vStr), Vec_StrSize(vStr), 1, pFile ); + Gia_CreateHeader(pFile, 101/*type=Result*/, Vec_StrSize(vStr), (unsigned char*)Vec_StrArray(vStr)); + Vec_StrFree( vStr ); + fflush(pFile); } int Gia_ManToBridgeResult( FILE * pFile, int Result, Abc_Cex_t * pCex ) { @@ -280,7 +294,7 @@ Gia_Man_t * Gia_ManFromBridgeReadBody( int Size, unsigned char * pBuffer, Vec_I iFan1 = Abc_LitNotCond( Vec_IntEntry(vLits, iFan1 >> 1), iFan1 & 1 ); if ( fHash ) Vec_IntPush( vLits, Gia_ManHashAnd(p, iFan0, iFan1) ); - else + else Vec_IntPush( vLits, Gia_ManAppendAnd(p, iFan0, iFan1) ); } @@ -299,7 +313,7 @@ Gia_Man_t * Gia_ManFromBridgeReadBody( int Size, unsigned char * pBuffer, Vec_I for ( i = 0; i < nProps; i++ ) { iFan0 = Gia_ReadAigerDecode( &pBuffer ); - iFan0 = Abc_LitNotCond( Vec_IntEntry(vLits, iFan0 >> 1), iFan0 & 1 ); + iFan0 = Abc_LitNotCond( Vec_IntEntry(vLits, iFan0 >> 1), iFan0 & 1 ); // complement property output!!! Gia_ManAppendCo( p, Abc_LitNot(iFan0) ); } @@ -396,13 +410,13 @@ Gia_Man_t * Gia_ManFromBridge( FILE * pFile, Vec_Int_t ** pvInit ) RetValue = Gia_ManFromBridgeReadPackage( pFile, &Type, &Size, &pBuffer ); ABC_FREE( pBuffer ); if ( !RetValue ) - return NULL; + return NULL; RetValue = Gia_ManFromBridgeReadPackage( pFile, &Type, &Size, &pBuffer ); if ( !RetValue ) return NULL; - p = Gia_ManFromBridgeReadBody( Size, pBuffer, pvInit ); + p = Gia_ManFromBridgeReadBody( Size, pBuffer, pvInit ); ABC_FREE( pBuffer ); if ( p == NULL ) return NULL; @@ -471,7 +485,7 @@ void Gia_ManFromBridgeTest( char * pFileName ) Gia_ManPrintStats( p, 0, 0 ); Gia_WriteAiger( p, "temp.aig", 0, 0 ); - + Gia_ManToBridgeAbsNetlistTest( "par_.dump", p ); Gia_ManStop( p ); } @@ -484,4 +498,3 @@ void Gia_ManFromBridgeTest( char * pFileName ) ABC_NAMESPACE_IMPL_END - |