diff --git a/src/aig/gia/giaAiger.c b/src/aig/gia/giaAiger.c index 0b5e5a110..3c44a566d 100644 --- a/src/aig/gia/giaAiger.c +++ b/src/aig/gia/giaAiger.c @@ -652,6 +652,9 @@ Gia_Man_t * Gia_AigerReadFromMemory( char * pContents, int nFileSize, int fGiaSi pNew->vInArrs = Vec_FltStart( nInputs ); memcpy( Vec_FltArray(pNew->vInArrs), pCur, (size_t)4*nInputs ); pCur += 4*nInputs; if ( fVerbose ) printf( "Finished reading extension \"i\".\n" ); + if ( Vec_FltSize(pNew->vInArrs) == Gia_ManPiNum(pNew) ) + Vec_FltFillExtra(pNew->vInArrs, Gia_ManCiNum(pNew), 0); + assert( Vec_FltSize(pNew->vInArrs) == Gia_ManCiNum(pNew) ); } else if ( *pCur == 'o' ) { @@ -660,6 +663,9 @@ 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; if ( fVerbose ) printf( "Finished reading extension \"o\".\n" ); + if ( Vec_FltSize(pNew->vOutReqs) == Gia_ManPoNum(pNew) ) + Vec_FltFillExtra(pNew->vOutReqs, Gia_ManCoNum(pNew), 0); + assert( Vec_FltSize(pNew->vOutReqs) == Gia_ManCoNum(pNew) ); } // read equivalence classes else if ( *pCur == 'e' ) diff --git a/src/misc/tim/timMan.c b/src/misc/tim/timMan.c index 7e112669e..9bcdaaae6 100644 --- a/src/misc/tim/timMan.c +++ b/src/misc/tim/timMan.c @@ -451,19 +451,31 @@ void Tim_ManCreate( Tim_Man_t * p, void * pLib, Vec_Flt_t * vInArrs, Vec_Flt_t * // create arrival times if ( vInArrs ) { - assert( Vec_FltSize(vInArrs) == Tim_ManPiNum(p) ); - Tim_ManForEachPi( p, pObj, i ) - pObj->timeArr = Vec_FltEntry(vInArrs, i); - + if ( Vec_FltSize(vInArrs) == Tim_ManPiNum(p) ) { + Tim_ManForEachPi( p, pObj, i ) + pObj->timeArr = Vec_FltEntry(vInArrs, i); + } + else if ( Vec_FltSize(vInArrs) == Tim_ManCiNum(p) ) { + Tim_ManForEachCi( p, pObj, i ) + pObj->timeArr = Vec_FltEntry(vInArrs, i); + } + else assert( 0 ); } // create required times if ( vOutReqs ) { k = 0; - assert( Vec_FltSize(vOutReqs) == Tim_ManPoNum(p) ); - Tim_ManForEachPo( p, pObj, i ) - pObj->timeReq = Vec_FltEntry(vOutReqs, k++); - assert( k == Tim_ManPoNum(p) ); + if ( Vec_FltSize(vOutReqs) == Tim_ManPoNum(p) ) { + Tim_ManForEachPo( p, pObj, i ) + pObj->timeReq = Vec_FltEntry(vOutReqs, k++); + assert( k == Tim_ManPoNum(p) ); + } + else if ( Vec_FltSize(vOutReqs) == Tim_ManCoNum(p) ) { + Tim_ManForEachCo( p, pObj, i ) + pObj->timeReq = Vec_FltEntry(vOutReqs, k++); + assert( k == Tim_ManCoNum(p) ); + } + else assert( 0 ); } }