From 771e70381c7ea41c81067f59ce653f8756830af0 Mon Sep 17 00:00:00 2001 From: Jonathan Greene Date: Fri, 20 Feb 2026 11:43:09 -0800 Subject: [PATCH] Fix two bugs causing problems with &trace and boxes. --- src/aig/gia/giaAiger.c | 15 +++++++++++++++ src/aig/gia/giaSpeedup.c | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/aig/gia/giaAiger.c b/src/aig/gia/giaAiger.c index e9e9e67ca..39fed2fd4 100644 --- a/src/aig/gia/giaAiger.c +++ b/src/aig/gia/giaAiger.c @@ -677,6 +677,14 @@ Gia_Man_t * Gia_AigerReadFromMemory( char * pContents, int nFileSize, int fGiaSi } pNew->vOutReqs = Vec_FltStart( nOutputs ); memcpy( Vec_FltArray(pNew->vOutReqs), pCur, (size_t)4*nOutputs ); pCur += 4*nOutputs; + // Convert -1.0 back to TIM_ETERNITY for internal use + { + float * pArr = Vec_FltArray(pNew->vOutReqs); + int i; + for ( i = 0; i < nOutputs; i++ ) + if ( pArr[i] < 0 ) + pArr[i] = TIM_ETERNITY; + } if ( fVerbose ) printf( "Finished reading extension \"o\".\n" ); } // read equivalence classes @@ -1562,6 +1570,13 @@ void Gia_AigerWriteS( Gia_Man_t * pInit, char * pFileName, int fWriteSymbols, in { int nPos = Tim_ManPoNum((Tim_Man_t *)p->pManTime); int nFlops = Gia_ManRegNum(p); + // Convert TIM_ETERNITY sentinel to -1.0 per XAIG spec + { + int i; + for ( i = 0; i < nPos + nFlops; i++ ) + if ( pTimes[i] >= TIM_ETERNITY ) + pTimes[i] = -1.0; + } fprintf( pFile, "o" ); Gia_FileWriteBufferSize( pFile, 4*(nPos + nFlops) ); fwrite( pTimes, 1, 4*(nPos + nFlops), pFile ); diff --git a/src/aig/gia/giaSpeedup.c b/src/aig/gia/giaSpeedup.c index 0786bd559..aa39c9bcd 100644 --- a/src/aig/gia/giaSpeedup.c +++ b/src/aig/gia/giaSpeedup.c @@ -350,7 +350,7 @@ float Gia_ManDelayTraceLut( Gia_Man_t * p ) int j, maxLevel = 0; for ( j = 0; j < nIns; j++ ) { - int coLevel = Gia_ObjLevel( p, Gia_ManCo(p, iCoFirst + j) ); + int coLevel = Gia_ObjLevel( p, Gia_ObjFanin0(Gia_ManCo(p, iCoFirst + j)) ); if ( coLevel > maxLevel ) maxLevel = coLevel; }