28#if defined(LIN) || defined(LIN64)
40#define BRIDGE_TEXT_MESSAGE 999996
43#define BRIDGE_PROGRESS 3
44#define BRIDGE_RESULTS 101
45#define BRIDGE_BAD_ABS 105
49#define BRIDGE_VALUE_X 0
50#define BRIDGE_VALUE_0 2
51#define BRIDGE_VALUE_1 3
73 int i, uLit0, uLit1, nNodes;
79 Gia_ManConst0(
p)->Value = Abc_Var2Lit( nNodes++, 1 );
81 pObj->
Value = Abc_Var2Lit( nNodes++, 0 );
83 pObj->
Value = Abc_Var2Lit( nNodes++, 0 );
86 vStr = Vec_StrAlloc( 1000 );
87 Gia_AigerWriteUnsigned( vStr, Gia_ManPiNum(
p) );
88 Gia_AigerWriteUnsigned( vStr, Gia_ManRegNum(
p) );
89 Gia_AigerWriteUnsigned( vStr, Gia_ManAndNum(
p) );
94 uLit0 = Gia_ObjFanin0Copy( pObj );
95 uLit1 = Gia_ObjFanin1Copy( pObj );
97 Gia_AigerWriteUnsigned( vStr, uLit0 << 1 );
98 Gia_AigerWriteUnsigned( vStr, uLit1 );
104 uLit0 = Gia_ObjFanin0Copy( pObj );
109 Gia_AigerWriteUnsigned( vStr, Gia_ManPoNum(
p) );
112 uLit0 = Gia_ObjFanin0Copy( pObj );
114 Gia_AigerWriteUnsigned( vStr, Abc_LitNot(uLit0) );
132 fprintf( pFile,
"%.6d", Type );
133 fprintf( pFile,
" " );
134 fprintf( pFile,
"%.16d", Size );
135 fprintf( pFile,
" " );
136#if !defined(LIN) && !defined(LIN64)
139 RetValue = fwrite( pBuffer, Size, 1, pFile );
140 assert( RetValue == 1 || Size == 0);
145 int fd = fileno(pFile);
147 ssize_t bytes_written = 0;
148 while (bytes_written < Size){
149 ssize_t n = write(fd, &pBuffer[bytes_written], Size - bytes_written);
151 fprintf(stderr,
"BridgeMode: failed to send package; aborting\n"); fflush(stderr);
196 Gia_CreateHeader( pFile, pkg_type, Vec_StrSize(vBuffer), (
unsigned char *)Vec_StrArray(vBuffer) );
197 Vec_StrFree( vBuffer );
209static int aigerNumSize(
unsigned x )
234 fprintf( pFile,
"%.6d", 101 );
235 fprintf( pFile,
" " );
236 fprintf( pFile,
"%.16d", 3 + aigerNumSize(iPoProved) );
237 fprintf( pFile,
" " );
240 fputc( (
char)1, pFile );
241 Gia_AigerWriteUnsignedFile( pFile, iPoProved );
242 fputc( (
char)0, pFile );
247 fprintf( pFile,
"%.6d", 101 );
248 fprintf( pFile,
" " );
249 fprintf( pFile,
"%.16d", 2 + aigerNumSize(iPoUnknown) );
250 fprintf( pFile,
" " );
253 fputc( (
char)1, pFile );
254 Gia_AigerWriteUnsignedFile( pFile, iPoUnknown );
262 Vec_StrPush( vStr, (
char)1 );
263 Gia_AigerWriteUnsigned( vStr, pCex->iPo );
264 Vec_StrPush( vStr, (
char)1 );
265 Gia_AigerWriteUnsigned( vStr, pCex->iFrame );
267 Gia_AigerWriteUnsigned( vStr, 1 );
268 Gia_AigerWriteUnsigned( vStr, pCex->iFrame + 1 );
270 for ( f = 0; f <= pCex->iFrame; f++ )
272 Gia_AigerWriteUnsigned( vStr, pCex->nPis );
273 for ( i = 0; i < pCex->nPis; i++, iBit++ )
276 assert( iBit == pCex->nBits );
277 Vec_StrPush( vStr, (
char)1 );
278 Gia_AigerWriteUnsigned( vStr, pCex->nRegs );
279 for ( i = 0; i < pCex->nRegs; i++ )
282 Gia_CreateHeader(pFile, 101, Vec_StrSize(vStr), (
unsigned char*)Vec_StrArray(vStr));
291 else if ( Result == 1 )
293 else if ( Result == -1 )
316 unsigned char * pBufferPivot, * pBufferEnd = pBuffer + Size;
317 int i, nInputs, nFlops, nGates, nProps;
318 int verFairness, nFairness, nConstraints;
319 unsigned iFan0, iFan1;
321 nInputs = Gia_AigerReadUnsigned( &pBuffer );
322 nFlops = Gia_AigerReadUnsigned( &pBuffer );
323 nGates = Gia_AigerReadUnsigned( &pBuffer );
325 vLits = Vec_IntAlloc( 1000 );
326 Vec_IntPush( vLits, -999 );
327 Vec_IntPush( vLits, 1 );
331 p->pName = Abc_UtilStrsav(
"temp" );
334 for ( i = 0; i < nInputs; i++ )
335 Vec_IntPush( vLits, Gia_ManAppendCi(
p ) );
338 for ( i = 0; i < nFlops; i++ )
339 Vec_IntPush( vLits, Gia_ManAppendCi(
p ) );
344 for ( i = 0; i < nGates; i++ )
346 iFan0 = Gia_AigerReadUnsigned( &pBuffer );
347 iFan1 = Gia_AigerReadUnsigned( &pBuffer );
350 iFan0 = Abc_LitNotCond( Vec_IntEntry(vLits, iFan0 >> 1), iFan0 & 1 );
351 iFan1 = Abc_LitNotCond( Vec_IntEntry(vLits, iFan1 >> 1), iFan1 & 1 );
355 Vec_IntPush( vLits, Gia_ManAppendAnd(
p, iFan0, iFan1) );
362 pBufferPivot = pBuffer;
364 for ( i = 0; i < nFlops; i++ )
365 Gia_AigerReadUnsigned( &pBuffer );
368 nProps = Gia_AigerReadUnsigned( &pBuffer );
370 for ( i = 0; i < nProps; i++ )
372 iFan0 = Gia_AigerReadUnsigned( &pBuffer );
373 iFan0 = Abc_LitNotCond( Vec_IntEntry(vLits, iFan0 >> 1), iFan0 & 1 );
375 Gia_ManAppendCo(
p, Abc_LitNot(iFan0) );
378 verFairness = Gia_AigerReadUnsigned( &pBuffer );
379 assert( verFairness == 1 );
381 nFairness = Gia_AigerReadUnsigned( &pBuffer );
384 nConstraints = Gia_AigerReadUnsigned( &pBuffer );
385 assert( nConstraints == 0);
388 assert( pBufferEnd == pBuffer );
391 pBuffer = pBufferPivot;
392 vInits = Vec_IntAlloc( nFlops );
393 for ( i = 0; i < nFlops; i++ )
395 iFan0 = Gia_AigerReadUnsigned( &pBuffer );
397 Vec_IntPush( vInits, iFan0 & 3 );
399 iFan0 = Abc_LitNotCond( Vec_IntEntry(vLits, iFan0 >> 1), iFan0 & 1 );
400 Gia_ManAppendCo(
p, iFan0 );
403 Vec_IntFree( vLits );
417 Vec_IntFree( vInits );
437 RetValue = fread( Temp, 24, 1, pFile );
440 printf(
"Gia_ManFromBridgeReadPackage(); Error 1: Something is wrong!\n" );
446 *pType = atoi( Temp );
447 *pSize = atoi( Temp + 7 );
449 *ppBuffer =
ABC_ALLOC(
unsigned char, *pSize );
450 RetValue = fread( *ppBuffer, *pSize, 1, pFile );
451 if ( RetValue != 1 && *pSize != 0 )
454 printf(
"Gia_ManFromBridgeReadPackage(); Error 2: Something is wrong!\n" );
473 unsigned char * pBuffer;
474 int Type, Size, RetValue;
519 FILE * pFile = fopen( pFileName,
"wb" );
522 printf(
"Cannot open output file \"%s\".\n", pFileName );
543 FILE * pFile = fopen( pFileName,
"rb" );
546 printf(
"Cannot open input file \"%s\".\n", pFileName );
#define ABC_ALLOC(type, num)
#define BRIDGE_ABS_NETLIST
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
struct Vec_Str_t_ Vec_Str_t
void Gia_ManStop(Gia_Man_t *p)
#define Gia_ManForEachPo(p, pObj, i)
#define Gia_ManForEachAnd(p, pObj, i)
void Gia_ManSetRegNum(Gia_Man_t *p, int nRegs)
void Gia_ManHashAlloc(Gia_Man_t *p)
Gia_Man_t * Gia_ManStart(int nObjsMax)
FUNCTION DEFINITIONS ///.
struct Gia_Obj_t_ Gia_Obj_t
struct Gia_Man_t_ Gia_Man_t
Gia_Man_t * Gia_ManCleanup(Gia_Man_t *p)
int Gia_ManHashAnd(Gia_Man_t *p, int iLit0, int iLit1)
#define Gia_ManForEachCi(p, pObj, i)
void Gia_ManHashStop(Gia_Man_t *p)
void Gia_ManPrintStats(Gia_Man_t *p, Gps_Par_t *pPars)
#define Gia_ManForEachRi(p, pObj, i)
void Gia_AigerWrite(Gia_Man_t *p, char *pFileName, int fWriteSymbols, int fCompact, int fWriteNewLine)
int Gia_ManFromBridgeReadPackage(FILE *pFile, int *pType, int *pSize, unsigned char **ppBuffer)
void Gia_ManFromBridgeUnknown(FILE *pFile, int iPoUnknown)
#define BRIDGE_TEXT_MESSAGE
DECLARATIONS ///.
void Gia_ManFromBridgeCex(FILE *pFile, Abc_Cex_t *pCex)
int Gia_ManToBridgeResult(FILE *pFile, int Result, Abc_Cex_t *pCex, int iPoProved)
DECLARATIONS ///.
int Gia_ManToBridgeProgress(FILE *pFile, int Size, unsigned char *pBuffer)
void Gia_ManFromBridgeTest(char *pFileName)
int Gia_ManToBridgeAbsNetlist(FILE *pFile, void *p, int pkg_type)
void Gia_CreateHeader(FILE *pFile, int Type, int Size, unsigned char *pBuffer)
int Gia_ManToBridgeAbort(FILE *pFile, int Size, unsigned char *pBuffer)
int Gia_ManToBridgeText(FILE *pFile, int Size, unsigned char *pBuffer)
void Gia_ManToBridgeAbsNetlistTest(char *pFileName, Gia_Man_t *p, int msg_type)
int Gia_ManToBridgeBadAbs(FILE *pFile)
Vec_Str_t * Gia_ManToBridgeVec(Gia_Man_t *p)
FUNCTION DEFINITIONS ///.
Gia_Man_t * Gia_ManFromBridge(FILE *pFile, Vec_Int_t **pvInit)
void Gia_ManFromBridgeHolds(FILE *pFile, int iPoProved)
Gia_Man_t * Gia_ManFromBridgeReadBody(int Size, unsigned char *pBuffer, Vec_Int_t **pvInits)
typedefABC_NAMESPACE_HEADER_START struct Abc_Cex_t_ Abc_Cex_t
INCLUDES ///.